mirror of
https://github.com/immich-app/immich.git
synced 2024-12-03 09:59:32 +02:00
b2f2be3485
* refactor: library scanning fix tests remove offline files step cleanup library service improve tests cleanup tests add db migration fix e2e cleanup openapi fix tests fix tests update docs update docs update mobile code fix formatting don't remove assets from library with invalid import path use trash for offline files add migration simplify scan endpoint cleanup library panel fix library tests e2e lint fix e2e trash e2e fix lint add asset trash tests add more tests ensure thumbs are generated cleanup svelte cleanup queue names fix tests fix lint add warning due to trash fix trash tests fix lint fix tests Admin message for offline asset fix comments Update web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> add permission to library scan endpoint revert asset interface sort add trash reason to shared link stub improve path view in offline update docs improve trash performance fix comments remove stray comment * refactor: add back isOffline and remove trashReason from asset, change sync job flow * chore(server): drop coverage to 80% for functions * chore: rebase and generated files --------- Co-authored-by: Zack Pollard <zackpollard@ymail.com>
1031 lines
32 KiB
Dart
Generated
1031 lines
32 KiB
Dart
Generated
//
|
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
|
//
|
|
// @dart=2.18
|
|
|
|
// 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 AssetsApi {
|
|
AssetsApi([ApiClient? apiClient]) : apiClient = apiClient ?? defaultApiClient;
|
|
|
|
final ApiClient apiClient;
|
|
|
|
/// Checks if assets exist by checksums
|
|
///
|
|
/// Note: This method returns the HTTP [Response].
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [AssetBulkUploadCheckDto] assetBulkUploadCheckDto (required):
|
|
Future<Response> checkBulkUploadWithHttpInfo(AssetBulkUploadCheckDto assetBulkUploadCheckDto,) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/bulk-upload-check';
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody = assetBulkUploadCheckDto;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
const contentTypes = <String>['application/json'];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'POST',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Checks if assets exist by checksums
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [AssetBulkUploadCheckDto] assetBulkUploadCheckDto (required):
|
|
Future<AssetBulkUploadCheckResponseDto?> checkBulkUpload(AssetBulkUploadCheckDto assetBulkUploadCheckDto,) async {
|
|
final response = await checkBulkUploadWithHttpInfo(assetBulkUploadCheckDto,);
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'AssetBulkUploadCheckResponseDto',) as AssetBulkUploadCheckResponseDto;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Checks if multiple assets exist on the server and returns all existing - used by background backup
|
|
///
|
|
/// Note: This method returns the HTTP [Response].
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [CheckExistingAssetsDto] checkExistingAssetsDto (required):
|
|
Future<Response> checkExistingAssetsWithHttpInfo(CheckExistingAssetsDto checkExistingAssetsDto,) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/exist';
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody = checkExistingAssetsDto;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
const contentTypes = <String>['application/json'];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'POST',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Checks if multiple assets exist on the server and returns all existing - used by background backup
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [CheckExistingAssetsDto] checkExistingAssetsDto (required):
|
|
Future<CheckExistingAssetsResponseDto?> checkExistingAssets(CheckExistingAssetsDto checkExistingAssetsDto,) async {
|
|
final response = await checkExistingAssetsWithHttpInfo(checkExistingAssetsDto,);
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'CheckExistingAssetsResponseDto',) as CheckExistingAssetsResponseDto;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Performs an HTTP 'DELETE /assets' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [AssetBulkDeleteDto] assetBulkDeleteDto (required):
|
|
Future<Response> deleteAssetsWithHttpInfo(AssetBulkDeleteDto assetBulkDeleteDto,) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets';
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody = assetBulkDeleteDto;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
const contentTypes = <String>['application/json'];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'DELETE',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [AssetBulkDeleteDto] assetBulkDeleteDto (required):
|
|
Future<void> deleteAssets(AssetBulkDeleteDto assetBulkDeleteDto,) async {
|
|
final response = await deleteAssetsWithHttpInfo(assetBulkDeleteDto,);
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
}
|
|
|
|
/// Performs an HTTP 'GET /assets/{id}/original' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [String] key:
|
|
Future<Response> downloadAssetWithHttpInfo(String id, { String? key, }) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/{id}/original'
|
|
.replaceAll('{id}', id);
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
if (key != null) {
|
|
queryParams.addAll(_queryParams('', 'key', key));
|
|
}
|
|
|
|
const contentTypes = <String>[];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'GET',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [String] key:
|
|
Future<MultipartFile?> downloadAsset(String id, { String? key, }) async {
|
|
final response = await downloadAssetWithHttpInfo(id, key: key, );
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'MultipartFile',) as MultipartFile;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Get all asset of a device that are in the database, ID only.
|
|
///
|
|
/// Note: This method returns the HTTP [Response].
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [String] deviceId (required):
|
|
Future<Response> getAllUserAssetsByDeviceIdWithHttpInfo(String deviceId,) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/device/{deviceId}'
|
|
.replaceAll('{deviceId}', deviceId);
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
const contentTypes = <String>[];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'GET',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Get all asset of a device that are in the database, ID only.
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [String] deviceId (required):
|
|
Future<List<String>?> getAllUserAssetsByDeviceId(String deviceId,) async {
|
|
final response = await getAllUserAssetsByDeviceIdWithHttpInfo(deviceId,);
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
final responseBody = await _decodeBodyBytes(response);
|
|
return (await apiClient.deserializeAsync(responseBody, 'List<String>') as List)
|
|
.cast<String>()
|
|
.toList(growable: false);
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Performs an HTTP 'GET /assets/{id}' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [String] key:
|
|
Future<Response> getAssetInfoWithHttpInfo(String id, { String? key, }) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/{id}'
|
|
.replaceAll('{id}', id);
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
if (key != null) {
|
|
queryParams.addAll(_queryParams('', 'key', key));
|
|
}
|
|
|
|
const contentTypes = <String>[];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'GET',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [String] key:
|
|
Future<AssetResponseDto?> getAssetInfo(String id, { String? key, }) async {
|
|
final response = await getAssetInfoWithHttpInfo(id, key: key, );
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'AssetResponseDto',) as AssetResponseDto;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Performs an HTTP 'GET /assets/statistics' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [bool] isArchived:
|
|
///
|
|
/// * [bool] isFavorite:
|
|
///
|
|
/// * [bool] isTrashed:
|
|
Future<Response> getAssetStatisticsWithHttpInfo({ bool? isArchived, bool? isFavorite, bool? isTrashed, }) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/statistics';
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
if (isArchived != null) {
|
|
queryParams.addAll(_queryParams('', 'isArchived', isArchived));
|
|
}
|
|
if (isFavorite != null) {
|
|
queryParams.addAll(_queryParams('', 'isFavorite', isFavorite));
|
|
}
|
|
if (isTrashed != null) {
|
|
queryParams.addAll(_queryParams('', 'isTrashed', isTrashed));
|
|
}
|
|
|
|
const contentTypes = <String>[];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'GET',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [bool] isArchived:
|
|
///
|
|
/// * [bool] isFavorite:
|
|
///
|
|
/// * [bool] isTrashed:
|
|
Future<AssetStatsResponseDto?> getAssetStatistics({ bool? isArchived, bool? isFavorite, bool? isTrashed, }) async {
|
|
final response = await getAssetStatisticsWithHttpInfo( isArchived: isArchived, isFavorite: isFavorite, isTrashed: isTrashed, );
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'AssetStatsResponseDto',) as AssetStatsResponseDto;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Performs an HTTP 'GET /assets/memory-lane' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [int] day (required):
|
|
///
|
|
/// * [int] month (required):
|
|
Future<Response> getMemoryLaneWithHttpInfo(int day, int month,) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/memory-lane';
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
queryParams.addAll(_queryParams('', 'day', day));
|
|
queryParams.addAll(_queryParams('', 'month', month));
|
|
|
|
const contentTypes = <String>[];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'GET',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [int] day (required):
|
|
///
|
|
/// * [int] month (required):
|
|
Future<List<MemoryLaneResponseDto>?> getMemoryLane(int day, int month,) async {
|
|
final response = await getMemoryLaneWithHttpInfo(day, month,);
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
final responseBody = await _decodeBodyBytes(response);
|
|
return (await apiClient.deserializeAsync(responseBody, 'List<MemoryLaneResponseDto>') as List)
|
|
.cast<MemoryLaneResponseDto>()
|
|
.toList(growable: false);
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// This property was deprecated in v1.116.0
|
|
///
|
|
/// Note: This method returns the HTTP [Response].
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [num] count:
|
|
Future<Response> getRandomWithHttpInfo({ num? count, }) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/random';
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
if (count != null) {
|
|
queryParams.addAll(_queryParams('', 'count', count));
|
|
}
|
|
|
|
const contentTypes = <String>[];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'GET',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// This property was deprecated in v1.116.0
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [num] count:
|
|
Future<List<AssetResponseDto>?> getRandom({ num? count, }) async {
|
|
final response = await getRandomWithHttpInfo( count: count, );
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
final responseBody = await _decodeBodyBytes(response);
|
|
return (await apiClient.deserializeAsync(responseBody, 'List<AssetResponseDto>') as List)
|
|
.cast<AssetResponseDto>()
|
|
.toList(growable: false);
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Performs an HTTP 'GET /assets/{id}/video/playback' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [String] key:
|
|
Future<Response> playAssetVideoWithHttpInfo(String id, { String? key, }) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/{id}/video/playback'
|
|
.replaceAll('{id}', id);
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
if (key != null) {
|
|
queryParams.addAll(_queryParams('', 'key', key));
|
|
}
|
|
|
|
const contentTypes = <String>[];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'GET',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [String] key:
|
|
Future<MultipartFile?> playAssetVideo(String id, { String? key, }) async {
|
|
final response = await playAssetVideoWithHttpInfo(id, key: key, );
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'MultipartFile',) as MultipartFile;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Replace the asset with new file, without changing its id
|
|
///
|
|
/// Note: This method returns the HTTP [Response].
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [MultipartFile] assetData (required):
|
|
///
|
|
/// * [String] deviceAssetId (required):
|
|
///
|
|
/// * [String] deviceId (required):
|
|
///
|
|
/// * [DateTime] fileCreatedAt (required):
|
|
///
|
|
/// * [DateTime] fileModifiedAt (required):
|
|
///
|
|
/// * [String] key:
|
|
///
|
|
/// * [String] duration:
|
|
Future<Response> replaceAssetWithHttpInfo(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? duration, }) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/{id}/original'
|
|
.replaceAll('{id}', id);
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
if (key != null) {
|
|
queryParams.addAll(_queryParams('', 'key', key));
|
|
}
|
|
|
|
const contentTypes = <String>['multipart/form-data'];
|
|
|
|
bool hasFields = false;
|
|
final mp = MultipartRequest('PUT', Uri.parse(path));
|
|
if (assetData != null) {
|
|
hasFields = true;
|
|
mp.fields[r'assetData'] = assetData.field;
|
|
mp.files.add(assetData);
|
|
}
|
|
if (deviceAssetId != null) {
|
|
hasFields = true;
|
|
mp.fields[r'deviceAssetId'] = parameterToString(deviceAssetId);
|
|
}
|
|
if (deviceId != null) {
|
|
hasFields = true;
|
|
mp.fields[r'deviceId'] = parameterToString(deviceId);
|
|
}
|
|
if (duration != null) {
|
|
hasFields = true;
|
|
mp.fields[r'duration'] = parameterToString(duration);
|
|
}
|
|
if (fileCreatedAt != null) {
|
|
hasFields = true;
|
|
mp.fields[r'fileCreatedAt'] = parameterToString(fileCreatedAt);
|
|
}
|
|
if (fileModifiedAt != null) {
|
|
hasFields = true;
|
|
mp.fields[r'fileModifiedAt'] = parameterToString(fileModifiedAt);
|
|
}
|
|
if (hasFields) {
|
|
postBody = mp;
|
|
}
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'PUT',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Replace the asset with new file, without changing its id
|
|
///
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [MultipartFile] assetData (required):
|
|
///
|
|
/// * [String] deviceAssetId (required):
|
|
///
|
|
/// * [String] deviceId (required):
|
|
///
|
|
/// * [DateTime] fileCreatedAt (required):
|
|
///
|
|
/// * [DateTime] fileModifiedAt (required):
|
|
///
|
|
/// * [String] key:
|
|
///
|
|
/// * [String] duration:
|
|
Future<AssetMediaResponseDto?> replaceAsset(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? duration, }) async {
|
|
final response = await replaceAssetWithHttpInfo(id, assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, key: key, duration: duration, );
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'AssetMediaResponseDto',) as AssetMediaResponseDto;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Performs an HTTP 'POST /assets/jobs' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [AssetJobsDto] assetJobsDto (required):
|
|
Future<Response> runAssetJobsWithHttpInfo(AssetJobsDto assetJobsDto,) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/jobs';
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody = assetJobsDto;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
const contentTypes = <String>['application/json'];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'POST',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [AssetJobsDto] assetJobsDto (required):
|
|
Future<void> runAssetJobs(AssetJobsDto assetJobsDto,) async {
|
|
final response = await runAssetJobsWithHttpInfo(assetJobsDto,);
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
}
|
|
|
|
/// Performs an HTTP 'PUT /assets/{id}' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [UpdateAssetDto] updateAssetDto (required):
|
|
Future<Response> updateAssetWithHttpInfo(String id, UpdateAssetDto updateAssetDto,) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/{id}'
|
|
.replaceAll('{id}', id);
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody = updateAssetDto;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
const contentTypes = <String>['application/json'];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'PUT',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [UpdateAssetDto] updateAssetDto (required):
|
|
Future<AssetResponseDto?> updateAsset(String id, UpdateAssetDto updateAssetDto,) async {
|
|
final response = await updateAssetWithHttpInfo(id, updateAssetDto,);
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'AssetResponseDto',) as AssetResponseDto;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Performs an HTTP 'PUT /assets' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [AssetBulkUpdateDto] assetBulkUpdateDto (required):
|
|
Future<Response> updateAssetsWithHttpInfo(AssetBulkUpdateDto assetBulkUpdateDto,) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets';
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody = assetBulkUpdateDto;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
const contentTypes = <String>['application/json'];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'PUT',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [AssetBulkUpdateDto] assetBulkUpdateDto (required):
|
|
Future<void> updateAssets(AssetBulkUpdateDto assetBulkUpdateDto,) async {
|
|
final response = await updateAssetsWithHttpInfo(assetBulkUpdateDto,);
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
}
|
|
|
|
/// Performs an HTTP 'POST /assets' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [MultipartFile] assetData (required):
|
|
///
|
|
/// * [String] deviceAssetId (required):
|
|
///
|
|
/// * [String] deviceId (required):
|
|
///
|
|
/// * [DateTime] fileCreatedAt (required):
|
|
///
|
|
/// * [DateTime] fileModifiedAt (required):
|
|
///
|
|
/// * [String] key:
|
|
///
|
|
/// * [String] xImmichChecksum:
|
|
/// sha1 checksum that can be used for duplicate detection before the file is uploaded
|
|
///
|
|
/// * [String] duration:
|
|
///
|
|
/// * [bool] isArchived:
|
|
///
|
|
/// * [bool] isFavorite:
|
|
///
|
|
/// * [bool] isVisible:
|
|
///
|
|
/// * [String] livePhotoVideoId:
|
|
///
|
|
/// * [MultipartFile] sidecarData:
|
|
Future<Response> uploadAssetWithHttpInfo(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? xImmichChecksum, String? duration, bool? isArchived, bool? isFavorite, bool? isVisible, String? livePhotoVideoId, MultipartFile? sidecarData, }) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets';
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
if (key != null) {
|
|
queryParams.addAll(_queryParams('', 'key', key));
|
|
}
|
|
|
|
if (xImmichChecksum != null) {
|
|
headerParams[r'x-immich-checksum'] = parameterToString(xImmichChecksum);
|
|
}
|
|
|
|
const contentTypes = <String>['multipart/form-data'];
|
|
|
|
bool hasFields = false;
|
|
final mp = MultipartRequest('POST', Uri.parse(path));
|
|
if (assetData != null) {
|
|
hasFields = true;
|
|
mp.fields[r'assetData'] = assetData.field;
|
|
mp.files.add(assetData);
|
|
}
|
|
if (deviceAssetId != null) {
|
|
hasFields = true;
|
|
mp.fields[r'deviceAssetId'] = parameterToString(deviceAssetId);
|
|
}
|
|
if (deviceId != null) {
|
|
hasFields = true;
|
|
mp.fields[r'deviceId'] = parameterToString(deviceId);
|
|
}
|
|
if (duration != null) {
|
|
hasFields = true;
|
|
mp.fields[r'duration'] = parameterToString(duration);
|
|
}
|
|
if (fileCreatedAt != null) {
|
|
hasFields = true;
|
|
mp.fields[r'fileCreatedAt'] = parameterToString(fileCreatedAt);
|
|
}
|
|
if (fileModifiedAt != null) {
|
|
hasFields = true;
|
|
mp.fields[r'fileModifiedAt'] = parameterToString(fileModifiedAt);
|
|
}
|
|
if (isArchived != null) {
|
|
hasFields = true;
|
|
mp.fields[r'isArchived'] = parameterToString(isArchived);
|
|
}
|
|
if (isFavorite != null) {
|
|
hasFields = true;
|
|
mp.fields[r'isFavorite'] = parameterToString(isFavorite);
|
|
}
|
|
if (isVisible != null) {
|
|
hasFields = true;
|
|
mp.fields[r'isVisible'] = parameterToString(isVisible);
|
|
}
|
|
if (livePhotoVideoId != null) {
|
|
hasFields = true;
|
|
mp.fields[r'livePhotoVideoId'] = parameterToString(livePhotoVideoId);
|
|
}
|
|
if (sidecarData != null) {
|
|
hasFields = true;
|
|
mp.fields[r'sidecarData'] = sidecarData.field;
|
|
mp.files.add(sidecarData);
|
|
}
|
|
if (hasFields) {
|
|
postBody = mp;
|
|
}
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'POST',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [MultipartFile] assetData (required):
|
|
///
|
|
/// * [String] deviceAssetId (required):
|
|
///
|
|
/// * [String] deviceId (required):
|
|
///
|
|
/// * [DateTime] fileCreatedAt (required):
|
|
///
|
|
/// * [DateTime] fileModifiedAt (required):
|
|
///
|
|
/// * [String] key:
|
|
///
|
|
/// * [String] xImmichChecksum:
|
|
/// sha1 checksum that can be used for duplicate detection before the file is uploaded
|
|
///
|
|
/// * [String] duration:
|
|
///
|
|
/// * [bool] isArchived:
|
|
///
|
|
/// * [bool] isFavorite:
|
|
///
|
|
/// * [bool] isVisible:
|
|
///
|
|
/// * [String] livePhotoVideoId:
|
|
///
|
|
/// * [MultipartFile] sidecarData:
|
|
Future<AssetMediaResponseDto?> uploadAsset(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? xImmichChecksum, String? duration, bool? isArchived, bool? isFavorite, bool? isVisible, String? livePhotoVideoId, MultipartFile? sidecarData, }) async {
|
|
final response = await uploadAssetWithHttpInfo(assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, key: key, xImmichChecksum: xImmichChecksum, duration: duration, isArchived: isArchived, isFavorite: isFavorite, isVisible: isVisible, livePhotoVideoId: livePhotoVideoId, sidecarData: sidecarData, );
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'AssetMediaResponseDto',) as AssetMediaResponseDto;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// Performs an HTTP 'GET /assets/{id}/thumbnail' operation and returns the [Response].
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [String] key:
|
|
///
|
|
/// * [AssetMediaSize] size:
|
|
Future<Response> viewAssetWithHttpInfo(String id, { String? key, AssetMediaSize? size, }) async {
|
|
// ignore: prefer_const_declarations
|
|
final path = r'/assets/{id}/thumbnail'
|
|
.replaceAll('{id}', id);
|
|
|
|
// ignore: prefer_final_locals
|
|
Object? postBody;
|
|
|
|
final queryParams = <QueryParam>[];
|
|
final headerParams = <String, String>{};
|
|
final formParams = <String, String>{};
|
|
|
|
if (key != null) {
|
|
queryParams.addAll(_queryParams('', 'key', key));
|
|
}
|
|
if (size != null) {
|
|
queryParams.addAll(_queryParams('', 'size', size));
|
|
}
|
|
|
|
const contentTypes = <String>[];
|
|
|
|
|
|
return apiClient.invokeAPI(
|
|
path,
|
|
'GET',
|
|
queryParams,
|
|
postBody,
|
|
headerParams,
|
|
formParams,
|
|
contentTypes.isEmpty ? null : contentTypes.first,
|
|
);
|
|
}
|
|
|
|
/// Parameters:
|
|
///
|
|
/// * [String] id (required):
|
|
///
|
|
/// * [String] key:
|
|
///
|
|
/// * [AssetMediaSize] size:
|
|
Future<MultipartFile?> viewAsset(String id, { String? key, AssetMediaSize? size, }) async {
|
|
final response = await viewAssetWithHttpInfo(id, key: key, size: size, );
|
|
if (response.statusCode >= HttpStatus.badRequest) {
|
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
|
}
|
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
|
// FormatException when trying to decode an empty string.
|
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'MultipartFile',) as MultipartFile;
|
|
|
|
}
|
|
return null;
|
|
}
|
|
}
|