MCPcopy Create free account
hub / github.com/pydio/cells / GetObject

Method GetObject

common/nodes/core/handler-exec.go:150–193  ·  view source on GitHub ↗
(ctx context.Context, node *tree.Node, requestData *models.GetRequestData)

Source from the content-addressed store, hash-verified

148}
149
150func (e *Executor) GetObject(ctx context.Context, node *tree.Node, requestData *models.GetRequestData) (io.ReadCloser, error) {
151 // Init logger now
152 logger := log.Logger(ctx)
153 info, er := nodes.GetBranchInfo(ctx, "in")
154 if er != nil {
155 return nil, er
156 }
157 writer := info.Client
158
159 var reader io.ReadCloser
160 var err error
161
162 s3Path := e.buildS3Path(info, node)
163 headers := make(models.ReadMeta)
164 //validHeaders := !nodes.IsMinioServer(ctx, "in")
165
166 // Make sure the object exists
167 //var opts = minio.StatObjectOptions{}
168 newCtx := ctx
169 if meta, ok := propagator.MinioMetaFromContext(ctx, common.PydioContextUserKey); ok {
170 newCtx = propagator.NewContext(ctx, meta)
171 }
172 sObject, sErr := writer.StatObject(ctx, info.ObjectsBucket, s3Path, nil)
173 if sErr != nil {
174 return nil, sErr
175 }
176
177 if requestData.StartOffset == 0 && requestData.Length == -1 {
178 logger.Debug("[Handler exec] Target Object Size is", zap.Any("object", sObject))
179 // requestData.Length = sObject.Size
180 }
181 if requestData.StartOffset >= 0 && requestData.Length >= 0 {
182 if err := headers.SetRange(requestData.StartOffset, requestData.StartOffset+requestData.Length-1); err != nil {
183 return nil, err
184 }
185 }
186 reader, _, err = writer.GetObject(newCtx, info.ObjectsBucket, s3Path, headers)
187 logger.Debug("[handler exec] Get Object", zap.String("bucket", info.ObjectsBucket), zap.String("s3path", s3Path), zap.Any("request", requestData), zap.Any("resultObject", reader))
188 if err != nil {
189 logger.Error("Get Object", zap.Error(err))
190 }
191
192 return reader, err
193}
194
195func (e *Executor) PutObject(ctx context.Context, node *tree.Node, reader io.Reader, requestData *models.PutRequestData) (models.ObjectInfo, error) {
196 info, er := nodes.GetBranchInfo(ctx, "in")

Callers

nothing calls this directly

Calls 12

buildS3PathMethod · 0.95
LoggerFunction · 0.92
GetBranchInfoFunction · 0.92
MinioMetaFromContextFunction · 0.92
NewContextFunction · 0.92
makeFunction · 0.85
SetRangeMethod · 0.80
StatObjectMethod · 0.65
DebugMethod · 0.65
GetObjectMethod · 0.65
StringMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected