55from typing import Union
66
77from lib .core import entities
8+ from lib .core .exceptions import AppException
89from pydantic import BaseModel
910from pydantic import Extra
1011from pydantic import Field
@@ -90,13 +91,23 @@ class ServiceResponse(BaseModel):
9091 status : Optional [int ]
9192 reason : Optional [str ]
9293 content : Optional [Union [bytes , str ]] = None
93- data : Optional [Any ] = None
94+ res_data : Optional [Any ] = None # response data
95+ res_error : Optional [str ] = None
9496 count : Optional [int ] = 0
95- _error : Optional [str ] = None
9697
9798 class Config :
9899 extra = Extra .allow
99100
101+ @property
102+ def data (self ):
103+ if self .error :
104+ raise AppException (self .error )
105+ return self .res_data
106+
107+ @data .setter
108+ def data (self , value ):
109+ self .res_data = value
110+
100111 @property
101112 def status_code (self ):
102113 return self .status
@@ -109,114 +120,115 @@ def ok(self):
109120
110121 @property
111122 def error (self ):
112- if self ._error :
113- return self ._error
114- return self .data
123+ if self .res_error :
124+ return self .res_error
125+ if not self .ok :
126+ return self .res_data
115127
116128 def set_error (self , value : Union [dict , str ]):
117129 if isinstance (value , dict ) and "error" in value :
118- self ._error = value ["error" ]
119- self ._error = value
130+ self .res_error = value ["error" ]
131+ self .res_error = value
120132
121133 def __str__ (self ):
122134 return f"Status: { self .status_code } , Error { self .error } "
123135
124136
125137class ImageResponse (ServiceResponse ):
126- data : entities .ImageEntity = None
138+ res_data : entities .ImageEntity = None
127139
128140
129141class VideoResponse (ServiceResponse ):
130- data : entities .VideoEntity = None
142+ res_data : entities .VideoEntity = None
131143
132144
133145class DocumentResponse (ServiceResponse ):
134- data : entities .DocumentEntity = None
146+ res_data : entities .DocumentEntity = None
135147
136148
137149class TiledResponse (ServiceResponse ):
138- data : entities .TiledEntity = None
150+ res_data : entities .TiledEntity = None
139151
140152
141153class ClassificationResponse (ServiceResponse ):
142- data : entities .ClassificationEntity = None
154+ res_data : entities .ClassificationEntity = None
143155
144156
145157class PointCloudResponse (ServiceResponse ):
146- data : entities .PointCloudEntity = None
158+ res_data : entities .PointCloudEntity = None
147159
148160
149161class TeamResponse (ServiceResponse ):
150- data : entities .TeamEntity = None
162+ res_data : entities .TeamEntity = None
151163
152164
153165class UserResponse (ServiceResponse ):
154- data : entities .UserEntity = None
166+ res_data : entities .UserEntity = None
155167
156168
157169class ModelListResponse (ServiceResponse ):
158- data : List [entities .AnnotationClassEntity ] = None
170+ res_data : List [entities .AnnotationClassEntity ] = None
159171
160172
161173class _IntegrationResponse (ServiceResponse ):
162174 integrations : List [entities .IntegrationEntity ] = []
163175
164176
165177class IntegrationListResponse (ServiceResponse ):
166- data : _IntegrationResponse
178+ res_data : _IntegrationResponse
167179
168180
169181class AnnotationClassListResponse (ServiceResponse ):
170- data : List [entities .AnnotationClassEntity ] = None
182+ res_data : List [entities .AnnotationClassEntity ] = None
171183
172184
173185class SubsetListResponse (ServiceResponse ):
174- data : List [entities .SubSetEntity ] = None
186+ res_data : List [entities .SubSetEntity ] = None
175187
176188
177189class SubsetResponse (ServiceResponse ):
178- data : entities .SubSetEntity = None
190+ res_data : entities .SubSetEntity = None
179191
180192
181193class DownloadMLModelAuthDataResponse (ServiceResponse ):
182- data : DownloadMLModelAuthData = None
194+ res_data : DownloadMLModelAuthData = None
183195
184196
185197class UploadAnnotationsResponse (ServiceResponse ):
186- data : Optional [UploadAnnotations ] = None
198+ res_data : Optional [UploadAnnotations ] = None
187199
188200
189201class UploadAnnotationAuthDataResponse (ServiceResponse ):
190- data : UploadAnnotationAuthData = None
202+ res_data : UploadAnnotationAuthData = None
191203
192204
193205class UploadCustomFieldValuesResponse (ServiceResponse ):
194- data : UploadCustomFieldValues = None
206+ res_data : UploadCustomFieldValues = None
195207
196208
197209class UserLimitsResponse (ServiceResponse ):
198- data : UserLimits = None
210+ res_data : UserLimits = None
199211
200212
201213class ItemListResponse (ServiceResponse ):
202- data : List [entities .BaseItemEntity ] = None
214+ res_data : List [entities .BaseItemEntity ] = None
203215
204216
205217class FolderResponse (ServiceResponse ):
206- data : entities .FolderEntity = None
218+ res_data : entities .FolderEntity = None
207219
208220
209221class FolderListResponse (ServiceResponse ):
210- data : List [entities .FolderEntity ] = None
222+ res_data : List [entities .FolderEntity ] = None
211223
212224
213225class ProjectResponse (ServiceResponse ):
214- data : entities .ProjectEntity = None
226+ res_data : entities .ProjectEntity = None
215227
216228
217229class ProjectListResponse (ServiceResponse ):
218- data : List [entities .ProjectEntity ] = None
230+ res_data : List [entities .ProjectEntity ] = None
219231
220232
221233class SettingsListResponse (ServiceResponse ):
222- data : List [entities .SettingEntity ] = None
234+ res_data : List [entities .SettingEntity ] = None
0 commit comments