MCPcopy
hub / github.com/AlistGo/alist / Put

Method Put

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

Source from the content-addressed store, hash-verified

365}
366
367func (d *Crypt) Put(ctx context.Context, dstDir model.Obj, streamer model.FileStreamer, up driver.UpdateProgress) error {
368 dstDirActualPath, err := d.getActualPathForRemote(dstDir.GetPath(), true)
369 if err != nil {
370 return fmt.Errorf("failed to convert path to remote path: %w", err)
371 }
372
373 // Encrypt the data into wrappedIn
374 wrappedIn, err := d.cipher.EncryptData(streamer)
375 if err != nil {
376 return fmt.Errorf("failed to EncryptData: %w", err)
377 }
378
379 // doesn't support seekableStream, since rapid-upload is not working for encrypted data
380 streamOut := &stream.FileStream{
381 Obj: &model.Object{
382 ID: streamer.GetID(),
383 Path: streamer.GetPath(),
384 Name: d.cipher.EncryptFileName(streamer.GetName()),
385 Size: d.cipher.EncryptedSize(streamer.GetSize()),
386 Modified: streamer.ModTime(),
387 IsFolder: streamer.IsDir(),
388 },
389 Reader: wrappedIn,
390 Mimetype: "application/octet-stream",
391 WebPutAsTask: streamer.NeedStore(),
392 ForceStreamUpload: true,
393 Exist: streamer.GetExist(),
394 }
395 err = op.Put(ctx, d.remoteStorage, dstDirActualPath, streamOut, up, false)
396 if err != nil {
397 return err
398 }
399 return nil
400}
401
402//func (d *Safe) Other(ctx context.Context, args model.OtherArgs) (interface{}, error) {
403// return nil, errs.NotSupport

Callers

nothing calls this directly

Calls 10

PutFunction · 0.92
GetPathMethod · 0.65
GetIDMethod · 0.65
GetNameMethod · 0.65
GetSizeMethod · 0.65
ModTimeMethod · 0.65
IsDirMethod · 0.65
NeedStoreMethod · 0.65
GetExistMethod · 0.65

Tested by

no test coverage detected