mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
Merge remote-tracking branch 'origin/main' into feat/yucca-integration
This commit is contained in:
+53
@@ -424,6 +424,59 @@ class AuthenticationApi {
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Backchannel OAuth logout
|
||||
///
|
||||
/// Logout the OAuth account and invalidate the session specified by the sid claim or all sessions if the sid claim is not present.
|
||||
///
|
||||
/// Note: This method returns the HTTP [Response].
|
||||
///
|
||||
/// Parameters:
|
||||
///
|
||||
/// * [String] logoutToken (required):
|
||||
/// OAuth logout token
|
||||
Future<Response> logoutOAuthWithHttpInfo(String logoutToken,) async {
|
||||
// ignore: prefer_const_declarations
|
||||
final apiPath = r'/oauth/backchannel-logout';
|
||||
|
||||
// ignore: prefer_final_locals
|
||||
Object? postBody;
|
||||
|
||||
final queryParams = <QueryParam>[];
|
||||
final headerParams = <String, String>{};
|
||||
final formParams = <String, String>{};
|
||||
|
||||
const contentTypes = <String>['application/x-www-form-urlencoded'];
|
||||
|
||||
if (logoutToken != null) {
|
||||
formParams[r'logout_token'] = parameterToString(logoutToken);
|
||||
}
|
||||
|
||||
return apiClient.invokeAPI(
|
||||
apiPath,
|
||||
'POST',
|
||||
queryParams,
|
||||
postBody,
|
||||
headerParams,
|
||||
formParams,
|
||||
contentTypes.isEmpty ? null : contentTypes.first,
|
||||
);
|
||||
}
|
||||
|
||||
/// Backchannel OAuth logout
|
||||
///
|
||||
/// Logout the OAuth account and invalidate the session specified by the sid claim or all sessions if the sid claim is not present.
|
||||
///
|
||||
/// Parameters:
|
||||
///
|
||||
/// * [String] logoutToken (required):
|
||||
/// OAuth logout token
|
||||
Future<void> logoutOAuth(String logoutToken,) async {
|
||||
final response = await logoutOAuthWithHttpInfo(logoutToken,);
|
||||
if (response.statusCode >= HttpStatus.badRequest) {
|
||||
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||
}
|
||||
}
|
||||
|
||||
/// Redirect OAuth to mobile
|
||||
///
|
||||
/// Requests to this URL are automatically forwarded to the mobile app, and is used in some cases for OAuth redirecting.
|
||||
|
||||
Generated
-48
@@ -488,54 +488,6 @@ class ServerApi {
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Get theme
|
||||
///
|
||||
/// Retrieve the custom CSS, if existent.
|
||||
///
|
||||
/// Note: This method returns the HTTP [Response].
|
||||
Future<Response> getThemeWithHttpInfo() async {
|
||||
// ignore: prefer_const_declarations
|
||||
final apiPath = r'/server/theme';
|
||||
|
||||
// ignore: prefer_final_locals
|
||||
Object? postBody;
|
||||
|
||||
final queryParams = <QueryParam>[];
|
||||
final headerParams = <String, String>{};
|
||||
final formParams = <String, String>{};
|
||||
|
||||
const contentTypes = <String>[];
|
||||
|
||||
|
||||
return apiClient.invokeAPI(
|
||||
apiPath,
|
||||
'GET',
|
||||
queryParams,
|
||||
postBody,
|
||||
headerParams,
|
||||
formParams,
|
||||
contentTypes.isEmpty ? null : contentTypes.first,
|
||||
);
|
||||
}
|
||||
|
||||
/// Get theme
|
||||
///
|
||||
/// Retrieve the custom CSS, if existent.
|
||||
Future<ServerThemeDto?> getTheme() async {
|
||||
final response = await getThemeWithHttpInfo();
|
||||
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), 'ServerThemeDto',) as ServerThemeDto;
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Get version check status
|
||||
///
|
||||
/// Retrieve information about the last time the version check ran.
|
||||
|
||||
+8
-4
@@ -57,8 +57,8 @@ class AssetResponseDto {
|
||||
/// Duplicate group ID
|
||||
String? duplicateId;
|
||||
|
||||
/// Video duration (for videos)
|
||||
String duration;
|
||||
/// Video/gif duration in hh:mm:ss.SSS format (null for static images)
|
||||
String? duration;
|
||||
|
||||
///
|
||||
/// Please note: This property should have been non-nullable! Since the specification file
|
||||
@@ -209,7 +209,7 @@ class AssetResponseDto {
|
||||
(checksum.hashCode) +
|
||||
(createdAt.hashCode) +
|
||||
(duplicateId == null ? 0 : duplicateId!.hashCode) +
|
||||
(duration.hashCode) +
|
||||
(duration == null ? 0 : duration!.hashCode) +
|
||||
(exifInfo == null ? 0 : exifInfo!.hashCode) +
|
||||
(fileCreatedAt.hashCode) +
|
||||
(fileModifiedAt.hashCode) +
|
||||
@@ -252,7 +252,11 @@ class AssetResponseDto {
|
||||
} else {
|
||||
// json[r'duplicateId'] = null;
|
||||
}
|
||||
if (this.duration != null) {
|
||||
json[r'duration'] = this.duration;
|
||||
} else {
|
||||
// json[r'duration'] = null;
|
||||
}
|
||||
if (this.exifInfo != null) {
|
||||
json[r'exifInfo'] = this.exifInfo;
|
||||
} else {
|
||||
@@ -337,7 +341,7 @@ class AssetResponseDto {
|
||||
checksum: mapValueOfType<String>(json, r'checksum')!,
|
||||
createdAt: mapDateTime(json, r'createdAt', r'')!,
|
||||
duplicateId: mapValueOfType<String>(json, r'duplicateId'),
|
||||
duration: mapValueOfType<String>(json, r'duration')!,
|
||||
duration: mapValueOfType<String>(json, r'duration'),
|
||||
exifInfo: ExifResponseDto.fromJson(json[r'exifInfo']),
|
||||
fileCreatedAt: mapDateTime(json, r'fileCreatedAt', r'')!,
|
||||
fileModifiedAt: mapDateTime(json, r'fileModifiedAt', r'')!,
|
||||
|
||||
-100
@@ -1,100 +0,0 @@
|
||||
//
|
||||
// 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 ServerThemeDto {
|
||||
/// Returns a new [ServerThemeDto] instance.
|
||||
ServerThemeDto({
|
||||
required this.customCss,
|
||||
});
|
||||
|
||||
/// Custom CSS for theming
|
||||
String customCss;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) => identical(this, other) || other is ServerThemeDto &&
|
||||
other.customCss == customCss;
|
||||
|
||||
@override
|
||||
int get hashCode =>
|
||||
// ignore: unnecessary_parenthesis
|
||||
(customCss.hashCode);
|
||||
|
||||
@override
|
||||
String toString() => 'ServerThemeDto[customCss=$customCss]';
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final json = <String, dynamic>{};
|
||||
json[r'customCss'] = this.customCss;
|
||||
return json;
|
||||
}
|
||||
|
||||
/// Returns a new [ServerThemeDto] instance and imports its values from
|
||||
/// [value] if it's a [Map], null otherwise.
|
||||
// ignore: prefer_constructors_over_static_methods
|
||||
static ServerThemeDto? fromJson(dynamic value) {
|
||||
upgradeDto(value, "ServerThemeDto");
|
||||
if (value is Map) {
|
||||
final json = value.cast<String, dynamic>();
|
||||
|
||||
return ServerThemeDto(
|
||||
customCss: mapValueOfType<String>(json, r'customCss')!,
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
static List<ServerThemeDto> listFromJson(dynamic json, {bool growable = false,}) {
|
||||
final result = <ServerThemeDto>[];
|
||||
if (json is List && json.isNotEmpty) {
|
||||
for (final row in json) {
|
||||
final value = ServerThemeDto.fromJson(row);
|
||||
if (value != null) {
|
||||
result.add(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result.toList(growable: growable);
|
||||
}
|
||||
|
||||
static Map<String, ServerThemeDto> mapFromJson(dynamic json) {
|
||||
final map = <String, ServerThemeDto>{};
|
||||
if (json is Map && json.isNotEmpty) {
|
||||
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
|
||||
for (final entry in json.entries) {
|
||||
final value = ServerThemeDto.fromJson(entry.value);
|
||||
if (value != null) {
|
||||
map[entry.key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
// maps a json object with a list of ServerThemeDto-objects as value to a dart map
|
||||
static Map<String, List<ServerThemeDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
|
||||
final map = <String, List<ServerThemeDto>>{};
|
||||
if (json is Map && json.isNotEmpty) {
|
||||
// ignore: parameter_assignments
|
||||
json = json.cast<String, dynamic>();
|
||||
for (final entry in json.entries) {
|
||||
map[entry.key] = ServerThemeDto.listFromJson(entry.value, growable: growable,);
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
/// The list of required keys that must be present in a JSON.
|
||||
static const requiredKeys = <String>{
|
||||
'customCss',
|
||||
};
|
||||
}
|
||||
|
||||
+28
-1
@@ -13,6 +13,7 @@ part of openapi.api;
|
||||
class SystemConfigOAuthDto {
|
||||
/// Returns a new [SystemConfigOAuthDto] instance.
|
||||
SystemConfigOAuthDto({
|
||||
required this.allowInsecureRequests,
|
||||
required this.autoLaunch,
|
||||
required this.autoRegister,
|
||||
required this.buttonText,
|
||||
@@ -20,10 +21,12 @@ class SystemConfigOAuthDto {
|
||||
required this.clientSecret,
|
||||
required this.defaultStorageQuota,
|
||||
required this.enabled,
|
||||
required this.endSessionEndpoint,
|
||||
required this.issuerUrl,
|
||||
required this.mobileOverrideEnabled,
|
||||
required this.mobileRedirectUri,
|
||||
required this.profileSigningAlgorithm,
|
||||
required this.prompt,
|
||||
required this.roleClaim,
|
||||
required this.scope,
|
||||
required this.signingAlgorithm,
|
||||
@@ -33,6 +36,9 @@ class SystemConfigOAuthDto {
|
||||
required this.tokenEndpointAuthMethod,
|
||||
});
|
||||
|
||||
/// Allow insecure requests
|
||||
bool allowInsecureRequests;
|
||||
|
||||
/// Auto launch
|
||||
bool autoLaunch;
|
||||
|
||||
@@ -56,6 +62,9 @@ class SystemConfigOAuthDto {
|
||||
/// Enabled
|
||||
bool enabled;
|
||||
|
||||
/// End session endpoint
|
||||
String endSessionEndpoint;
|
||||
|
||||
/// Issuer URL
|
||||
String issuerUrl;
|
||||
|
||||
@@ -68,6 +77,9 @@ class SystemConfigOAuthDto {
|
||||
/// Profile signing algorithm
|
||||
String profileSigningAlgorithm;
|
||||
|
||||
/// OAuth prompt parameter (e.g. select_account, login, consent)
|
||||
String prompt;
|
||||
|
||||
/// Role claim
|
||||
String roleClaim;
|
||||
|
||||
@@ -93,6 +105,7 @@ class SystemConfigOAuthDto {
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) => identical(this, other) || other is SystemConfigOAuthDto &&
|
||||
other.allowInsecureRequests == allowInsecureRequests &&
|
||||
other.autoLaunch == autoLaunch &&
|
||||
other.autoRegister == autoRegister &&
|
||||
other.buttonText == buttonText &&
|
||||
@@ -100,10 +113,12 @@ class SystemConfigOAuthDto {
|
||||
other.clientSecret == clientSecret &&
|
||||
other.defaultStorageQuota == defaultStorageQuota &&
|
||||
other.enabled == enabled &&
|
||||
other.endSessionEndpoint == endSessionEndpoint &&
|
||||
other.issuerUrl == issuerUrl &&
|
||||
other.mobileOverrideEnabled == mobileOverrideEnabled &&
|
||||
other.mobileRedirectUri == mobileRedirectUri &&
|
||||
other.profileSigningAlgorithm == profileSigningAlgorithm &&
|
||||
other.prompt == prompt &&
|
||||
other.roleClaim == roleClaim &&
|
||||
other.scope == scope &&
|
||||
other.signingAlgorithm == signingAlgorithm &&
|
||||
@@ -115,6 +130,7 @@ class SystemConfigOAuthDto {
|
||||
@override
|
||||
int get hashCode =>
|
||||
// ignore: unnecessary_parenthesis
|
||||
(allowInsecureRequests.hashCode) +
|
||||
(autoLaunch.hashCode) +
|
||||
(autoRegister.hashCode) +
|
||||
(buttonText.hashCode) +
|
||||
@@ -122,10 +138,12 @@ class SystemConfigOAuthDto {
|
||||
(clientSecret.hashCode) +
|
||||
(defaultStorageQuota == null ? 0 : defaultStorageQuota!.hashCode) +
|
||||
(enabled.hashCode) +
|
||||
(endSessionEndpoint.hashCode) +
|
||||
(issuerUrl.hashCode) +
|
||||
(mobileOverrideEnabled.hashCode) +
|
||||
(mobileRedirectUri.hashCode) +
|
||||
(profileSigningAlgorithm.hashCode) +
|
||||
(prompt.hashCode) +
|
||||
(roleClaim.hashCode) +
|
||||
(scope.hashCode) +
|
||||
(signingAlgorithm.hashCode) +
|
||||
@@ -135,10 +153,11 @@ class SystemConfigOAuthDto {
|
||||
(tokenEndpointAuthMethod.hashCode);
|
||||
|
||||
@override
|
||||
String toString() => 'SystemConfigOAuthDto[autoLaunch=$autoLaunch, autoRegister=$autoRegister, buttonText=$buttonText, clientId=$clientId, clientSecret=$clientSecret, defaultStorageQuota=$defaultStorageQuota, enabled=$enabled, issuerUrl=$issuerUrl, mobileOverrideEnabled=$mobileOverrideEnabled, mobileRedirectUri=$mobileRedirectUri, profileSigningAlgorithm=$profileSigningAlgorithm, roleClaim=$roleClaim, scope=$scope, signingAlgorithm=$signingAlgorithm, storageLabelClaim=$storageLabelClaim, storageQuotaClaim=$storageQuotaClaim, timeout=$timeout, tokenEndpointAuthMethod=$tokenEndpointAuthMethod]';
|
||||
String toString() => 'SystemConfigOAuthDto[allowInsecureRequests=$allowInsecureRequests, autoLaunch=$autoLaunch, autoRegister=$autoRegister, buttonText=$buttonText, clientId=$clientId, clientSecret=$clientSecret, defaultStorageQuota=$defaultStorageQuota, enabled=$enabled, endSessionEndpoint=$endSessionEndpoint, issuerUrl=$issuerUrl, mobileOverrideEnabled=$mobileOverrideEnabled, mobileRedirectUri=$mobileRedirectUri, profileSigningAlgorithm=$profileSigningAlgorithm, prompt=$prompt, roleClaim=$roleClaim, scope=$scope, signingAlgorithm=$signingAlgorithm, storageLabelClaim=$storageLabelClaim, storageQuotaClaim=$storageQuotaClaim, timeout=$timeout, tokenEndpointAuthMethod=$tokenEndpointAuthMethod]';
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final json = <String, dynamic>{};
|
||||
json[r'allowInsecureRequests'] = this.allowInsecureRequests;
|
||||
json[r'autoLaunch'] = this.autoLaunch;
|
||||
json[r'autoRegister'] = this.autoRegister;
|
||||
json[r'buttonText'] = this.buttonText;
|
||||
@@ -150,10 +169,12 @@ class SystemConfigOAuthDto {
|
||||
// json[r'defaultStorageQuota'] = null;
|
||||
}
|
||||
json[r'enabled'] = this.enabled;
|
||||
json[r'endSessionEndpoint'] = this.endSessionEndpoint;
|
||||
json[r'issuerUrl'] = this.issuerUrl;
|
||||
json[r'mobileOverrideEnabled'] = this.mobileOverrideEnabled;
|
||||
json[r'mobileRedirectUri'] = this.mobileRedirectUri;
|
||||
json[r'profileSigningAlgorithm'] = this.profileSigningAlgorithm;
|
||||
json[r'prompt'] = this.prompt;
|
||||
json[r'roleClaim'] = this.roleClaim;
|
||||
json[r'scope'] = this.scope;
|
||||
json[r'signingAlgorithm'] = this.signingAlgorithm;
|
||||
@@ -173,6 +194,7 @@ class SystemConfigOAuthDto {
|
||||
final json = value.cast<String, dynamic>();
|
||||
|
||||
return SystemConfigOAuthDto(
|
||||
allowInsecureRequests: mapValueOfType<bool>(json, r'allowInsecureRequests')!,
|
||||
autoLaunch: mapValueOfType<bool>(json, r'autoLaunch')!,
|
||||
autoRegister: mapValueOfType<bool>(json, r'autoRegister')!,
|
||||
buttonText: mapValueOfType<String>(json, r'buttonText')!,
|
||||
@@ -182,10 +204,12 @@ class SystemConfigOAuthDto {
|
||||
? null
|
||||
: num.parse('${json[r'defaultStorageQuota']}'),
|
||||
enabled: mapValueOfType<bool>(json, r'enabled')!,
|
||||
endSessionEndpoint: mapValueOfType<String>(json, r'endSessionEndpoint')!,
|
||||
issuerUrl: mapValueOfType<String>(json, r'issuerUrl')!,
|
||||
mobileOverrideEnabled: mapValueOfType<bool>(json, r'mobileOverrideEnabled')!,
|
||||
mobileRedirectUri: mapValueOfType<String>(json, r'mobileRedirectUri')!,
|
||||
profileSigningAlgorithm: mapValueOfType<String>(json, r'profileSigningAlgorithm')!,
|
||||
prompt: mapValueOfType<String>(json, r'prompt')!,
|
||||
roleClaim: mapValueOfType<String>(json, r'roleClaim')!,
|
||||
scope: mapValueOfType<String>(json, r'scope')!,
|
||||
signingAlgorithm: mapValueOfType<String>(json, r'signingAlgorithm')!,
|
||||
@@ -240,6 +264,7 @@ class SystemConfigOAuthDto {
|
||||
|
||||
/// The list of required keys that must be present in a JSON.
|
||||
static const requiredKeys = <String>{
|
||||
'allowInsecureRequests',
|
||||
'autoLaunch',
|
||||
'autoRegister',
|
||||
'buttonText',
|
||||
@@ -247,10 +272,12 @@ class SystemConfigOAuthDto {
|
||||
'clientSecret',
|
||||
'defaultStorageQuota',
|
||||
'enabled',
|
||||
'endSessionEndpoint',
|
||||
'issuerUrl',
|
||||
'mobileOverrideEnabled',
|
||||
'mobileRedirectUri',
|
||||
'profileSigningAlgorithm',
|
||||
'prompt',
|
||||
'roleClaim',
|
||||
'scope',
|
||||
'signingAlgorithm',
|
||||
|
||||
@@ -39,7 +39,7 @@ class TimeBucketAssetResponseDto {
|
||||
/// Array of country names extracted from EXIF GPS data
|
||||
List<String?> country;
|
||||
|
||||
/// Array of video durations in HH:MM:SS format (null for images)
|
||||
/// Array of video/gif durations in hh:mm:ss.SSS format (null for static images)
|
||||
List<String?> duration;
|
||||
|
||||
/// Array of file creation timestamps in UTC
|
||||
|
||||
Reference in New Issue
Block a user