2022-07-13 05:23:48 -07:00
|
|
|
//
|
|
|
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
|
|
|
//
|
|
|
|
// @dart=2.12
|
|
|
|
|
|
|
|
// ignore_for_file: unused_element, unused_import
|
|
|
|
// ignore_for_file: always_put_required_named_parameters_first
|
|
|
|
// ignore_for_file: constant_identifier_names
|
|
|
|
// ignore_for_file: lines_longer_than_80_chars
|
|
|
|
|
|
|
|
part of openapi.api;
|
|
|
|
|
|
|
|
class ApiClient {
|
2023-04-08 19:26:09 -07:00
|
|
|
ApiClient({this.basePath = '/api', this.authentication,});
|
2022-07-13 05:23:48 -07:00
|
|
|
|
|
|
|
final String basePath;
|
2023-04-08 19:26:09 -07:00
|
|
|
final Authentication? authentication;
|
2022-07-13 05:23:48 -07:00
|
|
|
|
|
|
|
var _client = Client();
|
2023-04-08 19:26:09 -07:00
|
|
|
final _defaultHeaderMap = <String, String>{};
|
2022-07-13 05:23:48 -07:00
|
|
|
|
|
|
|
/// Returns the current HTTP [Client] instance to use in this class.
|
|
|
|
///
|
|
|
|
/// The return value is guaranteed to never be null.
|
|
|
|
Client get client => _client;
|
|
|
|
|
|
|
|
/// Requests to use a new HTTP [Client] in this class.
|
|
|
|
set client(Client newClient) {
|
|
|
|
_client = newClient;
|
|
|
|
}
|
|
|
|
|
2023-04-08 19:26:09 -07:00
|
|
|
Map<String, String> get defaultHeaderMap => _defaultHeaderMap;
|
2022-07-13 05:23:48 -07:00
|
|
|
|
|
|
|
void addDefaultHeader(String key, String value) {
|
|
|
|
_defaultHeaderMap[key] = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
// We don't use a Map<String, String> for queryParams.
|
|
|
|
// If collectionFormat is 'multi', a key might appear multiple times.
|
|
|
|
Future<Response> invokeAPI(
|
|
|
|
String path,
|
|
|
|
String method,
|
|
|
|
List<QueryParam> queryParams,
|
|
|
|
Object? body,
|
|
|
|
Map<String, String> headerParams,
|
|
|
|
Map<String, String> formParams,
|
|
|
|
String? contentType,
|
|
|
|
) async {
|
2023-04-08 19:26:09 -07:00
|
|
|
await authentication?.applyToParams(queryParams, headerParams);
|
2022-07-13 05:23:48 -07:00
|
|
|
|
|
|
|
headerParams.addAll(_defaultHeaderMap);
|
|
|
|
if (contentType != null) {
|
|
|
|
headerParams['Content-Type'] = contentType;
|
|
|
|
}
|
|
|
|
|
|
|
|
final urlEncodedQueryParams = queryParams.map((param) => '$param');
|
|
|
|
final queryString = urlEncodedQueryParams.isNotEmpty ? '?${urlEncodedQueryParams.join('&')}' : '';
|
|
|
|
final uri = Uri.parse('$basePath$path$queryString');
|
|
|
|
|
|
|
|
try {
|
|
|
|
// Special case for uploading a single file which isn't a 'multipart/form-data'.
|
|
|
|
if (
|
|
|
|
body is MultipartFile && (contentType == null ||
|
|
|
|
!contentType.toLowerCase().startsWith('multipart/form-data'))
|
|
|
|
) {
|
|
|
|
final request = StreamedRequest(method, uri);
|
|
|
|
request.headers.addAll(headerParams);
|
|
|
|
request.contentLength = body.length;
|
|
|
|
body.finalize().listen(
|
|
|
|
request.sink.add,
|
|
|
|
onDone: request.sink.close,
|
|
|
|
// ignore: avoid_types_on_closure_parameters
|
|
|
|
onError: (Object error, StackTrace trace) => request.sink.close(),
|
|
|
|
cancelOnError: true,
|
|
|
|
);
|
|
|
|
final response = await _client.send(request);
|
|
|
|
return Response.fromStream(response);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (body is MultipartRequest) {
|
|
|
|
final request = MultipartRequest(method, uri);
|
|
|
|
request.fields.addAll(body.fields);
|
|
|
|
request.files.addAll(body.files);
|
|
|
|
request.headers.addAll(body.headers);
|
|
|
|
request.headers.addAll(headerParams);
|
|
|
|
final response = await _client.send(request);
|
|
|
|
return Response.fromStream(response);
|
|
|
|
}
|
|
|
|
|
|
|
|
final msgBody = contentType == 'application/x-www-form-urlencoded'
|
|
|
|
? formParams
|
|
|
|
: await serializeAsync(body);
|
|
|
|
final nullableHeaderParams = headerParams.isEmpty ? null : headerParams;
|
|
|
|
|
|
|
|
switch(method) {
|
|
|
|
case 'POST': return await _client.post(uri, headers: nullableHeaderParams, body: msgBody,);
|
|
|
|
case 'PUT': return await _client.put(uri, headers: nullableHeaderParams, body: msgBody,);
|
|
|
|
case 'DELETE': return await _client.delete(uri, headers: nullableHeaderParams, body: msgBody,);
|
|
|
|
case 'PATCH': return await _client.patch(uri, headers: nullableHeaderParams, body: msgBody,);
|
|
|
|
case 'HEAD': return await _client.head(uri, headers: nullableHeaderParams,);
|
|
|
|
case 'GET': return await _client.get(uri, headers: nullableHeaderParams,);
|
|
|
|
}
|
|
|
|
} on SocketException catch (error, trace) {
|
|
|
|
throw ApiException.withInner(
|
|
|
|
HttpStatus.badRequest,
|
|
|
|
'Socket operation failed: $method $path',
|
|
|
|
error,
|
|
|
|
trace,
|
|
|
|
);
|
|
|
|
} on TlsException catch (error, trace) {
|
|
|
|
throw ApiException.withInner(
|
|
|
|
HttpStatus.badRequest,
|
|
|
|
'TLS/SSL communication failed: $method $path',
|
|
|
|
error,
|
|
|
|
trace,
|
|
|
|
);
|
|
|
|
} on IOException catch (error, trace) {
|
|
|
|
throw ApiException.withInner(
|
|
|
|
HttpStatus.badRequest,
|
|
|
|
'I/O operation failed: $method $path',
|
|
|
|
error,
|
|
|
|
trace,
|
|
|
|
);
|
|
|
|
} on ClientException catch (error, trace) {
|
|
|
|
throw ApiException.withInner(
|
|
|
|
HttpStatus.badRequest,
|
|
|
|
'HTTP connection failed: $method $path',
|
|
|
|
error,
|
|
|
|
trace,
|
|
|
|
);
|
|
|
|
} on Exception catch (error, trace) {
|
|
|
|
throw ApiException.withInner(
|
|
|
|
HttpStatus.badRequest,
|
|
|
|
'Exception occurred: $method $path',
|
|
|
|
error,
|
|
|
|
trace,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
throw ApiException(
|
|
|
|
HttpStatus.badRequest,
|
|
|
|
'Invalid HTTP operation: $method $path',
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2023-02-11 20:37:48 -07:00
|
|
|
Future<dynamic> deserializeAsync(String json, String targetType, {bool growable = false,}) =>
|
2022-07-13 05:23:48 -07:00
|
|
|
// ignore: deprecated_member_use_from_same_package
|
|
|
|
deserialize(json, targetType, growable: growable);
|
|
|
|
|
|
|
|
@Deprecated('Scheduled for removal in OpenAPI Generator 6.x. Use deserializeAsync() instead.')
|
2023-02-11 20:37:48 -07:00
|
|
|
Future<dynamic> deserialize(String json, String targetType, {bool growable = false,}) async {
|
2022-07-13 05:23:48 -07:00
|
|
|
// Remove all spaces. Necessary for regular expressions as well.
|
|
|
|
targetType = targetType.replaceAll(' ', ''); // ignore: parameter_assignments
|
|
|
|
|
|
|
|
// If the expected target type is String, nothing to do...
|
|
|
|
return targetType == 'String'
|
|
|
|
? json
|
2023-02-11 20:37:48 -07:00
|
|
|
: _deserialize(await compute((String j) => jsonDecode(j), json), targetType, growable: growable);
|
2022-07-13 05:23:48 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
// ignore: deprecated_member_use_from_same_package
|
|
|
|
Future<String> serializeAsync(Object? value) async => serialize(value);
|
|
|
|
|
|
|
|
@Deprecated('Scheduled for removal in OpenAPI Generator 6.x. Use serializeAsync() instead.')
|
|
|
|
String serialize(Object? value) => value == null ? '' : json.encode(value);
|
|
|
|
|
|
|
|
static dynamic _deserialize(dynamic value, String targetType, {bool growable = false}) {
|
|
|
|
try {
|
|
|
|
switch (targetType) {
|
|
|
|
case 'String':
|
|
|
|
return value is String ? value : value.toString();
|
|
|
|
case 'int':
|
|
|
|
return value is int ? value : int.parse('$value');
|
|
|
|
case 'double':
|
|
|
|
return value is double ? value : double.parse('$value');
|
|
|
|
case 'bool':
|
|
|
|
if (value is bool) {
|
|
|
|
return value;
|
|
|
|
}
|
|
|
|
final valueString = '$value'.toLowerCase();
|
|
|
|
return valueString == 'true' || valueString == '1';
|
|
|
|
case 'DateTime':
|
|
|
|
return value is DateTime ? value : DateTime.tryParse(value);
|
2023-01-02 13:22:33 -07:00
|
|
|
case 'APIKeyCreateDto':
|
|
|
|
return APIKeyCreateDto.fromJson(value);
|
|
|
|
case 'APIKeyCreateResponseDto':
|
|
|
|
return APIKeyCreateResponseDto.fromJson(value);
|
|
|
|
case 'APIKeyResponseDto':
|
|
|
|
return APIKeyResponseDto.fromJson(value);
|
|
|
|
case 'APIKeyUpdateDto':
|
|
|
|
return APIKeyUpdateDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'AddUsersDto':
|
|
|
|
return AddUsersDto.fromJson(value);
|
|
|
|
case 'AdminSignupResponseDto':
|
|
|
|
return AdminSignupResponseDto.fromJson(value);
|
2022-09-07 13:16:18 -07:00
|
|
|
case 'AlbumCountResponseDto':
|
|
|
|
return AlbumCountResponseDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'AlbumResponseDto':
|
|
|
|
return AlbumResponseDto.fromJson(value);
|
2022-10-06 09:25:54 -07:00
|
|
|
case 'AllJobStatusResponseDto':
|
|
|
|
return AllJobStatusResponseDto.fromJson(value);
|
2023-08-16 13:04:55 -07:00
|
|
|
case 'AssetBulkUpdateDto':
|
|
|
|
return AssetBulkUpdateDto.fromJson(value);
|
2023-05-24 14:08:21 -07:00
|
|
|
case 'AssetBulkUploadCheckDto':
|
|
|
|
return AssetBulkUploadCheckDto.fromJson(value);
|
|
|
|
case 'AssetBulkUploadCheckItem':
|
|
|
|
return AssetBulkUploadCheckItem.fromJson(value);
|
|
|
|
case 'AssetBulkUploadCheckResponseDto':
|
|
|
|
return AssetBulkUploadCheckResponseDto.fromJson(value);
|
|
|
|
case 'AssetBulkUploadCheckResult':
|
|
|
|
return AssetBulkUploadCheckResult.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'AssetFileUploadResponseDto':
|
|
|
|
return AssetFileUploadResponseDto.fromJson(value);
|
2023-05-31 18:51:28 -07:00
|
|
|
case 'AssetIdsDto':
|
|
|
|
return AssetIdsDto.fromJson(value);
|
|
|
|
case 'AssetIdsResponseDto':
|
|
|
|
return AssetIdsResponseDto.fromJson(value);
|
2023-08-18 07:31:48 -07:00
|
|
|
case 'AssetJobName':
|
|
|
|
return AssetJobNameTypeTransformer().decode(value);
|
|
|
|
case 'AssetJobsDto':
|
|
|
|
return AssetJobsDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'AssetResponseDto':
|
|
|
|
return AssetResponseDto.fromJson(value);
|
2023-07-14 06:30:17 -07:00
|
|
|
case 'AssetStatsResponseDto':
|
|
|
|
return AssetStatsResponseDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'AssetTypeEnum':
|
|
|
|
return AssetTypeEnumTypeTransformer().decode(value);
|
2023-07-08 19:43:11 -07:00
|
|
|
case 'AudioCodec':
|
|
|
|
return AudioCodecTypeTransformer().decode(value);
|
2023-08-24 12:28:50 -07:00
|
|
|
case 'AuditDeletesResponseDto':
|
|
|
|
return AuditDeletesResponseDto.fromJson(value);
|
2023-04-25 19:19:23 -07:00
|
|
|
case 'AuthDeviceResponseDto':
|
|
|
|
return AuthDeviceResponseDto.fromJson(value);
|
2023-07-11 14:52:41 -07:00
|
|
|
case 'BulkIdResponseDto':
|
|
|
|
return BulkIdResponseDto.fromJson(value);
|
2023-08-01 18:29:14 -07:00
|
|
|
case 'BulkIdsDto':
|
|
|
|
return BulkIdsDto.fromJson(value);
|
2022-12-21 07:43:35 -07:00
|
|
|
case 'ChangePasswordDto':
|
|
|
|
return ChangePasswordDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'CheckDuplicateAssetDto':
|
|
|
|
return CheckDuplicateAssetDto.fromJson(value);
|
|
|
|
case 'CheckDuplicateAssetResponseDto':
|
|
|
|
return CheckDuplicateAssetResponseDto.fromJson(value);
|
2022-10-25 07:51:03 -07:00
|
|
|
case 'CheckExistingAssetsDto':
|
|
|
|
return CheckExistingAssetsDto.fromJson(value);
|
|
|
|
case 'CheckExistingAssetsResponseDto':
|
|
|
|
return CheckExistingAssetsResponseDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'CreateAlbumDto':
|
|
|
|
return CreateAlbumDto.fromJson(value);
|
|
|
|
case 'CreateProfileImageResponseDto':
|
|
|
|
return CreateProfileImageResponseDto.fromJson(value);
|
2022-12-05 10:56:44 -07:00
|
|
|
case 'CreateTagDto':
|
|
|
|
return CreateTagDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'CreateUserDto':
|
|
|
|
return CreateUserDto.fromJson(value);
|
|
|
|
case 'CuratedLocationsResponseDto':
|
|
|
|
return CuratedLocationsResponseDto.fromJson(value);
|
|
|
|
case 'CuratedObjectsResponseDto':
|
|
|
|
return CuratedObjectsResponseDto.fromJson(value);
|
|
|
|
case 'DeleteAssetDto':
|
|
|
|
return DeleteAssetDto.fromJson(value);
|
|
|
|
case 'DeleteAssetResponseDto':
|
|
|
|
return DeleteAssetResponseDto.fromJson(value);
|
|
|
|
case 'DeleteAssetStatus':
|
|
|
|
return DeleteAssetStatusTypeTransformer().decode(value);
|
2023-06-30 09:24:28 -07:00
|
|
|
case 'DownloadArchiveInfo':
|
|
|
|
return DownloadArchiveInfo.fromJson(value);
|
2023-08-15 08:49:32 -07:00
|
|
|
case 'DownloadInfoDto':
|
|
|
|
return DownloadInfoDto.fromJson(value);
|
2023-06-30 09:24:28 -07:00
|
|
|
case 'DownloadResponseDto':
|
|
|
|
return DownloadResponseDto.fromJson(value);
|
2023-08-24 12:28:50 -07:00
|
|
|
case 'EntityType':
|
|
|
|
return EntityTypeTypeTransformer().decode(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'ExifResponseDto':
|
|
|
|
return ExifResponseDto.fromJson(value);
|
feat(server): support for read-only assets and importing existing items in the filesystem (#2715)
* Added read-only flag for assets, endpoint to trigger file import vs upload
* updated fixtures with new property
* if upload is 'read-only', ensure there is no existing asset at the designated originalPath
* added test for file import as well as detecting existing image at read-only destination location
* Added storage service test for a case where it should not move read-only assets
* upload doesn't need the read-only flag available, just importing
* default isReadOnly on import endpoint to true
* formatting fixes
* create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation
* updated code to reflect changes in MR
* fixed read stream promise return type
* new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates
* refactor: import asset
* chore: open api
* chore: tests
* Added externalPath support for individual users, updated UI to allow this to be set by admin
* added missing var for externalPath in ui
* chore: open api
* fix: compilation issues
* fix: server test
* built api, fixed user-response dto to include externalPath
* reverted accidental commit
* bad commit of duplicate externalPath in user response dto
* fixed tests to include externalPath on expected result
* fix: unit tests
* centralized supported filetypes, perform file type checking of asset and sidecar during file import process
* centralized supported filetype check method to keep regex DRY
* fixed typo
* combined migrations into one
* update api
* Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not
* update mimetype
* Fixed detect correct mimetype
* revert asset-upload config
* reverted domain.constant
* refactor
* fix mime-type issue
* fix format
---------
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-21 19:33:20 -07:00
|
|
|
case 'ImportAssetDto':
|
|
|
|
return ImportAssetDto.fromJson(value);
|
2022-10-06 09:25:54 -07:00
|
|
|
case 'JobCommand':
|
|
|
|
return JobCommandTypeTransformer().decode(value);
|
|
|
|
case 'JobCommandDto':
|
|
|
|
return JobCommandDto.fromJson(value);
|
2023-03-20 08:55:28 -07:00
|
|
|
case 'JobCountsDto':
|
|
|
|
return JobCountsDto.fromJson(value);
|
|
|
|
case 'JobName':
|
|
|
|
return JobNameTypeTransformer().decode(value);
|
2023-06-01 03:32:51 -07:00
|
|
|
case 'JobSettingsDto':
|
|
|
|
return JobSettingsDto.fromJson(value);
|
2023-04-01 13:46:07 -07:00
|
|
|
case 'JobStatusDto':
|
|
|
|
return JobStatusDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'LoginCredentialDto':
|
|
|
|
return LoginCredentialDto.fromJson(value);
|
|
|
|
case 'LoginResponseDto':
|
|
|
|
return LoginResponseDto.fromJson(value);
|
2022-07-19 11:49:58 -07:00
|
|
|
case 'LogoutResponseDto':
|
|
|
|
return LogoutResponseDto.fromJson(value);
|
2023-05-05 18:33:30 -07:00
|
|
|
case 'MapMarkerResponseDto':
|
|
|
|
return MapMarkerResponseDto.fromJson(value);
|
2023-06-14 18:47:18 -07:00
|
|
|
case 'MemoryLaneResponseDto':
|
|
|
|
return MemoryLaneResponseDto.fromJson(value);
|
2023-07-11 14:52:41 -07:00
|
|
|
case 'MergePersonDto':
|
|
|
|
return MergePersonDto.fromJson(value);
|
2022-11-14 19:24:25 -07:00
|
|
|
case 'OAuthCallbackDto':
|
|
|
|
return OAuthCallbackDto.fromJson(value);
|
|
|
|
case 'OAuthConfigDto':
|
|
|
|
return OAuthConfigDto.fromJson(value);
|
|
|
|
case 'OAuthConfigResponseDto':
|
|
|
|
return OAuthConfigResponseDto.fromJson(value);
|
2023-07-18 11:09:43 -07:00
|
|
|
case 'PeopleResponseDto':
|
|
|
|
return PeopleResponseDto.fromJson(value);
|
2023-07-22 20:00:43 -07:00
|
|
|
case 'PeopleUpdateDto':
|
|
|
|
return PeopleUpdateDto.fromJson(value);
|
|
|
|
case 'PeopleUpdateItem':
|
|
|
|
return PeopleUpdateItem.fromJson(value);
|
2023-05-17 10:07:17 -07:00
|
|
|
case 'PersonResponseDto':
|
|
|
|
return PersonResponseDto.fromJson(value);
|
|
|
|
case 'PersonUpdateDto':
|
|
|
|
return PersonUpdateDto.fromJson(value);
|
2023-04-01 13:46:07 -07:00
|
|
|
case 'QueueStatusDto':
|
|
|
|
return QueueStatusDto.fromJson(value);
|
2023-03-02 19:47:08 -07:00
|
|
|
case 'SearchAlbumResponseDto':
|
|
|
|
return SearchAlbumResponseDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'SearchAssetDto':
|
|
|
|
return SearchAssetDto.fromJson(value);
|
2023-03-02 19:47:08 -07:00
|
|
|
case 'SearchAssetResponseDto':
|
|
|
|
return SearchAssetResponseDto.fromJson(value);
|
2023-03-05 13:44:31 -07:00
|
|
|
case 'SearchExploreItem':
|
|
|
|
return SearchExploreItem.fromJson(value);
|
|
|
|
case 'SearchExploreResponseDto':
|
|
|
|
return SearchExploreResponseDto.fromJson(value);
|
2023-03-02 19:47:08 -07:00
|
|
|
case 'SearchFacetCountResponseDto':
|
|
|
|
return SearchFacetCountResponseDto.fromJson(value);
|
|
|
|
case 'SearchFacetResponseDto':
|
|
|
|
return SearchFacetResponseDto.fromJson(value);
|
|
|
|
case 'SearchResponseDto':
|
|
|
|
return SearchResponseDto.fromJson(value);
|
2023-08-17 21:55:26 -07:00
|
|
|
case 'ServerFeaturesDto':
|
|
|
|
return ServerFeaturesDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'ServerInfoResponseDto':
|
|
|
|
return ServerInfoResponseDto.fromJson(value);
|
2023-07-15 18:24:46 -07:00
|
|
|
case 'ServerMediaTypesResponseDto':
|
|
|
|
return ServerMediaTypesResponseDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'ServerPingResponse':
|
|
|
|
return ServerPingResponse.fromJson(value);
|
2022-10-23 14:54:54 -07:00
|
|
|
case 'ServerStatsResponseDto':
|
|
|
|
return ServerStatsResponseDto.fromJson(value);
|
2023-08-17 21:55:26 -07:00
|
|
|
case 'ServerVersionResponseDto':
|
|
|
|
return ServerVersionResponseDto.fromJson(value);
|
2023-06-20 18:08:43 -07:00
|
|
|
case 'SharedLinkCreateDto':
|
|
|
|
return SharedLinkCreateDto.fromJson(value);
|
|
|
|
case 'SharedLinkEditDto':
|
|
|
|
return SharedLinkEditDto.fromJson(value);
|
2023-01-09 13:16:08 -07:00
|
|
|
case 'SharedLinkResponseDto':
|
|
|
|
return SharedLinkResponseDto.fromJson(value);
|
|
|
|
case 'SharedLinkType':
|
|
|
|
return SharedLinkTypeTypeTransformer().decode(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'SignUpDto':
|
|
|
|
return SignUpDto.fromJson(value);
|
|
|
|
case 'SmartInfoResponseDto':
|
|
|
|
return SmartInfoResponseDto.fromJson(value);
|
2022-12-09 13:51:42 -07:00
|
|
|
case 'SystemConfigDto':
|
|
|
|
return SystemConfigDto.fromJson(value);
|
|
|
|
case 'SystemConfigFFmpegDto':
|
|
|
|
return SystemConfigFFmpegDto.fromJson(value);
|
2023-06-01 03:32:51 -07:00
|
|
|
case 'SystemConfigJobDto':
|
|
|
|
return SystemConfigJobDto.fromJson(value);
|
2023-08-24 21:15:03 -07:00
|
|
|
case 'SystemConfigMachineLearningDto':
|
|
|
|
return SystemConfigMachineLearningDto.fromJson(value);
|
2022-12-09 13:51:42 -07:00
|
|
|
case 'SystemConfigOAuthDto':
|
|
|
|
return SystemConfigOAuthDto.fromJson(value);
|
2023-01-09 14:32:58 -07:00
|
|
|
case 'SystemConfigPasswordLoginDto':
|
|
|
|
return SystemConfigPasswordLoginDto.fromJson(value);
|
2022-12-16 13:26:12 -07:00
|
|
|
case 'SystemConfigStorageTemplateDto':
|
|
|
|
return SystemConfigStorageTemplateDto.fromJson(value);
|
|
|
|
case 'SystemConfigTemplateStorageOptionDto':
|
|
|
|
return SystemConfigTemplateStorageOptionDto.fromJson(value);
|
2023-08-08 07:39:51 -07:00
|
|
|
case 'SystemConfigThumbnailDto':
|
|
|
|
return SystemConfigThumbnailDto.fromJson(value);
|
2022-12-05 10:56:44 -07:00
|
|
|
case 'TagResponseDto':
|
|
|
|
return TagResponseDto.fromJson(value);
|
|
|
|
case 'TagTypeEnum':
|
|
|
|
return TagTypeEnumTypeTransformer().decode(value);
|
2022-07-15 21:18:17 -07:00
|
|
|
case 'ThumbnailFormat':
|
|
|
|
return ThumbnailFormatTypeTransformer().decode(value);
|
2023-08-04 14:07:15 -07:00
|
|
|
case 'TimeBucketResponseDto':
|
|
|
|
return TimeBucketResponseDto.fromJson(value);
|
|
|
|
case 'TimeBucketSize':
|
|
|
|
return TimeBucketSizeTypeTransformer().decode(value);
|
2023-08-07 13:35:25 -07:00
|
|
|
case 'ToneMapping':
|
|
|
|
return ToneMappingTypeTransformer().decode(value);
|
2023-08-01 18:56:10 -07:00
|
|
|
case 'TranscodeHWAccel':
|
|
|
|
return TranscodeHWAccelTypeTransformer().decode(value);
|
2023-07-08 19:43:11 -07:00
|
|
|
case 'TranscodePolicy':
|
|
|
|
return TranscodePolicyTypeTransformer().decode(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'UpdateAlbumDto':
|
|
|
|
return UpdateAlbumDto.fromJson(value);
|
2022-11-08 09:20:36 -07:00
|
|
|
case 'UpdateAssetDto':
|
|
|
|
return UpdateAssetDto.fromJson(value);
|
2022-12-05 10:56:44 -07:00
|
|
|
case 'UpdateTagDto':
|
|
|
|
return UpdateTagDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'UpdateUserDto':
|
|
|
|
return UpdateUserDto.fromJson(value);
|
2022-10-23 14:54:54 -07:00
|
|
|
case 'UsageByUserDto':
|
|
|
|
return UsageByUserDto.fromJson(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
case 'UserCountResponseDto':
|
|
|
|
return UserCountResponseDto.fromJson(value);
|
|
|
|
case 'UserResponseDto':
|
|
|
|
return UserResponseDto.fromJson(value);
|
|
|
|
case 'ValidateAccessTokenResponseDto':
|
|
|
|
return ValidateAccessTokenResponseDto.fromJson(value);
|
2023-07-08 19:43:11 -07:00
|
|
|
case 'VideoCodec':
|
|
|
|
return VideoCodecTypeTransformer().decode(value);
|
2022-07-13 05:23:48 -07:00
|
|
|
default:
|
|
|
|
dynamic match;
|
|
|
|
if (value is List && (match = _regList.firstMatch(targetType)?.group(1)) != null) {
|
|
|
|
return value
|
|
|
|
.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,))
|
|
|
|
.toList(growable: growable);
|
|
|
|
}
|
|
|
|
if (value is Set && (match = _regSet.firstMatch(targetType)?.group(1)) != null) {
|
|
|
|
return value
|
|
|
|
.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,))
|
|
|
|
.toSet();
|
|
|
|
}
|
|
|
|
if (value is Map && (match = _regMap.firstMatch(targetType)?.group(1)) != null) {
|
|
|
|
return Map<String, dynamic>.fromIterables(
|
|
|
|
value.keys.cast<String>(),
|
|
|
|
value.values.map<dynamic>((dynamic v) => _deserialize(v, match, growable: growable,)),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} on Exception catch (error, trace) {
|
|
|
|
throw ApiException.withInner(HttpStatus.internalServerError, 'Exception during deserialization.', error, trace,);
|
|
|
|
}
|
|
|
|
throw ApiException(HttpStatus.internalServerError, 'Could not find a suitable class for deserialization',);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Primarily intended for use in an isolate.
|
|
|
|
class DeserializationMessage {
|
|
|
|
const DeserializationMessage({
|
|
|
|
required this.json,
|
|
|
|
required this.targetType,
|
|
|
|
this.growable = false,
|
|
|
|
});
|
|
|
|
|
|
|
|
/// The JSON value to deserialize.
|
|
|
|
final String json;
|
|
|
|
|
|
|
|
/// Target type to deserialize to.
|
|
|
|
final String targetType;
|
|
|
|
|
|
|
|
/// Whether to make deserialized lists or maps growable.
|
|
|
|
final bool growable;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Primarily intended for use in an isolate.
|
|
|
|
Future<dynamic> deserializeAsync(DeserializationMessage message) async {
|
|
|
|
// Remove all spaces. Necessary for regular expressions as well.
|
|
|
|
final targetType = message.targetType.replaceAll(' ', '');
|
|
|
|
|
|
|
|
// If the expected target type is String, nothing to do...
|
|
|
|
return targetType == 'String'
|
|
|
|
? message.json
|
|
|
|
: ApiClient._deserialize(
|
|
|
|
jsonDecode(message.json),
|
|
|
|
targetType,
|
|
|
|
growable: message.growable,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Primarily intended for use in an isolate.
|
|
|
|
Future<String> serializeAsync(Object? value) async => value == null ? '' : json.encode(value);
|