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  }