github.com/Files-com/files-sdk-go/v2@v2.1.2/folder.go (about)

     1  package files_sdk
     2  
     3  import (
     4  	"encoding/json"
     5  	"time"
     6  
     7  	lib "github.com/Files-com/files-sdk-go/v2/lib"
     8  )
     9  
    10  type Folder struct {
    11  	Path             string     `json:"path,omitempty" path:"path,omitempty" url:"path,omitempty"`
    12  	DisplayName      string     `json:"display_name,omitempty" path:"display_name,omitempty" url:"display_name,omitempty"`
    13  	Type             string     `json:"type,omitempty" path:"type,omitempty" url:"type,omitempty"`
    14  	Size             int64      `json:"size,omitempty" path:"size,omitempty" url:"size,omitempty"`
    15  	CreatedAt        *time.Time `json:"created_at,omitempty" path:"created_at,omitempty" url:"created_at,omitempty"`
    16  	Mtime            *time.Time `json:"mtime,omitempty" path:"mtime,omitempty" url:"mtime,omitempty"`
    17  	ProvidedMtime    *time.Time `json:"provided_mtime,omitempty" path:"provided_mtime,omitempty" url:"provided_mtime,omitempty"`
    18  	Crc32            string     `json:"crc32,omitempty" path:"crc32,omitempty" url:"crc32,omitempty"`
    19  	Md5              string     `json:"md5,omitempty" path:"md5,omitempty" url:"md5,omitempty"`
    20  	MimeType         string     `json:"mime_type,omitempty" path:"mime_type,omitempty" url:"mime_type,omitempty"`
    21  	Region           string     `json:"region,omitempty" path:"region,omitempty" url:"region,omitempty"`
    22  	Permissions      string     `json:"permissions,omitempty" path:"permissions,omitempty" url:"permissions,omitempty"`
    23  	SubfoldersLocked *bool      `json:"subfolders_locked?,omitempty" path:"subfolders_locked?,omitempty" url:"subfolders_locked?,omitempty"`
    24  	IsLocked         *bool      `json:"is_locked,omitempty" path:"is_locked,omitempty" url:"is_locked,omitempty"`
    25  	DownloadUri      string     `json:"download_uri,omitempty" path:"download_uri,omitempty" url:"download_uri,omitempty"`
    26  	PriorityColor    string     `json:"priority_color,omitempty" path:"priority_color,omitempty" url:"priority_color,omitempty"`
    27  	PreviewId        int64      `json:"preview_id,omitempty" path:"preview_id,omitempty" url:"preview_id,omitempty"`
    28  	Preview          Preview    `json:"preview,omitempty" path:"preview,omitempty" url:"preview,omitempty"`
    29  	MkdirParents     *bool      `json:"mkdir_parents,omitempty" path:"mkdir_parents,omitempty" url:"mkdir_parents,omitempty"`
    30  }
    31  
    32  func (f Folder) Identifier() interface{} {
    33  	return f.Path
    34  }
    35  
    36  type FolderCollection []Folder
    37  
    38  type FolderListForParams struct {
    39  	Path               string                              `url:"-,omitempty" required:"false" json:"-,omitempty" path:"path"`
    40  	Filter             string                              `url:"filter,omitempty" required:"false" json:"filter,omitempty" path:"filter"`
    41  	PreviewSize        string                              `url:"preview_size,omitempty" required:"false" json:"preview_size,omitempty" path:"preview_size"`
    42  	SortBy             map[string]interface{}              `url:"sort_by,omitempty" required:"false" json:"sort_by,omitempty" path:"sort_by"`
    43  	Search             string                              `url:"search,omitempty" required:"false" json:"search,omitempty" path:"search"`
    44  	SearchAll          *bool                               `url:"search_all,omitempty" required:"false" json:"search_all,omitempty" path:"search_all"`
    45  	WithPreviews       *bool                               `url:"with_previews,omitempty" required:"false" json:"with_previews,omitempty" path:"with_previews"`
    46  	WithPriorityColor  *bool                               `url:"with_priority_color,omitempty" required:"false" json:"with_priority_color,omitempty" path:"with_priority_color"`
    47  	ConcurrencyManager lib.ConcurrencyManagerWithSubWorker `url:"-" required:"false" json:"-"`
    48  	ListParams
    49  }
    50  
    51  type FolderCreateParams struct {
    52  	Path          string     `url:"-,omitempty" required:"false" json:"-,omitempty" path:"path"`
    53  	MkdirParents  *bool      `url:"mkdir_parents,omitempty" required:"false" json:"mkdir_parents,omitempty" path:"mkdir_parents"`
    54  	ProvidedMtime *time.Time `url:"provided_mtime,omitempty" required:"false" json:"provided_mtime,omitempty" path:"provided_mtime"`
    55  }
    56  
    57  func (f *Folder) ToFile() (File, error) {
    58  	bodyBytes, err := json.Marshal(f)
    59  	if err != nil {
    60  		return File{}, err
    61  	}
    62  	file := File{}
    63  	file.UnmarshalJSON(bodyBytes)
    64  	return file, nil
    65  }
    66  
    67  func (f Folder) IsDir() bool {
    68  	return f.Type == "directory"
    69  }
    70  
    71  func (f *Folder) UnmarshalJSON(data []byte) error {
    72  	type folder Folder
    73  	var v folder
    74  	if err := json.Unmarshal(data, &v); err != nil {
    75  		return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, map[string]interface{}{})
    76  	}
    77  
    78  	*f = Folder(v)
    79  	return nil
    80  }
    81  
    82  func (f *FolderCollection) UnmarshalJSON(data []byte) error {
    83  	type folders FolderCollection
    84  	var v folders
    85  	if err := json.Unmarshal(data, &v); err != nil {
    86  		return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, []map[string]interface{}{})
    87  	}
    88  
    89  	*f = FolderCollection(v)
    90  	return nil
    91  }
    92  
    93  func (f *FolderCollection) ToSlice() *[]interface{} {
    94  	ret := make([]interface{}, len(*f))
    95  	for i, v := range *f {
    96  		ret[i] = v
    97  	}
    98  
    99  	return &ret
   100  }