MCPcopy
hub / github.com/OpenListTeam/OpenList / put

Method put

drivers/halalcloud/driver.go:363–400  ·  view source on GitHub ↗
(ctx context.Context, dstDir model.Obj, fileStream model.FileStreamer, up driver.UpdateProgress)

Source from the content-addressed store, hash-verified

361}
362
363func (d *HalalCloud) put(ctx context.Context, dstDir model.Obj, fileStream model.FileStreamer, up driver.UpdateProgress) (model.Obj, error) {
364
365 newDir := path.Join(dstDir.GetPath(), fileStream.GetName())
366
367 result, err := pubUserFile.NewPubUserFileClient(d.HalalCommon.serv.GetGrpcConnection()).CreateUploadToken(ctx, &pubUserFile.File{
368 Path: newDir,
369 })
370 if err != nil {
371 return nil, err
372 }
373 u, _ := url.Parse(result.Endpoint)
374 u.Host = "s3." + u.Host
375 result.Endpoint = u.String()
376 s, err := session.NewSession(&aws.Config{
377 HTTPClient: base.HttpClient,
378 Credentials: credentials.NewStaticCredentials(result.AccessKey, result.SecretKey, result.Token),
379 Region: aws.String(result.Region),
380 Endpoint: aws.String(result.Endpoint),
381 S3ForcePathStyle: aws.Bool(true),
382 })
383 if err != nil {
384 return nil, err
385 }
386 uploader := s3manager.NewUploader(s, func(u *s3manager.Uploader) {
387 u.Concurrency = d.uploadThread
388 })
389 if fileStream.GetSize() > s3manager.MaxUploadParts*s3manager.DefaultUploadPartSize {
390 uploader.PartSize = fileStream.GetSize() / (s3manager.MaxUploadParts - 1)
391 }
392 reader := driver.NewLimitedUploadStream(ctx, fileStream)
393 _, err = uploader.UploadWithContext(ctx, &s3manager.UploadInput{
394 Bucket: aws.String(result.Bucket),
395 Key: aws.String(result.Key),
396 Body: io.TeeReader(reader, driver.NewProgress(fileStream.GetSize(), up)),
397 })
398 return nil, err
399
400}
401
402var _ driver.Driver = (*HalalCloud)(nil)

Callers 1

PutMethod · 0.95

Calls 7

NewLimitedUploadStreamFunction · 0.92
NewProgressFunction · 0.92
GetGrpcConnectionMethod · 0.80
GetPathMethod · 0.65
GetNameMethod · 0.65
GetSizeMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected