-
Notifications
You must be signed in to change notification settings - Fork 2
/
folder.go
115 lines (100 loc) · 8.27 KB
/
folder.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package files_sdk
import (
"encoding/json"
"time"
lib "github.com/Files-com/files-sdk-go/v3/lib"
)
type Folder struct {
Path string `json:"path,omitempty" path:"path,omitempty" url:"path,omitempty"`
CreatedById int64 `json:"created_by_id,omitempty" path:"created_by_id,omitempty" url:"created_by_id,omitempty"`
CreatedByApiKeyId int64 `json:"created_by_api_key_id,omitempty" path:"created_by_api_key_id,omitempty" url:"created_by_api_key_id,omitempty"`
CreatedByAs2IncomingMessageId int64 `json:"created_by_as2_incoming_message_id,omitempty" path:"created_by_as2_incoming_message_id,omitempty" url:"created_by_as2_incoming_message_id,omitempty"`
CreatedByAutomationId int64 `json:"created_by_automation_id,omitempty" path:"created_by_automation_id,omitempty" url:"created_by_automation_id,omitempty"`
CreatedByBundleRegistrationId int64 `json:"created_by_bundle_registration_id,omitempty" path:"created_by_bundle_registration_id,omitempty" url:"created_by_bundle_registration_id,omitempty"`
CreatedByInboxId int64 `json:"created_by_inbox_id,omitempty" path:"created_by_inbox_id,omitempty" url:"created_by_inbox_id,omitempty"`
CreatedByRemoteServerId int64 `json:"created_by_remote_server_id,omitempty" path:"created_by_remote_server_id,omitempty" url:"created_by_remote_server_id,omitempty"`
CreatedByRemoteServerSyncId int64 `json:"created_by_remote_server_sync_id,omitempty" path:"created_by_remote_server_sync_id,omitempty" url:"created_by_remote_server_sync_id,omitempty"`
CustomMetadata map[string]interface{} `json:"custom_metadata,omitempty" path:"custom_metadata,omitempty" url:"custom_metadata,omitempty"`
DisplayName string `json:"display_name,omitempty" path:"display_name,omitempty" url:"display_name,omitempty"`
Type string `json:"type,omitempty" path:"type,omitempty" url:"type,omitempty"`
Size int64 `json:"size,omitempty" path:"size,omitempty" url:"size,omitempty"`
CreatedAt *time.Time `json:"created_at,omitempty" path:"created_at,omitempty" url:"created_at,omitempty"`
LastModifiedById int64 `json:"last_modified_by_id,omitempty" path:"last_modified_by_id,omitempty" url:"last_modified_by_id,omitempty"`
LastModifiedByApiKeyId int64 `json:"last_modified_by_api_key_id,omitempty" path:"last_modified_by_api_key_id,omitempty" url:"last_modified_by_api_key_id,omitempty"`
LastModifiedByAutomationId int64 `json:"last_modified_by_automation_id,omitempty" path:"last_modified_by_automation_id,omitempty" url:"last_modified_by_automation_id,omitempty"`
LastModifiedByBundleRegistrationId int64 `json:"last_modified_by_bundle_registration_id,omitempty" path:"last_modified_by_bundle_registration_id,omitempty" url:"last_modified_by_bundle_registration_id,omitempty"`
LastModifiedByRemoteServerId int64 `json:"last_modified_by_remote_server_id,omitempty" path:"last_modified_by_remote_server_id,omitempty" url:"last_modified_by_remote_server_id,omitempty"`
LastModifiedByRemoteServerSyncId int64 `json:"last_modified_by_remote_server_sync_id,omitempty" path:"last_modified_by_remote_server_sync_id,omitempty" url:"last_modified_by_remote_server_sync_id,omitempty"`
Mtime *time.Time `json:"mtime,omitempty" path:"mtime,omitempty" url:"mtime,omitempty"`
ProvidedMtime *time.Time `json:"provided_mtime,omitempty" path:"provided_mtime,omitempty" url:"provided_mtime,omitempty"`
Crc32 string `json:"crc32,omitempty" path:"crc32,omitempty" url:"crc32,omitempty"`
Md5 string `json:"md5,omitempty" path:"md5,omitempty" url:"md5,omitempty"`
MimeType string `json:"mime_type,omitempty" path:"mime_type,omitempty" url:"mime_type,omitempty"`
Region string `json:"region,omitempty" path:"region,omitempty" url:"region,omitempty"`
Permissions string `json:"permissions,omitempty" path:"permissions,omitempty" url:"permissions,omitempty"`
SubfoldersLocked *bool `json:"subfolders_locked?,omitempty" path:"subfolders_locked?,omitempty" url:"subfolders_locked?,omitempty"`
IsLocked *bool `json:"is_locked,omitempty" path:"is_locked,omitempty" url:"is_locked,omitempty"`
DownloadUri string `json:"download_uri,omitempty" path:"download_uri,omitempty" url:"download_uri,omitempty"`
PriorityColor string `json:"priority_color,omitempty" path:"priority_color,omitempty" url:"priority_color,omitempty"`
PreviewId int64 `json:"preview_id,omitempty" path:"preview_id,omitempty" url:"preview_id,omitempty"`
Preview Preview `json:"preview,omitempty" path:"preview,omitempty" url:"preview,omitempty"`
MkdirParents *bool `json:"mkdir_parents,omitempty" path:"mkdir_parents,omitempty" url:"mkdir_parents,omitempty"`
}
func (f Folder) Identifier() interface{} {
return f.Path
}
type FolderCollection []Folder
type FolderListForParams struct {
Path string `url:"-,omitempty" required:"false" json:"-,omitempty" path:"path"`
Filter string `url:"filter,omitempty" required:"false" json:"filter,omitempty" path:"filter"`
PreviewSize string `url:"preview_size,omitempty" required:"false" json:"preview_size,omitempty" path:"preview_size"`
SortBy map[string]interface{} `url:"sort_by,omitempty" required:"false" json:"sort_by,omitempty" path:"sort_by"`
Search string `url:"search,omitempty" required:"false" json:"search,omitempty" path:"search"`
SearchAll *bool `url:"search_all,omitempty" required:"false" json:"search_all,omitempty" path:"search_all"`
WithPreviews *bool `url:"with_previews,omitempty" required:"false" json:"with_previews,omitempty" path:"with_previews"`
WithPriorityColor *bool `url:"with_priority_color,omitempty" required:"false" json:"with_priority_color,omitempty" path:"with_priority_color"`
ConcurrencyManager lib.ConcurrencyManagerWithSubWorker `url:"-" required:"false" json:"-"`
ListParams
}
type FolderCreateParams struct {
Path string `url:"-,omitempty" required:"false" json:"-,omitempty" path:"path"`
MkdirParents *bool `url:"mkdir_parents,omitempty" required:"false" json:"mkdir_parents,omitempty" path:"mkdir_parents"`
ProvidedMtime *time.Time `url:"provided_mtime,omitempty" required:"false" json:"provided_mtime,omitempty" path:"provided_mtime"`
}
func (f *Folder) ToFile() (File, error) {
bodyBytes, err := json.Marshal(f)
if err != nil {
return File{}, err
}
file := File{}
file.UnmarshalJSON(bodyBytes)
return file, nil
}
func (f Folder) IsDir() bool {
return f.Type == "directory"
}
func (f *Folder) UnmarshalJSON(data []byte) error {
type folder Folder
var v folder
if err := json.Unmarshal(data, &v); err != nil {
return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, map[string]interface{}{})
}
*f = Folder(v)
return nil
}
func (f *FolderCollection) UnmarshalJSON(data []byte) error {
type folders FolderCollection
var v folders
if err := json.Unmarshal(data, &v); err != nil {
return lib.ErrorWithOriginalResponse{}.ProcessError(data, err, []map[string]interface{}{})
}
*f = FolderCollection(v)
return nil
}
func (f *FolderCollection) ToSlice() *[]interface{} {
ret := make([]interface{}, len(*f))
for i, v := range *f {
ret[i] = v
}
return &ret
}