3
3
from typing import TYPE_CHECKING , Any
4
4
5
5
from mipac .abstract .model import AbstractModel
6
+ from mipac .models .lite .user import PartialUser
6
7
from mipac .types .drive import IDriveStatus
7
8
8
9
if TYPE_CHECKING :
@@ -42,20 +43,24 @@ def usage(self) -> int:
42
43
43
44
44
45
class FileProperties (AbstractModel ):
45
- def __init__ (self , properties : IFileProperties ) -> None :
46
- self .__properties : IFileProperties = properties
46
+ def __init__ (self , raw_properties : IFileProperties ) -> None :
47
+ self .__raw_properties : IFileProperties = raw_properties
47
48
48
49
@property
49
50
def width (self ) -> int | None :
50
- return self .__properties [ "width" ]
51
+ return self .__raw_properties . get ( "width" )
51
52
52
53
@property
53
- def height (self ) -> int :
54
- return self .__properties ["height" ]
54
+ def height (self ) -> int | None :
55
+ return self .__raw_properties .get ("height" )
56
+
57
+ @property
58
+ def orientation (self ) -> int | None :
59
+ return self .__raw_properties .get ("orientation" )
55
60
56
61
@property
57
62
def avg_color (self ) -> str | None :
58
- return self .__properties [ "avg_color" ]
63
+ return self .__raw_properties . get ( "avg_color" )
59
64
60
65
61
66
class Folder (AbstractModel ):
@@ -65,36 +70,35 @@ def __init__(self, folder: FolderPayload, client: ClientManager):
65
70
66
71
@property
67
72
def id (self ) -> str :
68
- """フォルダのID"""
69
73
return self .__folder ["id" ]
70
74
71
75
@property
72
76
def created_at (self ) -> str : # TODO: 型
73
- """フォルダの作成日時"""
74
77
return self .__folder ["created_at" ]
75
78
76
79
@property
77
80
def name (self ) -> str :
78
- """フォルダ名"""
79
81
return self .__folder ["name" ]
80
82
81
83
@property
82
- def folders_count (self ) -> int :
83
- """フォルダ内のフォルダ数"""
84
- return self .__folder ["folders_count" ]
84
+ def parent_id (self ) -> str | None :
85
+ return self .__folder ["parent_id" ]
85
86
86
87
@property
87
- def files_count (self ) -> int :
88
- """フォルダ内のファイル数"""
89
- return self .__folder ["files_count" ]
88
+ def folders_count (self ) -> int | None :
89
+ return self .__folder .get ("folders_count" )
90
90
91
91
@property
92
- def parent_id (self ) -> str :
93
- return self .__folder [ "parent_id" ]
92
+ def files_count (self ) -> int | None :
93
+ return self .__folder . get ( "files_count" )
94
94
95
95
@property
96
- def parent (self ) -> dict [str , Any ]:
97
- return self .__folder ["parent" ]
96
+ def parent (self ) -> Folder | None :
97
+ return (
98
+ Folder (self .__folder ["parent" ], client = self .__client )
99
+ if "parent" in self .__folder and self .__folder ["parent" ]
100
+ else None
101
+ )
98
102
99
103
@property
100
104
def api (self ) -> ClientFolderManager :
@@ -120,41 +124,69 @@ def id(self) -> str:
120
124
def created_at (self ):
121
125
return self .__file ["created_at" ]
122
126
127
+ @property
128
+ def name (self ) -> str :
129
+ return self .__file ["name" ]
130
+
131
+ @property
132
+ def type (self ) -> str :
133
+ return self .__file ["type" ]
134
+
135
+ @property
136
+ def md5 (self ) -> str :
137
+ return self .__file ["md5" ]
138
+
139
+ @property
140
+ def size (self ) -> int :
141
+ return self .__file ["size" ]
142
+
123
143
@property
124
144
def is_sensitive (self ) -> bool :
125
145
return self .__file ["is_sensitive" ]
126
146
127
147
@property
128
- def name (self ) -> str :
129
- return self .__file ["name " ]
148
+ def blurhash (self ) -> str | None :
149
+ return self .__file ["blurhash " ]
130
150
131
151
@property
132
- def thumbnail_url (self ) -> str :
133
- return self .__file ["thumbnail_url" ]
152
+ def properties (self ) -> FileProperties :
153
+ return FileProperties ( self .__file ["properties" ])
134
154
135
155
@property
136
156
def url (self ) -> str :
137
157
return self .__file ["url" ]
138
158
139
159
@property
140
- def type (self ) -> str :
141
- return self .__file ["type " ]
160
+ def thumbnail_url (self ) -> str | None :
161
+ return self .__file ["thumbnail_url " ]
142
162
143
163
@property
144
- def size (self ) -> int :
145
- return self .__file ["size " ]
164
+ def comment (self ) -> str | None :
165
+ return self .__file ["comment " ]
146
166
147
167
@property
148
- def md5 (self ) -> str :
149
- return self .__file ["md5 " ]
168
+ def folder_id (self ) -> str | None :
169
+ return self .__file ["folder_id " ]
150
170
151
171
@property
152
- def blurhash (self ) -> str :
153
- return self .__file ["blurhash" ]
172
+ def folder (self ) -> Folder | None :
173
+ return (
174
+ Folder (self .__file ["folder" ], client = self .__client )
175
+ if "folder" in self .__file and self .__file ["folder" ]
176
+ else None
177
+ )
154
178
155
179
@property
156
- def properties (self ) -> FileProperties :
157
- return FileProperties (self .__file ["properties" ])
180
+ def user_id (self ) -> str | None :
181
+ return self .__file ["user_id" ]
182
+
183
+ @property
184
+ def user (self ) -> PartialUser | None :
185
+ return (
186
+ PartialUser (self .__file ["user" ], client = self .__client )
187
+ if "user" in self .__file and self .__file ["user" ]
188
+ else None
189
+ )
158
190
159
191
@property
160
192
def api (self ) -> ClientFileManager :
0 commit comments