(ctx context.Context, node *tree.Node, requestData *models.GetRequestData)
| 148 | } |
| 149 | |
| 150 | func (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 | |
| 195 | func (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") |
nothing calls this directly
no test coverage detected