github.com/divyam234/rclone@v1.64.1/fs/override.go (about) 1 package fs 2 3 import "context" 4 5 // OverrideRemote is a wrapper to override the Remote for an 6 // ObjectInfo 7 type OverrideRemote struct { 8 ObjectInfo 9 remote string 10 } 11 12 // NewOverrideRemote returns an OverrideRemoteObject which will 13 // return the remote specified 14 func NewOverrideRemote(oi ObjectInfo, remote string) *OverrideRemote { 15 // re-wrap an OverrideRemote 16 if or, ok := oi.(*OverrideRemote); ok { 17 return &OverrideRemote{ 18 ObjectInfo: or.ObjectInfo, 19 remote: remote, 20 } 21 } 22 return &OverrideRemote{ 23 ObjectInfo: oi, 24 remote: remote, 25 } 26 } 27 28 // Remote returns the overridden remote name 29 func (o *OverrideRemote) Remote() string { 30 return o.remote 31 } 32 33 // String returns the overridden remote name 34 func (o *OverrideRemote) String() string { 35 return o.remote 36 } 37 38 // MimeType returns the mime type of the underlying object or "" if it 39 // can't be worked out 40 func (o *OverrideRemote) MimeType(ctx context.Context) string { 41 if do, ok := o.ObjectInfo.(MimeTyper); ok { 42 return do.MimeType(ctx) 43 } 44 return "" 45 } 46 47 // ID returns the ID of the Object if known, or "" if not 48 func (o *OverrideRemote) ID() string { 49 if do, ok := o.ObjectInfo.(IDer); ok { 50 return do.ID() 51 } 52 return "" 53 } 54 55 // UnWrap returns the Object that this Object is wrapping or nil if it 56 // isn't wrapping anything 57 func (o *OverrideRemote) UnWrap() Object { 58 if o, ok := o.ObjectInfo.(Object); ok { 59 return o 60 } 61 return nil 62 } 63 64 // GetTier returns storage tier or class of the Object 65 func (o *OverrideRemote) GetTier() string { 66 if do, ok := o.ObjectInfo.(GetTierer); ok { 67 return do.GetTier() 68 } 69 return "" 70 } 71 72 // Metadata returns metadata for an object 73 // 74 // It should return nil if there is no Metadata 75 func (o *OverrideRemote) Metadata(ctx context.Context) (Metadata, error) { 76 if do, ok := o.ObjectInfo.(Metadataer); ok { 77 return do.Metadata(ctx) 78 } 79 return nil, nil 80 }