Browse Source

Merge pull request #413 from Leptopoda/feature/streams

Feature/streams
pull/415/head
Nikolas Rimikis 1 year ago committed by GitHub
parent
commit
ca122ea3c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 297
      packages/dynamite/dynamite/lib/src/openapi_builder.dart
  2. 1
      packages/dynamite/dynamite_runtime/lib/http_client.dart
  3. 129
      packages/dynamite/dynamite_runtime/lib/src/http_client.dart
  4. 2
      packages/dynamite/dynamite_runtime/pubspec.yaml
  5. 386
      packages/nextcloud/lib/src/nextcloud.openapi.dart
  6. 8
      packages/nextcloud/lib/src/webdav/client.dart
  7. 1
      packages/nextcloud/pubspec.yaml

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

@ -67,48 +67,14 @@ class OpenAPIBuilder implements Builder {
"import 'package:built_value/json_object.dart';",
"import 'package:built_value/serializer.dart';",
"import 'package:built_value/standard_json_plugin.dart';",
"import 'package:cookie_jar/cookie_jar.dart';",
"import 'package:dynamite_runtime/content_string.dart';",
"import 'package:dynamite_runtime/http_client.dart';",
"import 'package:universal_io/io.dart';",
'',
"export 'package:cookie_jar/cookie_jar.dart';",
"export 'package:dynamite_runtime/http_client.dart';",
'',
"part '${p.basename(outputId.changeExtension('.g.dart').path)}';",
'',
Extension(
(final b) => b
..name = '${prefix}HttpClientResponseBody'
..on = refer('HttpClientResponse')
..methods.addAll([
Method(
(final b) => b
..name = 'bodyBytes'
..returns = refer('Future<Uint8List>')
..type = MethodType.getter
..modifier = MethodModifier.async
..body = const Code(
'''
final chunks = await toList();
if (chunks.isEmpty) {
return Uint8List(0);
}
return Uint8List.fromList(chunks.reduce((final value, final element) => [...value, ...element]));
''',
),
),
Method(
(final b) => b
..name = 'body'
..returns = refer('Future<String>')
..type = MethodType.getter
..modifier = MethodModifier.async
..lambda = true
..body = const Code(
'utf8.decode(await bodyBytes)',
),
),
]),
).accept(emitter).toString(),
Class(
(final b) => b
..name = '${prefix}Response'
@ -116,20 +82,7 @@ class OpenAPIBuilder implements Builder {
refer('T'),
refer('U'),
])
..fields.addAll([
Field(
(final b) => b
..name = 'data'
..type = refer('T')
..modifier = FieldModifier.final$,
),
Field(
(final b) => b
..name = 'headers'
..type = refer('U')
..modifier = FieldModifier.final$,
),
])
..extend = refer('DynamiteResponse<T, U>')
..constructors.add(
Constructor(
(final b) => b
@ -138,7 +91,7 @@ class OpenAPIBuilder implements Builder {
(final name) => Parameter(
(final b) => b
..name = name
..toThis = true,
..toSuper = true,
),
),
),
@ -159,27 +112,8 @@ class OpenAPIBuilder implements Builder {
).accept(emitter).toString(),
Class(
(final b) => b
..name = 'RawResponse'
..fields.addAll([
Field(
(final b) => b
..name = 'statusCode'
..type = refer('int')
..modifier = FieldModifier.final$,
),
Field(
(final b) => b
..name = 'headers'
..type = refer('Map<String, String>')
..modifier = FieldModifier.final$,
),
Field(
(final b) => b
..name = 'body'
..type = refer('Uint8List')
..modifier = FieldModifier.final$,
),
])
..name = '${prefix}ApiException'
..extend = refer('DynamiteApiException')
..constructors.add(
Constructor(
(final b) => b
@ -188,61 +122,43 @@ class OpenAPIBuilder implements Builder {
(final name) => Parameter(
(final b) => b
..name = name
..toThis = true,
..toSuper = true,
),
),
),
),
)
..methods.add(
..methods.addAll([
Method(
(final b) => b
..name = 'toString'
..returns = refer('String')
..annotations.add(refer('override'))
..lambda = true
..body = const Code(
r"'RawResponse(statusCode: $statusCode, headers: $headers, body: ${utf8.decode(body)})'",
),
),
),
).accept(emitter).toString(),
Class(
(final b) => b
..name = '${prefix}ApiException'
..extend = refer('RawResponse')
..implements.add(refer('Exception'))
..constructors.addAll(
[
Constructor(
(final b) => b
..requiredParameters.addAll(
['statusCode', 'headers', 'body'].map(
(final name) => Parameter(
(final b) => b
..name = name
..toSuper = true,
),
),
),
),
Constructor(
(final b) => b
..name = 'fromResponse'
..factory = true
..lambda = true
..returns = refer('Future<${prefix}ApiException>')
..static = true
..modifier = MethodModifier.async
..requiredParameters.add(
Parameter(
(final b) => b
..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(
(final b) => b
..name = 'toString'
@ -250,32 +166,11 @@ class OpenAPIBuilder implements Builder {
..annotations.add(refer('override'))
..lambda = true
..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(),
if (hasAnySecurity) ...[
Class(
(final b) => b
..name = '${prefix}Authentication'
..abstract = true
..methods.addAll([
Method(
(final b) => b
..name = 'id'
..type = MethodType.getter
..returns = refer('String'),
),
Method(
(final b) => b
..name = 'headers'
..type = MethodType.getter
..returns = refer('Map<String, String>'),
),
]),
).accept(emitter).toString(),
],
];
if (spec.components?.securitySchemes != null) {
@ -291,7 +186,7 @@ class OpenAPIBuilder implements Builder {
final fields = ['username', 'password'];
b
..name = '${prefix}HttpBasicAuthentication'
..extend = refer('${prefix}Authentication')
..extend = refer('DynamiteAuthentication')
..constructors.add(
Constructor(
(final b) => b
@ -352,7 +247,7 @@ class OpenAPIBuilder implements Builder {
(final b) {
b
..name = '${prefix}HttpBearerAuthentication'
..extend = refer('${prefix}Authentication')
..extend = refer('DynamiteAuthentication')
..constructors.add(
Constructor(
(final b) => b
@ -437,42 +332,7 @@ class OpenAPIBuilder implements Builder {
(final b) {
if (isRootClient) {
b
..fields.addAll([
Field(
(final b) => b
..name = 'baseURL'
..type = refer('String')
..modifier = FieldModifier.final$,
),
Field(
(final b) => b
..name = 'baseHeaders'
..type = refer('Map<String, String>')
..modifier = FieldModifier.final$
..late = true,
),
Field(
(final b) => b
..name = 'httpClient'
..type = refer('HttpClient')
..modifier = FieldModifier.final$
..late = true,
),
Field(
(final b) => b
..name = 'cookieJar'
..type = refer('CookieJar?')
..modifier = FieldModifier.final$,
),
if (hasAnySecurity) ...[
Field(
(final b) => b
..name = 'authentications'
..type = refer('List<${prefix}Authentication>')
..modifier = FieldModifier.final$,
),
],
])
..extend = refer('DynamiteClient')
..constructors.add(
Constructor(
(final b) => b
@ -480,109 +340,45 @@ class OpenAPIBuilder implements Builder {
Parameter(
(final b) => b
..name = 'baseURL'
..toThis = true,
..toSuper = true,
),
)
..optionalParameters.addAll([
Parameter(
(final b) => b
..name = 'baseHeaders'
..type = refer('Map<String, String>?')
..toSuper = true
..named = true,
),
Parameter(
(final b) => b
..name = 'userAgent'
..type = refer('String?')
..toSuper = true
..named = true,
),
Parameter(
(final b) => b
..name = 'httpClient'
..type = refer('HttpClient?')
..toSuper = true
..named = true,
),
Parameter(
(final b) => b
..name = 'cookieJar'
..toThis = true
..toSuper = true
..named = true,
),
if (hasAnySecurity) ...[
Parameter(
(final b) => b
..name = 'authentications'
..toThis = true
..named = true
..defaultTo = const Code('const []'),
..toSuper = true
..named = true,
),
],
])
..body = const Code('''
this.baseHeaders = {
...?baseHeaders,
};
this.httpClient = (httpClient ?? HttpClient())..userAgent = userAgent;
'''),
),
)
..methods.addAll([
Method(
(final b) => b
..name = 'doRequest'
..returns = refer('Future<RawResponse>')
..modifier = MethodModifier.async
..requiredParameters.addAll([
Parameter(
(final b) => b
..name = 'method'
..type = refer('String'),
),
Parameter(
(final b) => b
..name = 'path'
..type = refer('String'),
),
Parameter(
(final b) => b
..name = 'headers'
..type = refer('Map<String, String>'),
),
Parameter(
(final b) => b
..name = 'body'
..type = refer('Uint8List?'),
]),
),
])
..body = const Code(r'''
final uri = Uri.parse('$baseURL$path');
final request = await httpClient.openUrl(method, uri);
for (final header in {...baseHeaders, ...headers}.entries) {
request.headers.add(header.key, header.value);
}
if (body != null) {
request.add(body.toList());
}
if (cookieJar != null) {
request.cookies.addAll(await cookieJar!.loadForRequest(uri));
}
final response = await request.close();
if (cookieJar != null) {
await cookieJar!.saveFromResponse(uri, response.cookies);
}
final responseHeaders = <String, String>{};
response.headers.forEach((final name, final values) {
responseHeaders[name] = values.last;
});
return RawResponse(
response.statusCode,
responseHeaders,
await response.bodyBytes,
);
'''),
),
]);
} else {
b
..fields.add(
@ -934,16 +730,21 @@ class OpenAPIBuilder implements Builder {
if (mimeType == '*/*' || mimeType.startsWith('image/')) {
dataType = 'Uint8List';
dataValue = 'response.body';
dataValue = 'response.bodyBytes';
} else if (mimeType.startsWith('text/')) {
dataType = 'String';
dataValue = 'utf8.decode(response.body)';
dataValue = 'await response.body';
} else if (mimeType == 'application/json') {
dataType = result.name;
if (result.name == 'dynamic') {
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 {
dataValue = result.deserialize(result.decode('utf8.decode(response.body)'));
dataValue = result.deserialize('await response.jsonBody');
}
} else {
throw Exception('Can not parse mime type "$mimeType"');
@ -970,7 +771,7 @@ class OpenAPIBuilder implements Builder {
code.write('}');
}
code.write(
'throw ${prefix}ApiException.fromResponse(response); // coverage:ignore-line\n',
'throw await ${prefix}ApiException.fromResponse(response); // coverage:ignore-line\n',
);
} else {
b.returns = refer('Future');

1
packages/dynamite/dynamite_runtime/lib/http_client.dart

@ -0,0 +1 @@
export 'src/http_client.dart';

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

@ -0,0 +1,129 @@
import 'dart:convert';
import 'dart:typed_data';
import 'package:cookie_jar/cookie_jar.dart';
import 'package:universal_io/io.dart';
export 'package:cookie_jar/cookie_jar.dart';
extension DynamiteHttpClientResponseBody on HttpClientResponse {
Future<Uint8List> get bodyBytes async {
final data = await expand((final element) => element).toList();
return Uint8List.fromList(data);
}
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> {
DynamiteResponse(
this.data,
this.headers,
);
final T data;
final U headers;
@override
String toString() => 'DynamiteResponse(data: $data, headers: $headers)';
}
class DynamiteApiException implements Exception {
DynamiteApiException(
this.statusCode,
this.headers,
this.body,
);
final int statusCode;
final Map<String, String> headers;
final String body;
@override
String toString() => 'DynamiteApiException(statusCode: $statusCode, headers: $headers, body: $body)';
}
abstract class DynamiteAuthentication {
String get id;
Map<String, String> get headers;
}
class DynamiteHttpBasicAuthentication extends DynamiteAuthentication {
DynamiteHttpBasicAuthentication({
required this.username,
required this.password,
});
final String username;
final String password;
@override
String get id => 'basic_auth';
@override
Map<String, String> get headers => {
'Authorization': 'Basic ${base64.encode(utf8.encode('$username:$password'))}',
};
}
class DynamiteClient {
DynamiteClient(
this.baseURL, {
this.baseHeaders,
final String? userAgent,
final HttpClient? httpClient,
this.cookieJar,
this.authentications = const [],
}) : httpClient = (httpClient ?? HttpClient())..userAgent = userAgent;
final String baseURL;
final Map<String, String>? baseHeaders;
final HttpClient httpClient;
final CookieJar? cookieJar;
final List<DynamiteAuthentication> authentications;
Future<HttpClientResponse> doRequest(
final String method,
final String path,
final Map<String, String> headers,
final Uint8List? body,
) async {
final uri = Uri.parse('$baseURL$path');
final request = await httpClient.openUrl(method, uri);
for (final header in {...?baseHeaders, ...headers}.entries) {
request.headers.add(header.key, header.value);
}
if (body != null) {
request.add(body.toList());
}
if (cookieJar != null) {
request.cookies.addAll(await cookieJar!.loadForRequest(uri));
}
final response = await request.close();
if (cookieJar != null) {
await cookieJar!.saveFromResponse(uri, response.cookies);
}
return response;
}
}

2
packages/dynamite/dynamite_runtime/pubspec.yaml

@ -7,6 +7,8 @@ environment:
dependencies:
built_value: ^8.5.0
cookie_jar: ^4.0.5
universal_io: ^2.2.2
dev_dependencies:
build_runner: ^2.4.2

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

@ -8,81 +8,53 @@ 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:cookie_jar/cookie_jar.dart';
import 'package:dynamite_runtime/content_string.dart';
import 'package:dynamite_runtime/http_client.dart';
import 'package:universal_io/io.dart';
export 'package:cookie_jar/cookie_jar.dart';
export 'package:dynamite_runtime/http_client.dart';
part 'nextcloud.openapi.g.dart';
extension NextcloudHttpClientResponseBody on HttpClientResponse {
Future<Uint8List> get bodyBytes async {
final chunks = await toList();
if (chunks.isEmpty) {
return Uint8List(0);
}
return Uint8List.fromList(chunks.reduce((final value, final element) => [...value, ...element]));
}
Future<String> get body async => utf8.decode(await bodyBytes);
}
class NextcloudResponse<T, U> {
class NextcloudResponse<T, U> extends DynamiteResponse<T, U> {
NextcloudResponse(
this.data,
this.headers,
super.data,
super.headers,
);
final T data;
final U headers;
@override
String toString() => 'NextcloudResponse(data: $data, headers: $headers)';
}
class RawResponse {
RawResponse(
this.statusCode,
this.headers,
this.body,
);
final int statusCode;
final Map<String, String> headers;
final Uint8List body;
@override
String toString() => 'RawResponse(statusCode: $statusCode, headers: $headers, body: ${utf8.decode(body)})';
}
class NextcloudApiException extends RawResponse implements Exception {
class NextcloudApiException extends DynamiteApiException {
NextcloudApiException(
super.statusCode,
super.headers,
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.headers,
response.body,
response.responseHeaders,
body,
);
@override
String toString() =>
'NextcloudApiException(statusCode: ${super.statusCode}, headers: ${super.headers}, body: ${utf8.decode(super.body)})';
}
abstract class NextcloudAuthentication {
String get id;
Map<String, String> get headers;
@override
String toString() => 'NextcloudApiException(statusCode: $statusCode, headers: $headers, body: $body)';
}
class NextcloudHttpBasicAuthentication extends NextcloudAuthentication {
class NextcloudHttpBasicAuthentication extends DynamiteAuthentication {
NextcloudHttpBasicAuthentication({
required this.username,
required this.password,
@ -100,63 +72,15 @@ class NextcloudHttpBasicAuthentication extends NextcloudAuthentication {
};
}
class NextcloudClient {
class NextcloudClient extends DynamiteClient {
NextcloudClient(
this.baseURL, {
final Map<String, String>? baseHeaders,
final String? userAgent,
final HttpClient? httpClient,
this.cookieJar,
this.authentications = const [],
}) {
this.baseHeaders = {
...?baseHeaders,
};
this.httpClient = (httpClient ?? HttpClient())..userAgent = userAgent;
}
final String baseURL;
late final Map<String, String> baseHeaders;
late final HttpClient httpClient;
final CookieJar? cookieJar;
final List<NextcloudAuthentication> authentications;
Future<RawResponse> doRequest(
final String method,
final String path,
final Map<String, String> headers,
final Uint8List? body,
) async {
final uri = Uri.parse('$baseURL$path');
final request = await httpClient.openUrl(method, uri);
for (final header in {...baseHeaders, ...headers}.entries) {
request.headers.add(header.key, header.value);
}
if (body != null) {
request.add(body.toList());
}
if (cookieJar != null) {
request.cookies.addAll(await cookieJar!.loadForRequest(uri));
}
final response = await request.close();
if (cookieJar != null) {
await cookieJar!.saveFromResponse(uri, response.cookies);
}
final responseHeaders = <String, String>{};
response.headers.forEach((final name, final values) {
responseHeaders[name] = values.last;
super.baseURL, {
super.baseHeaders,
super.userAgent,
super.httpClient,
super.cookieJar,
super.authentications,
});
return RawResponse(
response.statusCode,
responseHeaders,
await response.bodyBytes,
);
}
NextcloudCoreClient get core => NextcloudCoreClient(this);
NextcloudNewsClient get news => NextcloudNewsClient(this);
@ -187,11 +111,11 @@ class NextcloudCoreClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudCoreServerStatus),
)! as NextcloudCoreServerStatus;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudCoreServerCapabilities> getCapabilities() async {
@ -214,11 +138,11 @@ class NextcloudCoreClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudCoreServerCapabilities),
)! as NextcloudCoreServerCapabilities;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudCoreNavigationApps> getNavigationApps() async {
@ -241,11 +165,11 @@ class NextcloudCoreClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudCoreNavigationApps),
)! as NextcloudCoreNavigationApps;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudCoreLoginFlowInit> initLoginFlow() async {
@ -263,11 +187,11 @@ class NextcloudCoreClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -286,11 +210,11 @@ class NextcloudCoreClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudCoreLoginFlowResult),
)! as NextcloudCoreLoginFlowResult;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<Uint8List> getPreview({
@ -337,9 +261,9 @@ class NextcloudCoreClient {
body,
);
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({
@ -366,9 +290,9 @@ class NextcloudCoreClient {
body,
);
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({
@ -395,9 +319,9 @@ class NextcloudCoreClient {
body,
);
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({
@ -437,11 +361,11 @@ class NextcloudCoreClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudCoreAutocompleteResult),
)! as NextcloudCoreAutocompleteResult;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<JsonObject> deleteAppPassword() async {
@ -463,9 +387,9 @@ class NextcloudCoreClient {
body,
);
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
}
}
@ -494,11 +418,11 @@ class NextcloudNewsClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudNewsSupportedAPIVersions),
)! as NextcloudNewsSupportedAPIVersions;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudNewsListFolders> listFolders() async {
@ -521,11 +445,11 @@ class NextcloudNewsClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -549,11 +473,11 @@ class NextcloudNewsClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudNewsListFolders),
)! as NextcloudNewsListFolders;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future renameFolder({
@ -580,7 +504,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future deleteFolder({required final int folderId}) async {
@ -603,7 +527,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future markFolderAsRead({
@ -630,7 +554,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudNewsListFeeds> listFeeds() async {
@ -653,11 +577,11 @@ class NextcloudNewsClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudNewsListFeeds),
)! as NextcloudNewsListFeeds;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudNewsListFeeds> addFeed({
@ -687,11 +611,11 @@ class NextcloudNewsClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -714,7 +638,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future moveFeed({
@ -743,7 +667,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future renameFeed({
@ -770,7 +694,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future markFeedAsRead({
@ -797,7 +721,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudNewsListArticles> listArticles({
@ -845,11 +769,11 @@ class NextcloudNewsClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudNewsListArticles),
)! as NextcloudNewsListArticles;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudNewsListArticles> listUpdatedArticles({
@ -885,11 +809,11 @@ class NextcloudNewsClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -912,7 +836,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future markArticleAsUnread({required final int itemId}) async {
@ -935,7 +859,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future starArticle({required final int itemId}) async {
@ -958,7 +882,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future unstarArticle({required final int itemId}) async {
@ -981,7 +905,7 @@ class NextcloudNewsClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
}
@ -1035,11 +959,11 @@ class NextcloudNotesClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(BuiltList, [FullType(NextcloudNotesNote)]),
)! as BuiltList<NextcloudNotesNote>;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudNotesNote> createNote({
@ -1082,12 +1006,10 @@ class NextcloudNotesClient {
body,
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
specifiedType: const FullType(NextcloudNotesNote),
)! as NextcloudNotesNote;
return jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(NextcloudNotesNote))!
as NextcloudNotesNote;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudNotesNote> getNote({
@ -1120,12 +1042,10 @@ class NextcloudNotesClient {
body,
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
specifiedType: const FullType(NextcloudNotesNote),
)! as NextcloudNotesNote;
return jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(NextcloudNotesNote))!
as NextcloudNotesNote;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudNotesNote> updateNote({
@ -1174,12 +1094,10 @@ class NextcloudNotesClient {
body,
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
specifiedType: const FullType(NextcloudNotesNote),
)! as NextcloudNotesNote;
return jsonSerializers.deserialize(await response.jsonBody, 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 {
@ -1202,9 +1120,9 @@ class NextcloudNotesClient {
body,
);
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 {
@ -1227,11 +1145,11 @@ class NextcloudNotesClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -1260,11 +1178,11 @@ class NextcloudNotesClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudNotesSettings),
)! as NextcloudNotesSettings;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
}
@ -1293,11 +1211,11 @@ class NextcloudNotificationsClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudNotificationsListNotifications),
)! as NextcloudNotificationsListNotifications;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<String> deleteAllNotifications() async {
@ -1319,9 +1237,9 @@ class NextcloudNotificationsClient {
body,
);
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 {
@ -1345,11 +1263,11 @@ class NextcloudNotificationsClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -1372,12 +1290,10 @@ class NextcloudNotificationsClient {
body,
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
specifiedType: const FullType(NextcloudEmptyOCS),
)! as NextcloudEmptyOCS;
return jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(NextcloudEmptyOCS))!
as NextcloudEmptyOCS;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudNotificationsPushServerRegistration> registerDevice({
@ -1407,11 +1323,11 @@ class NextcloudNotificationsClient {
);
if (response.statusCode == 201) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudNotificationsPushServerRegistration),
)! as NextcloudNotificationsPushServerRegistration;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<String> removeDevice() async {
@ -1433,9 +1349,9 @@ class NextcloudNotificationsClient {
body,
);
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({
@ -1466,12 +1382,10 @@ class NextcloudNotificationsClient {
body,
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
specifiedType: const FullType(NextcloudEmptyOCS),
)! as NextcloudEmptyOCS;
return jsonSerializers.deserialize(await response.jsonBody, specifiedType: const FullType(NextcloudEmptyOCS))!
as NextcloudEmptyOCS;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
}
@ -1500,11 +1414,11 @@ class NextcloudProvisioningApiClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -1528,11 +1442,11 @@ class NextcloudProvisioningApiClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudProvisioningApiUser),
)! as NextcloudProvisioningApiUser;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
}
@ -1562,11 +1476,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderCheckResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderCheckResponse200ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
/// Set keepalive interval
@ -1595,11 +1509,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderSetKeepaliveResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderSetKeepaliveResponse200ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
/// Request to create a new deviceId
@ -1626,11 +1540,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderCreateDeviceResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderCreateDeviceResponse200ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
/// Request to get push messages
@ -1659,11 +1573,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 401) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderSyncDeviceResponse401ApplicationJson),
)! as NextcloudUnifiedPushProviderSyncDeviceResponse401ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
/// Delete a device
@ -1690,11 +1604,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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
@ -1723,11 +1637,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderCreateAppResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderCreateAppResponse200ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
/// Delete an authorization token
@ -1754,11 +1668,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderDeleteAppResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderDeleteAppResponse200ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
/// Unifiedpush discovery Following specifications
@ -1785,11 +1699,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderUnifiedpushDiscoveryResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderUnifiedpushDiscoveryResponse200ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
/// Receive notifications from 3rd parties
@ -1814,11 +1728,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 201) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderPushResponse201ApplicationJson),
)! as NextcloudUnifiedPushProviderPushResponse201ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
/// Matrix Gateway discovery
@ -1842,11 +1756,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderGatewayMatrixDiscoveryResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderGatewayMatrixDiscoveryResponse200ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
/// Matrix Gateway
@ -1870,11 +1784,11 @@ class NextcloudUnifiedPushProviderClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUnifiedPushProviderGatewayMatrixResponse200ApplicationJson),
)! as NextcloudUnifiedPushProviderGatewayMatrixResponse200ApplicationJson;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
}
@ -1903,11 +1817,11 @@ class NextcloudUserStatusClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -1931,11 +1845,11 @@ class NextcloudUserStatusClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetPublicStatus),
)! as NextcloudUserStatusGetPublicStatus;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudUserStatusGetStatus> getStatus() async {
@ -1958,11 +1872,11 @@ class NextcloudUserStatusClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -1986,11 +1900,11 @@ class NextcloudUserStatusClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetStatus),
)! as NextcloudUserStatusGetStatus;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudUserStatusGetStatus> setPredefinedMessage({
@ -2020,11 +1934,11 @@ class NextcloudUserStatusClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetStatus),
)! as NextcloudUserStatusGetStatus;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudUserStatusGetStatus> setCustomMessage({
@ -2060,11 +1974,11 @@ class NextcloudUserStatusClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(NextcloudUserStatusGetStatus),
)! as NextcloudUserStatusGetStatus;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future clearMessage() async {
@ -2086,7 +2000,7 @@ class NextcloudUserStatusClient {
if (response.statusCode == 200) {
return;
}
throw NextcloudApiException.fromResponse(response); // coverage:ignore-line
throw await NextcloudApiException.fromResponse(response); // coverage:ignore-line
}
Future<NextcloudUserStatusPredefinedStatuses> getPredefinedStatuses() async {
@ -2109,11 +2023,11 @@ class NextcloudUserStatusClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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 {
@ -2137,11 +2051,11 @@ class NextcloudUserStatusClient {
);
if (response.statusCode == 200) {
return jsonSerializers.deserialize(
json.decode(utf8.decode(response.body)),
await response.jsonBody,
specifiedType: const FullType(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;
for (final header in {
HttpHeaders.contentTypeHeader: 'application/xml',
...rootClient.baseHeaders,
...?rootClient.baseHeaders,
if (headers != null) ...headers,
if (rootClient.authentications.isNotEmpty) ...rootClient.authentications.first.headers,
}.entries) {
@ -43,11 +43,7 @@ class WebDavClient {
final response = await request.close();
if (!expectedCodes.contains(response.statusCode)) {
throw NextcloudApiException(
response.statusCode,
{}, // TODO
await response.bodyBytes,
);
throw await NextcloudApiException.fromResponse(response);
}
return response;

1
packages/nextcloud/pubspec.yaml

@ -8,7 +8,6 @@ environment:
dependencies:
built_collection: ^5.1.1
built_value: ^8.5.0
cookie_jar: ^4.0.2
crypto: ^3.0.3
crypton: ^2.0.5
dynamite_runtime:

Loading…
Cancel
Save