A framework for building convergent cross-platform Nextcloud clients using Flutter.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

832 lines
33 KiB

// ignore_for_file: camel_case_types
// ignore_for_file: public_member_api_docs
import 'dart:convert';
import 'dart:typed_data';
import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value/json_object.dart';
import 'package:built_value/serializer.dart';
import 'package:built_value/standard_json_plugin.dart';
import 'package:dynamite_runtime/content_string.dart';
import 'package:dynamite_runtime/http_client.dart';
import 'package:universal_io/io.dart';
export 'package:dynamite_runtime/http_client.dart';
part 'theming.openapi.g.dart';
class ThemingResponse<T, U> extends DynamiteResponse<T, U> {
ThemingResponse(
super.data,
super.headers,
);
@override
String toString() => 'ThemingResponse(data: $data, headers: $headers)';
}
class ThemingApiException extends DynamiteApiException {
ThemingApiException(
super.statusCode,
super.headers,
super.body,
);
static Future<ThemingApiException> fromResponse(final HttpClientResponse response) async {
final data = await response.bodyBytes;
String body;
try {
body = utf8.decode(data);
} on FormatException {
body = 'binary';
}
return ThemingApiException(
response.statusCode,
response.responseHeaders,
body,
);
}
@override
String toString() => 'ThemingApiException(statusCode: $statusCode, headers: $headers, body: $body)';
}
class ThemingClient extends DynamiteClient {
ThemingClient(
super.baseURL, {
super.baseHeaders,
super.userAgent,
super.httpClient,
super.cookieJar,
super.authentications,
});
ThemingClient.fromClient(final DynamiteClient client)
: super(
client.baseURL,
baseHeaders: client.baseHeaders,
httpClient: client.httpClient,
cookieJar: client.cookieJar,
authentications: client.authentications,
);
ThemingIconClient get icon => ThemingIconClient(this);
ThemingThemingClient get theming => ThemingThemingClient(this);
ThemingUserThemeClient get userTheme => ThemingUserThemeClient(this);
}
class ThemingIconClient {
ThemingIconClient(this.rootClient);
final ThemingClient rootClient;
/// Return a 32x32 favicon as png
Future<Uint8List> getFavicon({final String app = 'core'}) async {
var path = '/index.php/apps/theming/favicon/{app}';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': 'image/x-icon',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
}
// coverage:ignore-end
path = path.replaceAll('{app}', Uri.encodeQueryComponent(app));
final response = await rootClient.doRequest(
'get',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return response.bodyBytes;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
/// Return a 512x512 icon for touch devices
Future<Uint8List> getTouchIcon({final String app = 'core'}) async {
var path = '/index.php/apps/theming/icon/{app}';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': 'image/png',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
}
// coverage:ignore-end
path = path.replaceAll('{app}', Uri.encodeQueryComponent(app));
final response = await rootClient.doRequest(
'get',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return response.bodyBytes;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
/// Get a themed icon
Future<Uint8List> getThemedIcon({
required final String app,
required final String image,
}) async {
var path = '/index.php/apps/theming/img/{app}/{image}';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': 'image/svg+xml',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
}
// coverage:ignore-end
path = path.replaceAll('{app}', Uri.encodeQueryComponent(app));
if (!RegExp(r'^.+$').hasMatch(image)) {
throw Exception('Invalid value "$image" for parameter "image" with pattern "${r'^.+$'}"'); // coverage:ignore-line
}
path = path.replaceAll('{image}', Uri.encodeQueryComponent(image));
final response = await rootClient.doRequest(
'get',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return response.bodyBytes;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
}
/// Class ThemingController
/// handle ajax requests to update the theme
class ThemingThemingClient {
ThemingThemingClient(this.rootClient);
final ThemingClient rootClient;
/// Get the CSS stylesheet for a theme
Future<String> getThemeStylesheet({
required final String themeId,
final int plain = 0,
final int withCustomCss = 0,
}) async {
var path = '/index.php/apps/theming/theme/{themeId}.css';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': 'text/css',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
}
// coverage:ignore-end
path = path.replaceAll('{themeId}', Uri.encodeQueryComponent(themeId));
if (plain != 0) {
queryParameters['plain'] = plain.toString();
}
if (withCustomCss != 0) {
queryParameters['withCustomCss'] = withCustomCss.toString();
}
final response = await rootClient.doRequest(
'get',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return response.body;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
/// Get an image
Future<Uint8List> getImage({
required final String key,
final int useSvg = 1,
}) async {
var path = '/index.php/apps/theming/image/{key}';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': '*/*',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
}
// coverage:ignore-end
path = path.replaceAll('{key}', Uri.encodeQueryComponent(key));
if (useSvg != 1) {
queryParameters['useSvg'] = useSvg.toString();
}
final response = await rootClient.doRequest(
'get',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return response.bodyBytes;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
/// Get the manifest for an app
Future<ThemingThemingGetManifestResponse200ApplicationJson> getManifest({required final String app}) async {
var path = '/index.php/apps/theming/manifest/{app}';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': 'application/json',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
}
// coverage:ignore-end
path = path.replaceAll('{app}', Uri.encodeQueryComponent(app));
final response = await rootClient.doRequest(
'get',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return _jsonSerializers.deserialize(
await response.jsonBody,
specifiedType: const FullType(ThemingThemingGetManifestResponse200ApplicationJson),
)! as ThemingThemingGetManifestResponse200ApplicationJson;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
}
class ThemingUserThemeClient {
ThemingUserThemeClient(this.rootClient);
final ThemingClient rootClient;
/// Get the background image
Future<Uint8List> getBackground({final String oCSAPIRequest = 'true'}) async {
const path = '/index.php/apps/theming/background';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': '*/*',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
} else {
throw Exception('Missing authentication for bearer_auth or basic_auth');
}
// coverage:ignore-end
headers['OCS-APIRequest'] = oCSAPIRequest;
final response = await rootClient.doRequest(
'get',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return response.bodyBytes;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
/// Set the background
Future<ThemingBackground> setBackground({
required final String type,
final String value = '',
final String? color,
final String oCSAPIRequest = 'true',
}) async {
var path = '/index.php/apps/theming/background/{type}';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': 'application/json',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
} else {
throw Exception('Missing authentication for bearer_auth or basic_auth');
}
// coverage:ignore-end
path = path.replaceAll('{type}', Uri.encodeQueryComponent(type));
if (value != '') {
queryParameters['value'] = value;
}
if (color != null) {
queryParameters['color'] = color;
}
headers['OCS-APIRequest'] = oCSAPIRequest;
final response = await rootClient.doRequest(
'post',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return _jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(ThemingBackground))!
as ThemingBackground;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
/// Delete the background
Future<ThemingBackground> deleteBackground({final String oCSAPIRequest = 'true'}) async {
const path = '/index.php/apps/theming/background/custom';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': 'application/json',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
} else {
throw Exception('Missing authentication for bearer_auth or basic_auth');
}
// coverage:ignore-end
headers['OCS-APIRequest'] = oCSAPIRequest;
final response = await rootClient.doRequest(
'delete',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return _jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(ThemingBackground))!
as ThemingBackground;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
/// Enable theme
Future<ThemingUserThemeEnableThemeResponse200ApplicationJson> enableTheme({
required final String themeId,
final String oCSAPIRequest = 'true',
}) async {
var path = '/ocs/v2.php/apps/theming/api/v1/theme/{themeId}/enable';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': 'application/json',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
} else {
throw Exception('Missing authentication for bearer_auth or basic_auth');
}
// coverage:ignore-end
path = path.replaceAll('{themeId}', Uri.encodeQueryComponent(themeId));
headers['OCS-APIRequest'] = oCSAPIRequest;
final response = await rootClient.doRequest(
'put',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return _jsonSerializers.deserialize(
await response.jsonBody,
specifiedType: const FullType(ThemingUserThemeEnableThemeResponse200ApplicationJson),
)! as ThemingUserThemeEnableThemeResponse200ApplicationJson;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
/// Disable theme
Future<ThemingUserThemeDisableThemeResponse200ApplicationJson> disableTheme({
required final String themeId,
final String oCSAPIRequest = 'true',
}) async {
var path = '/ocs/v2.php/apps/theming/api/v1/theme/{themeId}';
final queryParameters = <String, dynamic>{};
final headers = <String, String>{
'Accept': 'application/json',
};
Uint8List? body;
// coverage:ignore-start
if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'bearer').isNotEmpty) {
headers.addAll(
rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'bearer').headers,
);
} else if (rootClient.authentications.where((final a) => a.type == 'http' && a.scheme == 'basic').isNotEmpty) {
headers
.addAll(rootClient.authentications.singleWhere((final a) => a.type == 'http' && a.scheme == 'basic').headers);
} else {
throw Exception('Missing authentication for bearer_auth or basic_auth');
}
// coverage:ignore-end
path = path.replaceAll('{themeId}', Uri.encodeQueryComponent(themeId));
headers['OCS-APIRequest'] = oCSAPIRequest;
final response = await rootClient.doRequest(
'delete',
Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null).toString(),
headers,
body,
);
if (response.statusCode == 200) {
return _jsonSerializers.deserialize(
await response.jsonBody,
specifiedType: const FullType(ThemingUserThemeDisableThemeResponse200ApplicationJson),
)! as ThemingUserThemeDisableThemeResponse200ApplicationJson;
}
throw await ThemingApiException.fromResponse(response); // coverage:ignore-line
}
}
abstract class ThemingThemingGetManifestResponse200ApplicationJson_Icons
implements
Built<ThemingThemingGetManifestResponse200ApplicationJson_Icons,
ThemingThemingGetManifestResponse200ApplicationJson_IconsBuilder> {
factory ThemingThemingGetManifestResponse200ApplicationJson_Icons([
final void Function(ThemingThemingGetManifestResponse200ApplicationJson_IconsBuilder)? b,
]) = _$ThemingThemingGetManifestResponse200ApplicationJson_Icons;
// coverage:ignore-start
const ThemingThemingGetManifestResponse200ApplicationJson_Icons._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingThemingGetManifestResponse200ApplicationJson_Icons.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
String get src;
String get type;
String get sizes;
static Serializer<ThemingThemingGetManifestResponse200ApplicationJson_Icons> get serializer =>
_$themingThemingGetManifestResponse200ApplicationJsonIconsSerializer;
}
abstract class ThemingThemingGetManifestResponse200ApplicationJson
implements
Built<ThemingThemingGetManifestResponse200ApplicationJson,
ThemingThemingGetManifestResponse200ApplicationJsonBuilder> {
factory ThemingThemingGetManifestResponse200ApplicationJson([
final void Function(ThemingThemingGetManifestResponse200ApplicationJsonBuilder)? b,
]) = _$ThemingThemingGetManifestResponse200ApplicationJson;
// coverage:ignore-start
const ThemingThemingGetManifestResponse200ApplicationJson._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingThemingGetManifestResponse200ApplicationJson.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
String get name;
@BuiltValueField(wireName: 'short_name')
String get shortName;
@BuiltValueField(wireName: 'start_url')
String get startUrl;
@BuiltValueField(wireName: 'theme_color')
String get themeColor;
@BuiltValueField(wireName: 'background_color')
String get backgroundColor;
String get description;
BuiltList<ThemingThemingGetManifestResponse200ApplicationJson_Icons> get icons;
String get display;
static Serializer<ThemingThemingGetManifestResponse200ApplicationJson> get serializer =>
_$themingThemingGetManifestResponse200ApplicationJsonSerializer;
}
abstract class ThemingBackground implements Built<ThemingBackground, ThemingBackgroundBuilder> {
factory ThemingBackground([final void Function(ThemingBackgroundBuilder)? b]) = _$ThemingBackground;
// coverage:ignore-start
const ThemingBackground._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingBackground.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
String? get backgroundImage;
String get backgroundColor;
int get version;
static Serializer<ThemingBackground> get serializer => _$themingBackgroundSerializer;
}
abstract class ThemingOCSMeta implements Built<ThemingOCSMeta, ThemingOCSMetaBuilder> {
factory ThemingOCSMeta([final void Function(ThemingOCSMetaBuilder)? b]) = _$ThemingOCSMeta;
// coverage:ignore-start
const ThemingOCSMeta._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingOCSMeta.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
String get status;
int get statuscode;
String? get message;
String? get totalitems;
String? get itemsperpage;
static Serializer<ThemingOCSMeta> get serializer => _$themingOCSMetaSerializer;
}
abstract class ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs
implements
Built<ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs,
ThemingUserThemeEnableThemeResponse200ApplicationJson_OcsBuilder> {
factory ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs([
final void Function(ThemingUserThemeEnableThemeResponse200ApplicationJson_OcsBuilder)? b,
]) = _$ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs;
// coverage:ignore-start
const ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
ThemingOCSMeta get meta;
JsonObject get data;
static Serializer<ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs> get serializer =>
_$themingUserThemeEnableThemeResponse200ApplicationJsonOcsSerializer;
}
abstract class ThemingUserThemeEnableThemeResponse200ApplicationJson
implements
Built<ThemingUserThemeEnableThemeResponse200ApplicationJson,
ThemingUserThemeEnableThemeResponse200ApplicationJsonBuilder> {
factory ThemingUserThemeEnableThemeResponse200ApplicationJson([
final void Function(ThemingUserThemeEnableThemeResponse200ApplicationJsonBuilder)? b,
]) = _$ThemingUserThemeEnableThemeResponse200ApplicationJson;
// coverage:ignore-start
const ThemingUserThemeEnableThemeResponse200ApplicationJson._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingUserThemeEnableThemeResponse200ApplicationJson.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs get ocs;
static Serializer<ThemingUserThemeEnableThemeResponse200ApplicationJson> get serializer =>
_$themingUserThemeEnableThemeResponse200ApplicationJsonSerializer;
}
abstract class ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs
implements
Built<ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs,
ThemingUserThemeDisableThemeResponse200ApplicationJson_OcsBuilder> {
factory ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs([
final void Function(ThemingUserThemeDisableThemeResponse200ApplicationJson_OcsBuilder)? b,
]) = _$ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs;
// coverage:ignore-start
const ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
ThemingOCSMeta get meta;
JsonObject get data;
static Serializer<ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs> get serializer =>
_$themingUserThemeDisableThemeResponse200ApplicationJsonOcsSerializer;
}
abstract class ThemingUserThemeDisableThemeResponse200ApplicationJson
implements
Built<ThemingUserThemeDisableThemeResponse200ApplicationJson,
ThemingUserThemeDisableThemeResponse200ApplicationJsonBuilder> {
factory ThemingUserThemeDisableThemeResponse200ApplicationJson([
final void Function(ThemingUserThemeDisableThemeResponse200ApplicationJsonBuilder)? b,
]) = _$ThemingUserThemeDisableThemeResponse200ApplicationJson;
// coverage:ignore-start
const ThemingUserThemeDisableThemeResponse200ApplicationJson._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingUserThemeDisableThemeResponse200ApplicationJson.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs get ocs;
static Serializer<ThemingUserThemeDisableThemeResponse200ApplicationJson> get serializer =>
_$themingUserThemeDisableThemeResponse200ApplicationJsonSerializer;
}
abstract class ThemingPublicCapabilities_Theming
implements Built<ThemingPublicCapabilities_Theming, ThemingPublicCapabilities_ThemingBuilder> {
factory ThemingPublicCapabilities_Theming([final void Function(ThemingPublicCapabilities_ThemingBuilder)? b]) =
_$ThemingPublicCapabilities_Theming;
// coverage:ignore-start
const ThemingPublicCapabilities_Theming._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingPublicCapabilities_Theming.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
String get name;
String get url;
String get slogan;
String get color;
@BuiltValueField(wireName: 'color-text')
String get colorText;
@BuiltValueField(wireName: 'color-element')
String get colorElement;
@BuiltValueField(wireName: 'color-element-bright')
String get colorElementBright;
@BuiltValueField(wireName: 'color-element-dark')
String get colorElementDark;
String get logo;
String get background;
@BuiltValueField(wireName: 'background-plain')
bool get backgroundPlain;
@BuiltValueField(wireName: 'background-default')
bool get backgroundDefault;
String get logoheader;
String get favicon;
static Serializer<ThemingPublicCapabilities_Theming> get serializer => _$themingPublicCapabilitiesThemingSerializer;
}
abstract class ThemingPublicCapabilities implements Built<ThemingPublicCapabilities, ThemingPublicCapabilitiesBuilder> {
factory ThemingPublicCapabilities([final void Function(ThemingPublicCapabilitiesBuilder)? b]) =
_$ThemingPublicCapabilities;
// coverage:ignore-start
const ThemingPublicCapabilities._();
// coverage:ignore-end
// coverage:ignore-start
factory ThemingPublicCapabilities.fromJson(final Map<String, dynamic> json) =>
_jsonSerializers.deserializeWith(serializer, json)!;
// coverage:ignore-end
// coverage:ignore-start
Map<String, dynamic> toJson() => _jsonSerializers.serializeWith(serializer, this)! as Map<String, dynamic>;
// coverage:ignore-end
ThemingPublicCapabilities_Theming get theming;
static Serializer<ThemingPublicCapabilities> get serializer => _$themingPublicCapabilitiesSerializer;
}
// coverage:ignore-start
final Serializers _serializers = (Serializers().toBuilder()
..addBuilderFactory(
const FullType(ThemingThemingGetManifestResponse200ApplicationJson),
ThemingThemingGetManifestResponse200ApplicationJson.new,
)
..add(ThemingThemingGetManifestResponse200ApplicationJson.serializer)
..addBuilderFactory(
const FullType(ThemingThemingGetManifestResponse200ApplicationJson_Icons),
ThemingThemingGetManifestResponse200ApplicationJson_Icons.new,
)
..add(ThemingThemingGetManifestResponse200ApplicationJson_Icons.serializer)
..addBuilderFactory(
const FullType(BuiltList, [FullType(ThemingThemingGetManifestResponse200ApplicationJson_Icons)]),
ListBuilder<ThemingThemingGetManifestResponse200ApplicationJson_Icons>.new,
)
..addBuilderFactory(const FullType(ThemingBackground), ThemingBackground.new)
..add(ThemingBackground.serializer)
..addBuilderFactory(
const FullType(ThemingUserThemeEnableThemeResponse200ApplicationJson),
ThemingUserThemeEnableThemeResponse200ApplicationJson.new,
)
..add(ThemingUserThemeEnableThemeResponse200ApplicationJson.serializer)
..addBuilderFactory(
const FullType(ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs),
ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs.new,
)
..add(ThemingUserThemeEnableThemeResponse200ApplicationJson_Ocs.serializer)
..addBuilderFactory(const FullType(ThemingOCSMeta), ThemingOCSMeta.new)
..add(ThemingOCSMeta.serializer)
..addBuilderFactory(
const FullType(ThemingUserThemeDisableThemeResponse200ApplicationJson),
ThemingUserThemeDisableThemeResponse200ApplicationJson.new,
)
..add(ThemingUserThemeDisableThemeResponse200ApplicationJson.serializer)
..addBuilderFactory(
const FullType(ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs),
ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs.new,
)
..add(ThemingUserThemeDisableThemeResponse200ApplicationJson_Ocs.serializer)
..addBuilderFactory(const FullType(ThemingPublicCapabilities), ThemingPublicCapabilities.new)
..add(ThemingPublicCapabilities.serializer)
..addBuilderFactory(const FullType(ThemingPublicCapabilities_Theming), ThemingPublicCapabilities_Theming.new)
..add(ThemingPublicCapabilities_Theming.serializer))
.build();
Serializers get themingSerializers => _serializers;
final Serializers _jsonSerializers = (_serializers.toBuilder()
..addPlugin(StandardJsonPlugin())
..addPlugin(const ContentStringPlugin()))
.build();
T deserializeTheming<T>(final Object data) => _serializers.deserialize(data, specifiedType: FullType(T))! as T;
Object? serializeTheming<T>(final T data) => _serializers.serialize(data, specifiedType: FullType(T));
// coverage:ignore-end