Browse Source

dynamite, dynamite_runtime, nextcloud: improve data fetching performance

pull/413/head
Nikolas Rimikis 1 year ago
parent
commit
a541436dd4
No known key found for this signature in database
GPG Key ID: 85ED1DE9786A4FF2
  1. 52
      packages/dynamite/dynamite/lib/src/openapi_builder.dart
  2. 59
      packages/dynamite/dynamite_runtime/lib/src/http_client.dart
  3. 273
      packages/nextcloud/lib/src/nextcloud.openapi.dart
  4. 8
      packages/nextcloud/lib/src/webdav/client.dart

52
packages/dynamite/dynamite/lib/src/openapi_builder.dart

@ -69,6 +69,7 @@ class OpenAPIBuilder implements Builder {
"import 'package:built_value/standard_json_plugin.dart';", "import 'package:built_value/standard_json_plugin.dart';",
"import 'package:dynamite_runtime/content_string.dart';", "import 'package:dynamite_runtime/content_string.dart';",
"import 'package:dynamite_runtime/http_client.dart';", "import 'package:dynamite_runtime/http_client.dart';",
"import 'package:universal_io/io.dart';",
'', '',
"export 'package:dynamite_runtime/http_client.dart';", "export 'package:dynamite_runtime/http_client.dart';",
'', '',
@ -113,8 +114,7 @@ class OpenAPIBuilder implements Builder {
(final b) => b (final b) => b
..name = '${prefix}ApiException' ..name = '${prefix}ApiException'
..extend = refer('DynamiteApiException') ..extend = refer('DynamiteApiException')
..constructors.addAll( ..constructors.add(
[
Constructor( Constructor(
(final b) => b (final b) => b
..requiredParameters.addAll( ..requiredParameters.addAll(
@ -127,23 +127,38 @@ class OpenAPIBuilder implements Builder {
), ),
), ),
), ),
Constructor( )
..methods.addAll([
Method(
(final b) => b (final b) => b
..name = 'fromResponse' ..name = 'fromResponse'
..factory = true ..returns = refer('Future<${prefix}ApiException>')
..lambda = true ..static = true
..modifier = MethodModifier.async
..requiredParameters.add( ..requiredParameters.add(
Parameter( Parameter(
(final b) => b (final b) => b
..name = 'response' ..name = 'response'
..type = refer('RawResponse'), ..type = refer('HttpClientResponse'),
), ),
) )
..body = Code('${prefix}ApiException(response.statusCode, response.headers, response.body,)'), ..body = Block.of([
const Code('final data = await response.bodyBytes;'),
const Code(''),
const Code('String body;'),
const Code('try {'),
const Code('body = utf8.decode(data);'),
const Code('} on FormatException {'),
const Code("body = 'binary';"),
const Code('}'),
const Code(''),
Code('return ${prefix}ApiException('),
const Code('response.statusCode,'),
const Code('response.responseHeaders,'),
const Code('body,'),
const Code(');'),
]),
), ),
],
)
..methods.add(
Method( Method(
(final b) => b (final b) => b
..name = 'toString' ..name = 'toString'
@ -151,10 +166,10 @@ class OpenAPIBuilder implements Builder {
..annotations.add(refer('override')) ..annotations.add(refer('override'))
..lambda = true ..lambda = true
..body = Code( ..body = Code(
"'${prefix}ApiException(statusCode: \${super.statusCode}, headers: \${super.headers}, body: \${utf8.decode(super.body)})'", "'${prefix}ApiException(statusCode: \$statusCode, headers: \$headers, body: \$body)'",
),
), ),
), ),
]),
).accept(emitter).toString(), ).accept(emitter).toString(),
]; ];
@ -715,16 +730,21 @@ class OpenAPIBuilder implements Builder {
if (mimeType == '*/*' || mimeType.startsWith('image/')) { if (mimeType == '*/*' || mimeType.startsWith('image/')) {
dataType = 'Uint8List'; dataType = 'Uint8List';
dataValue = 'response.body'; dataValue = 'response.bodyBytes';
} else if (mimeType.startsWith('text/')) { } else if (mimeType.startsWith('text/')) {
dataType = 'String'; dataType = 'String';
dataValue = 'utf8.decode(response.body)'; dataValue = 'await response.body';
} else if (mimeType == 'application/json') { } else if (mimeType == 'application/json') {
dataType = result.name; dataType = result.name;
if (result.name == 'dynamic') { if (result.name == 'dynamic') {
dataValue = ''; dataValue = '';
} else if (result.name == 'String') {
// avoid unnecessary_await_in_return lint
dataValue = 'response.body';
} else if (result is TypeResultEnum || result is TypeResultBase) {
dataValue = result.deserialize(result.decode('await response.body'));
} else { } else {
dataValue = result.deserialize(result.decode('utf8.decode(response.body)')); dataValue = result.deserialize('await response.jsonBody');
} }
} else { } else {
throw Exception('Can not parse mime type "$mimeType"'); throw Exception('Can not parse mime type "$mimeType"');
@ -751,7 +771,7 @@ class OpenAPIBuilder implements Builder {
code.write('}'); code.write('}');
} }
code.write( code.write(
'throw ${prefix}ApiException.fromResponse(response); // coverage:ignore-line\n', 'throw await ${prefix}ApiException.fromResponse(response); // coverage:ignore-line\n',
); );
} else { } else {
b.returns = refer('Future'); b.returns = refer('Future');

59
packages/dynamite/dynamite_runtime/lib/src/http_client.dart

@ -14,6 +14,17 @@ extension DynamiteHttpClientResponseBody on HttpClientResponse {
} }
Future<String> get body => transform(utf8.decoder).join(); Future<String> get body => transform(utf8.decoder).join();
Future<dynamic> get jsonBody => transform(utf8.decoder).transform(json.decoder).first;
Map<String, String> get responseHeaders {
final responseHeaders = <String, String>{};
headers.forEach((final name, final values) {
responseHeaders[name] = values.last;
});
return responseHeaders;
}
} }
class DynamiteResponse<T, U> { class DynamiteResponse<T, U> {
@ -30,8 +41,8 @@ class DynamiteResponse<T, U> {
String toString() => 'DynamiteResponse(data: $data, headers: $headers)'; String toString() => 'DynamiteResponse(data: $data, headers: $headers)';
} }
class RawResponse { class DynamiteApiException implements Exception {
RawResponse( DynamiteApiException(
this.statusCode, this.statusCode,
this.headers, this.headers,
this.body, this.body,
@ -41,22 +52,10 @@ class RawResponse {
final Map<String, String> headers; final Map<String, String> headers;
final Uint8List body; final String body;
@override @override
String toString() => 'RawResponse(statusCode: $statusCode, headers: $headers, body: ${utf8.decode(body)})'; String toString() => 'DynamiteApiException(statusCode: $statusCode, headers: $headers, body: $body)';
}
class DynamiteApiException extends RawResponse implements Exception {
DynamiteApiException(
super.statusCode,
super.headers,
super.body,
);
@override
String toString() =>
'DynamiteApiException(statusCode: ${super.statusCode}, headers: ${super.headers}, body: ${utf8.decode(super.body)})';
} }
abstract class DynamiteAuthentication { abstract class DynamiteAuthentication {
@ -85,29 +84,24 @@ class DynamiteHttpBasicAuthentication extends DynamiteAuthentication {
class DynamiteClient { class DynamiteClient {
DynamiteClient( DynamiteClient(
this.baseURL, { this.baseURL, {
final Map<String, String>? baseHeaders, this.baseHeaders,
final String? userAgent, final String? userAgent,
final HttpClient? httpClient, final HttpClient? httpClient,
this.cookieJar, this.cookieJar,
this.authentications = const [], this.authentications = const [],
}) { }) : httpClient = (httpClient ?? HttpClient())..userAgent = userAgent;
this.baseHeaders = {
...?baseHeaders,
};
this.httpClient = (httpClient ?? HttpClient())..userAgent = userAgent;
}
final String baseURL; final String baseURL;
late final Map<String, String> baseHeaders; final Map<String, String>? baseHeaders;
late final HttpClient httpClient; final HttpClient httpClient;
final CookieJar? cookieJar; final CookieJar? cookieJar;
final List<DynamiteAuthentication> authentications; final List<DynamiteAuthentication> authentications;
Future<RawResponse> doRequest( Future<HttpClientResponse> doRequest(
final String method, final String method,
final String path, final String path,
final Map<String, String> headers, final Map<String, String> headers,
@ -115,7 +109,7 @@ class DynamiteClient {
) async { ) async {
final uri = Uri.parse('$baseURL$path'); final uri = Uri.parse('$baseURL$path');
final request = await httpClient.openUrl(method, uri); final request = await httpClient.openUrl(method, uri);
for (final header in {...baseHeaders, ...headers}.entries) { for (final header in {...?baseHeaders, ...headers}.entries) {
request.headers.add(header.key, header.value); request.headers.add(header.key, header.value);
} }
if (body != null) { if (body != null) {
@ -129,14 +123,7 @@ class DynamiteClient {
if (cookieJar != null) { if (cookieJar != null) {
await cookieJar!.saveFromResponse(uri, response.cookies); await cookieJar!.saveFromResponse(uri, response.cookies);
} }
final responseHeaders = <String, String>{};
response.headers.forEach((final name, final values) { return response;
responseHeaders[name] = values.last;
});
return RawResponse(
response.statusCode,
responseHeaders,
await response.bodyBytes,
);
} }
} }

273
packages/nextcloud/lib/src/nextcloud.openapi.dart

@ -10,6 +10,7 @@ import 'package:built_value/serializer.dart';
import 'package:built_value/standard_json_plugin.dart'; import 'package:built_value/standard_json_plugin.dart';
import 'package:dynamite_runtime/content_string.dart'; import 'package:dynamite_runtime/content_string.dart';
import 'package:dynamite_runtime/http_client.dart'; import 'package:dynamite_runtime/http_client.dart';
import 'package:universal_io/io.dart';
export 'package:dynamite_runtime/http_client.dart'; export 'package:dynamite_runtime/http_client.dart';
@ -32,15 +33,25 @@ class NextcloudApiException extends DynamiteApiException {
super.body, super.body,
); );
factory NextcloudApiException.fromResponse(final RawResponse response) => NextcloudApiException( static Future<NextcloudApiException> fromResponse(final HttpClientResponse response) async {
final data = await response.bodyBytes;
String body;
try {
body = utf8.decode(data);
} on FormatException {
body = 'binary';
}
return NextcloudApiException(
response.statusCode, response.statusCode,
response.headers, response.responseHeaders,
response.body, body,
); );
}
@override @override
String toString() => String toString() => 'NextcloudApiException(statusCode: $statusCode, headers: $headers, body: $body)';
'NextcloudApiException(statusCode: ${super.statusCode}, headers: ${super.headers}, body: ${utf8.decode(super.body)})';
} }
class NextcloudHttpBasicAuthentication extends DynamiteAuthentication { class NextcloudHttpBasicAuthentication extends DynamiteAuthentication {
@ -100,11 +111,11 @@ class NextcloudCoreClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudCoreServerStatus), specifiedType: const FullType(NextcloudCoreServerStatus),
)! as NextcloudCoreServerStatus; )! as NextcloudCoreServerStatus;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudCoreServerCapabilities> getCapabilities() async { Future<NextcloudCoreServerCapabilities> getCapabilities() async {
@ -127,11 +138,11 @@ class NextcloudCoreClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudCoreServerCapabilities), specifiedType: const FullType(NextcloudCoreServerCapabilities),
)! as NextcloudCoreServerCapabilities; )! as NextcloudCoreServerCapabilities;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudCoreNavigationApps> getNavigationApps() async { Future<NextcloudCoreNavigationApps> getNavigationApps() async {
@ -154,11 +165,11 @@ class NextcloudCoreClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudCoreNavigationApps), specifiedType: const FullType(NextcloudCoreNavigationApps),
)! as NextcloudCoreNavigationApps; )! as NextcloudCoreNavigationApps;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudCoreLoginFlowInit> initLoginFlow() async { Future<NextcloudCoreLoginFlowInit> initLoginFlow() async {
@ -176,11 +187,11 @@ class NextcloudCoreClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudCoreLoginFlowInit), specifiedType: const FullType(NextcloudCoreLoginFlowInit),
)! as NextcloudCoreLoginFlowInit; )! as NextcloudCoreLoginFlowInit;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudCoreLoginFlowResult> getLoginFlowResult({required final String token}) async { Future<NextcloudCoreLoginFlowResult> getLoginFlowResult({required final String token}) async {
@ -199,11 +210,11 @@ class NextcloudCoreClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudCoreLoginFlowResult), specifiedType: const FullType(NextcloudCoreLoginFlowResult),
)! as NextcloudCoreLoginFlowResult; )! as NextcloudCoreLoginFlowResult;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<Uint8List> getPreview({ Future<Uint8List> getPreview({
@ -250,9 +261,9 @@ class NextcloudCoreClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return response.body; return response.bodyBytes;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<Uint8List> getDarkAvatar({ Future<Uint8List> getDarkAvatar({
@ -279,9 +290,9 @@ class NextcloudCoreClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return response.body; return response.bodyBytes;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<Uint8List> getAvatar({ Future<Uint8List> getAvatar({
@ -308,9 +319,9 @@ class NextcloudCoreClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return response.body; return response.bodyBytes;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudCoreAutocompleteResult> autocomplete({ Future<NextcloudCoreAutocompleteResult> autocomplete({
@ -350,11 +361,11 @@ class NextcloudCoreClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudCoreAutocompleteResult), specifiedType: const FullType(NextcloudCoreAutocompleteResult),
)! as NextcloudCoreAutocompleteResult; )! as NextcloudCoreAutocompleteResult;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<JsonObject> deleteAppPassword() async { Future<JsonObject> deleteAppPassword() async {
@ -376,9 +387,9 @@ class NextcloudCoreClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return JsonObject(utf8.decode(response.body)); return JsonObject(await response.body);
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
} }
@ -407,11 +418,11 @@ class NextcloudNewsClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNewsSupportedAPIVersions), specifiedType: const FullType(NextcloudNewsSupportedAPIVersions),
)! as NextcloudNewsSupportedAPIVersions; )! as NextcloudNewsSupportedAPIVersions;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNewsListFolders> listFolders() async { Future<NextcloudNewsListFolders> listFolders() async {
@ -434,11 +445,11 @@ class NextcloudNewsClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNewsListFolders), specifiedType: const FullType(NextcloudNewsListFolders),
)! as NextcloudNewsListFolders; )! as NextcloudNewsListFolders;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNewsListFolders> createFolder({required final String name}) async { Future<NextcloudNewsListFolders> createFolder({required final String name}) async {
@ -462,11 +473,11 @@ class NextcloudNewsClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNewsListFolders), specifiedType: const FullType(NextcloudNewsListFolders),
)! as NextcloudNewsListFolders; )! as NextcloudNewsListFolders;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future renameFolder({ Future renameFolder({
@ -493,7 +504,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future deleteFolder({required final int folderId}) async { Future deleteFolder({required final int folderId}) async {
@ -516,7 +527,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future markFolderAsRead({ Future markFolderAsRead({
@ -543,7 +554,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNewsListFeeds> listFeeds() async { Future<NextcloudNewsListFeeds> listFeeds() async {
@ -566,11 +577,11 @@ class NextcloudNewsClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNewsListFeeds), specifiedType: const FullType(NextcloudNewsListFeeds),
)! as NextcloudNewsListFeeds; )! as NextcloudNewsListFeeds;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNewsListFeeds> addFeed({ Future<NextcloudNewsListFeeds> addFeed({
@ -600,11 +611,11 @@ class NextcloudNewsClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNewsListFeeds), specifiedType: const FullType(NextcloudNewsListFeeds),
)! as NextcloudNewsListFeeds; )! as NextcloudNewsListFeeds;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future deleteFeed({required final int feedId}) async { Future deleteFeed({required final int feedId}) async {
@ -627,7 +638,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future moveFeed({ Future moveFeed({
@ -656,7 +667,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future renameFeed({ Future renameFeed({
@ -683,7 +694,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future markFeedAsRead({ Future markFeedAsRead({
@ -710,7 +721,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNewsListArticles> listArticles({ Future<NextcloudNewsListArticles> listArticles({
@ -758,11 +769,11 @@ class NextcloudNewsClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNewsListArticles), specifiedType: const FullType(NextcloudNewsListArticles),
)! as NextcloudNewsListArticles; )! as NextcloudNewsListArticles;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNewsListArticles> listUpdatedArticles({ Future<NextcloudNewsListArticles> listUpdatedArticles({
@ -798,11 +809,11 @@ class NextcloudNewsClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNewsListArticles), specifiedType: const FullType(NextcloudNewsListArticles),
)! as NextcloudNewsListArticles; )! as NextcloudNewsListArticles;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future markArticleAsRead({required final int itemId}) async { Future markArticleAsRead({required final int itemId}) async {
@ -825,7 +836,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future markArticleAsUnread({required final int itemId}) async { Future markArticleAsUnread({required final int itemId}) async {
@ -848,7 +859,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future starArticle({required final int itemId}) async { Future starArticle({required final int itemId}) async {
@ -871,7 +882,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future unstarArticle({required final int itemId}) async { Future unstarArticle({required final int itemId}) async {
@ -894,7 +905,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
} }
@ -948,11 +959,11 @@ class NextcloudNotesClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(BuiltList, [FullType(NextcloudNotesNote)]), specifiedType: const FullType(BuiltList, [FullType(NextcloudNotesNote)]),
)! as BuiltList<NextcloudNotesNote>; )! as BuiltList<NextcloudNotesNote>;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNotesNote> createNote({ Future<NextcloudNotesNote> createNote({
@ -995,12 +1006,10 @@ class NextcloudNotesClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(NextcloudNotesNote))!
json.decode(utf8.decode(response.body)), as NextcloudNotesNote;
specifiedType: const FullType(NextcloudNotesNote),
)! as NextcloudNotesNote;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNotesNote> getNote({ Future<NextcloudNotesNote> getNote({
@ -1033,12 +1042,10 @@ class NextcloudNotesClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(NextcloudNotesNote))!
json.decode(utf8.decode(response.body)), as NextcloudNotesNote;
specifiedType: const FullType(NextcloudNotesNote),
)! as NextcloudNotesNote;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNotesNote> updateNote({ Future<NextcloudNotesNote> updateNote({
@ -1087,12 +1094,10 @@ class NextcloudNotesClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(NextcloudNotesNote))!
json.decode(utf8.decode(response.body)), as NextcloudNotesNote;
specifiedType: const FullType(NextcloudNotesNote),
)! as NextcloudNotesNote;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<String> deleteNote({required final int id}) async { Future<String> deleteNote({required final int id}) async {
@ -1115,9 +1120,9 @@ class NextcloudNotesClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return utf8.decode(response.body); return response.body;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNotesSettings> getSettings() async { Future<NextcloudNotesSettings> getSettings() async {
@ -1140,11 +1145,11 @@ class NextcloudNotesClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNotesSettings), specifiedType: const FullType(NextcloudNotesSettings),
)! as NextcloudNotesSettings; )! as NextcloudNotesSettings;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNotesSettings> updateSettings({required final NextcloudNotesSettings notesSettings}) async { Future<NextcloudNotesSettings> updateSettings({required final NextcloudNotesSettings notesSettings}) async {
@ -1173,11 +1178,11 @@ class NextcloudNotesClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNotesSettings), specifiedType: const FullType(NextcloudNotesSettings),
)! as NextcloudNotesSettings; )! as NextcloudNotesSettings;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
} }
@ -1206,11 +1211,11 @@ class NextcloudNotificationsClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNotificationsListNotifications), specifiedType: const FullType(NextcloudNotificationsListNotifications),
)! as NextcloudNotificationsListNotifications; )! as NextcloudNotificationsListNotifications;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<String> deleteAllNotifications() async { Future<String> deleteAllNotifications() async {
@ -1232,9 +1237,9 @@ class NextcloudNotificationsClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return utf8.decode(response.body); return response.body;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNotificationsGetNotification> getNotification({required final int id}) async { Future<NextcloudNotificationsGetNotification> getNotification({required final int id}) async {
@ -1258,11 +1263,11 @@ class NextcloudNotificationsClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNotificationsGetNotification), specifiedType: const FullType(NextcloudNotificationsGetNotification),
)! as NextcloudNotificationsGetNotification; )! as NextcloudNotificationsGetNotification;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudEmptyOCS> deleteNotification({required final int id}) async { Future<NextcloudEmptyOCS> deleteNotification({required final int id}) async {
@ -1285,12 +1290,10 @@ class NextcloudNotificationsClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(NextcloudEmptyOCS))!
json.decode(utf8.decode(response.body)), as NextcloudEmptyOCS;
specifiedType: const FullType(NextcloudEmptyOCS),
)! as NextcloudEmptyOCS;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudNotificationsPushServerRegistration> registerDevice({ Future<NextcloudNotificationsPushServerRegistration> registerDevice({
@ -1320,11 +1323,11 @@ class NextcloudNotificationsClient {
); );
if (response.statusCode == 201) { if (response.statusCode == 201) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudNotificationsPushServerRegistration), specifiedType: const FullType(NextcloudNotificationsPushServerRegistration),
)! as NextcloudNotificationsPushServerRegistration; )! as NextcloudNotificationsPushServerRegistration;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<String> removeDevice() async { Future<String> removeDevice() async {
@ -1346,9 +1349,9 @@ class NextcloudNotificationsClient {
body, body,
); );
if (response.statusCode == 202) { if (response.statusCode == 202) {
return utf8.decode(response.body); return response.body;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudEmptyOCS> sendAdminNotification({ Future<NextcloudEmptyOCS> sendAdminNotification({
@ -1379,12 +1382,10 @@ class NextcloudNotificationsClient {
body, body,
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(NextcloudEmptyOCS))!
json.decode(utf8.decode(response.body)), as NextcloudEmptyOCS;
specifiedType: const FullType(NextcloudEmptyOCS),
)! as NextcloudEmptyOCS;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
} }
@ -1413,11 +1414,11 @@ class NextcloudProvisioningApiClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudProvisioningApiUser), specifiedType: const FullType(NextcloudProvisioningApiUser),
)! as NextcloudProvisioningApiUser; )! as NextcloudProvisioningApiUser;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudProvisioningApiUser> getUser({required final String userId}) async { Future<NextcloudProvisioningApiUser> getUser({required final String userId}) async {
@ -1441,11 +1442,11 @@ class NextcloudProvisioningApiClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudProvisioningApiUser), specifiedType: const FullType(NextcloudProvisioningApiUser),
)! as NextcloudProvisioningApiUser; )! as NextcloudProvisioningApiUser;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
} }
@ -1475,11 +1476,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderCheckResponse200ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderCheckResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderCheckResponse200ApplicationJson; )! as NextcloudUnifiedPushProviderCheckResponse200ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Set keepalive interval /// Set keepalive interval
@ -1508,11 +1509,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderSetKeepaliveResponse200ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderSetKeepaliveResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderSetKeepaliveResponse200ApplicationJson; )! as NextcloudUnifiedPushProviderSetKeepaliveResponse200ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Request to create a new deviceId /// Request to create a new deviceId
@ -1539,11 +1540,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderCreateDeviceResponse200ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderCreateDeviceResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderCreateDeviceResponse200ApplicationJson; )! as NextcloudUnifiedPushProviderCreateDeviceResponse200ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Request to get push messages /// Request to get push messages
@ -1572,11 +1573,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 401) { if (response.statusCode == 401) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderSyncDeviceResponse401ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderSyncDeviceResponse401ApplicationJson),
)! as NextcloudUnifiedPushProviderSyncDeviceResponse401ApplicationJson; )! as NextcloudUnifiedPushProviderSyncDeviceResponse401ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Delete a device /// Delete a device
@ -1603,11 +1604,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderDeleteDeviceResponse200ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderDeleteDeviceResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderDeleteDeviceResponse200ApplicationJson; )! as NextcloudUnifiedPushProviderDeleteDeviceResponse200ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Create an authorization token for a new 3rd party service /// Create an authorization token for a new 3rd party service
@ -1636,11 +1637,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderCreateAppResponse200ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderCreateAppResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderCreateAppResponse200ApplicationJson; )! as NextcloudUnifiedPushProviderCreateAppResponse200ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Delete an authorization token /// Delete an authorization token
@ -1667,11 +1668,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderDeleteAppResponse200ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderDeleteAppResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderDeleteAppResponse200ApplicationJson; )! as NextcloudUnifiedPushProviderDeleteAppResponse200ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Unifiedpush discovery Following specifications /// Unifiedpush discovery Following specifications
@ -1698,11 +1699,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderUnifiedpushDiscoveryResponse200ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderUnifiedpushDiscoveryResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderUnifiedpushDiscoveryResponse200ApplicationJson; )! as NextcloudUnifiedPushProviderUnifiedpushDiscoveryResponse200ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Receive notifications from 3rd parties /// Receive notifications from 3rd parties
@ -1727,11 +1728,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 201) { if (response.statusCode == 201) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderPushResponse201ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderPushResponse201ApplicationJson),
)! as NextcloudUnifiedPushProviderPushResponse201ApplicationJson; )! as NextcloudUnifiedPushProviderPushResponse201ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Matrix Gateway discovery /// Matrix Gateway discovery
@ -1755,11 +1756,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderGatewayMatrixDiscoveryResponse200ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderGatewayMatrixDiscoveryResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderGatewayMatrixDiscoveryResponse200ApplicationJson; )! as NextcloudUnifiedPushProviderGatewayMatrixDiscoveryResponse200ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
/// Matrix Gateway /// Matrix Gateway
@ -1783,11 +1784,11 @@ class NextcloudUnifiedPushProviderClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderGatewayMatrixResponse200ApplicationJson), specifiedType: const FullType(NextcloudUnifiedPushProviderGatewayMatrixResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderGatewayMatrixResponse200ApplicationJson; )! as NextcloudUnifiedPushProviderGatewayMatrixResponse200ApplicationJson;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
} }
@ -1816,11 +1817,11 @@ class NextcloudUserStatusClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetPublicStatuses), specifiedType: const FullType(NextcloudUserStatusGetPublicStatuses),
)! as NextcloudUserStatusGetPublicStatuses; )! as NextcloudUserStatusGetPublicStatuses;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudUserStatusGetPublicStatus> getPublicStatus({required final String userId}) async { Future<NextcloudUserStatusGetPublicStatus> getPublicStatus({required final String userId}) async {
@ -1844,11 +1845,11 @@ class NextcloudUserStatusClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetPublicStatus), specifiedType: const FullType(NextcloudUserStatusGetPublicStatus),
)! as NextcloudUserStatusGetPublicStatus; )! as NextcloudUserStatusGetPublicStatus;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudUserStatusGetStatus> getStatus() async { Future<NextcloudUserStatusGetStatus> getStatus() async {
@ -1871,11 +1872,11 @@ class NextcloudUserStatusClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetStatus), specifiedType: const FullType(NextcloudUserStatusGetStatus),
)! as NextcloudUserStatusGetStatus; )! as NextcloudUserStatusGetStatus;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudUserStatusGetStatus> setStatus({required final NextcloudUserStatusType statusType}) async { Future<NextcloudUserStatusGetStatus> setStatus({required final NextcloudUserStatusType statusType}) async {
@ -1899,11 +1900,11 @@ class NextcloudUserStatusClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetStatus), specifiedType: const FullType(NextcloudUserStatusGetStatus),
)! as NextcloudUserStatusGetStatus; )! as NextcloudUserStatusGetStatus;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudUserStatusGetStatus> setPredefinedMessage({ Future<NextcloudUserStatusGetStatus> setPredefinedMessage({
@ -1933,11 +1934,11 @@ class NextcloudUserStatusClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetStatus), specifiedType: const FullType(NextcloudUserStatusGetStatus),
)! as NextcloudUserStatusGetStatus; )! as NextcloudUserStatusGetStatus;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudUserStatusGetStatus> setCustomMessage({ Future<NextcloudUserStatusGetStatus> setCustomMessage({
@ -1973,11 +1974,11 @@ class NextcloudUserStatusClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetStatus), specifiedType: const FullType(NextcloudUserStatusGetStatus),
)! as NextcloudUserStatusGetStatus; )! as NextcloudUserStatusGetStatus;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future clearMessage() async { Future clearMessage() async {
@ -1999,7 +2000,7 @@ class NextcloudUserStatusClient {
if (response.statusCode == 200) { if (response.statusCode == 200) {
return; return;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudUserStatusPredefinedStatuses> getPredefinedStatuses() async { Future<NextcloudUserStatusPredefinedStatuses> getPredefinedStatuses() async {
@ -2022,11 +2023,11 @@ class NextcloudUserStatusClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusPredefinedStatuses), specifiedType: const FullType(NextcloudUserStatusPredefinedStatuses),
)! as NextcloudUserStatusPredefinedStatuses; )! as NextcloudUserStatusPredefinedStatuses;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
Future<NextcloudUserStatusHeartbeat> heartbeat({required final NextcloudUserStatusType status}) async { Future<NextcloudUserStatusHeartbeat> heartbeat({required final NextcloudUserStatusType status}) async {
@ -2050,11 +2051,11 @@ class NextcloudUserStatusClient {
); );
if (response.statusCode == 200) { if (response.statusCode == 200) {
return jsonSerializers.deserialize( return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)), await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusHeartbeat), specifiedType: const FullType(NextcloudUserStatusHeartbeat),
)! as NextcloudUserStatusHeartbeat; )! as NextcloudUserStatusHeartbeat;
} }
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
} }
} }

8
packages/nextcloud/lib/src/webdav/client.dart

@ -29,7 +29,7 @@ class WebDavClient {
..persistentConnection = true; ..persistentConnection = true;
for (final header in { for (final header in {
HttpHeaders.contentTypeHeader: 'application/xml', HttpHeaders.contentTypeHeader: 'application/xml',
...rootClient.baseHeaders, ...?rootClient.baseHeaders,
if (headers != null) ...headers, if (headers != null) ...headers,
if (rootClient.authentications.isNotEmpty) ...rootClient.authentications.first.headers, if (rootClient.authentications.isNotEmpty) ...rootClient.authentications.first.headers,
}.entries) { }.entries) {
@ -43,11 +43,7 @@ class WebDavClient {
final response = await request.close(); final response = await request.close();
if (!expectedCodes.contains(response.statusCode)) { if (!expectedCodes.contains(response.statusCode)) {
throw NextcloudApiException( throw await NextcloudApiException.fromResponse(response);
response.statusCode,
{}, // TODO
await response.bodyBytes,
);
} }
return response; return response;

Loading…
Cancel
Save