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

Method Get

drivers/crypt/driver.go:187–242  ·  view source on GitHub ↗
(ctx context.Context, path string)

Source from the content-addressed store, hash-verified

185}
186
187func (d *Crypt) Get(ctx context.Context, path string) (model.Obj, error) {
188 if utils.PathEqual(path, "/") {
189 return &model.Object{
190 Name: "Root",
191 IsFolder: true,
192 Path: "/",
193 }, nil
194 }
195 remoteFullPath := ""
196 var remoteObj model.Obj
197 var err, err2 error
198 firstTryIsFolder, secondTry := guessPath(path)
199 remoteFullPath = d.getPathForRemote(path, firstTryIsFolder)
200 remoteObj, err = fs.Get(ctx, remoteFullPath, &fs.GetArgs{NoLog: true})
201 if err != nil {
202 if errs.IsObjectNotFound(err) && secondTry {
203 //try the opposite
204 remoteFullPath = d.getPathForRemote(path, !firstTryIsFolder)
205 remoteObj, err2 = fs.Get(ctx, remoteFullPath, &fs.GetArgs{NoLog: true})
206 if err2 != nil {
207 return nil, err2
208 }
209 } else {
210 return nil, err
211 }
212 }
213 var size int64 = 0
214 name := ""
215 if !remoteObj.IsDir() {
216 size, err = d.cipher.DecryptedSize(remoteObj.GetSize())
217 if err != nil {
218 log.Warnf("DecryptedSize failed for %s ,will use original size, err:%s", path, err)
219 size = remoteObj.GetSize()
220 }
221 name, err = d.cipher.DecryptFileName(remoteObj.GetName())
222 if err != nil {
223 log.Warnf("DecryptFileName failed for %s ,will use original name, err:%s", path, err)
224 name = remoteObj.GetName()
225 }
226 } else {
227 name, err = d.cipher.DecryptDirName(remoteObj.GetName())
228 if err != nil {
229 log.Warnf("DecryptDirName failed for %s ,will use original name, err:%s", path, err)
230 name = remoteObj.GetName()
231 }
232 }
233 obj := &model.Object{
234 Path: path,
235 Name: name,
236 Size: size,
237 Modified: remoteObj.ModTime(),
238 IsFolder: remoteObj.IsDir(),
239 }
240 return obj, nil
241 //return nil, errs.ObjectNotFound
242}
243
244func (d *Crypt) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error) {

Callers

nothing calls this directly

Calls 9

getPathForRemoteMethod · 0.95
IsDirMethod · 0.95
GetSizeMethod · 0.95
GetNameMethod · 0.95
ModTimeMethod · 0.95
PathEqualFunction · 0.92
GetFunction · 0.92
IsObjectNotFoundFunction · 0.92
guessPathFunction · 0.85

Tested by

no test coverage detected