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 }