diff --git a/packages/dynamite/dynamite_end_to_end_test/lib/parameters.openapi.dart b/packages/dynamite/dynamite_end_to_end_test/lib/parameters.openapi.dart new file mode 100644 index 00000000..81b0baba --- /dev/null +++ b/packages/dynamite/dynamite_end_to_end_test/lib/parameters.openapi.dart @@ -0,0 +1,126 @@ +// ignore_for_file: camel_case_types +// ignore_for_file: discarded_futures +// ignore_for_file: public_member_api_docs +// ignore_for_file: unreachable_switch_case +import 'dart:typed_data'; + +import 'package:built_collection/built_collection.dart'; +import 'package:built_value/json_object.dart'; +import 'package:built_value/serializer.dart'; +import 'package:built_value/standard_json_plugin.dart'; +import 'package:dynamite_runtime/built_value.dart'; +import 'package:dynamite_runtime/http_client.dart'; +import 'package:dynamite_runtime/models.dart'; +import 'package:meta/meta.dart'; +import 'package:universal_io/io.dart'; + +class Client extends DynamiteClient { + Client( + super.baseURL, { + super.baseHeaders, + super.userAgent, + super.httpClient, + super.cookieJar, + }); + + Client.fromClient(final DynamiteClient client) + : super( + client.baseURL, + baseHeaders: client.baseHeaders, + httpClient: client.httpClient, + cookieJar: client.cookieJar, + authentications: client.authentications, + ); + + /// Returns a [Future] containing a [DynamiteResponse] with the status code, deserialized body and headers. + /// Throws a [DynamiteApiException] if the API call does not return an expected status code. + /// + /// Parameters: + /// * [contentString] + /// * [contentParameter] + /// + /// Status codes: + /// * 200 + /// + /// See: + /// * [$getRaw] for an experimental operation that returns a [DynamiteRawResponse] that can be serialized. + Future> $get({ + final ContentString>? contentString, + final ContentString>? contentParameter, + }) async { + final rawResponse = $getRaw( + contentString: contentString, + contentParameter: contentParameter, + ); + + return rawResponse.future; + } + + /// This method and the response it returns is experimental. The API might change without a major version bump. + /// + /// Returns a [Future] containing a [DynamiteRawResponse] with the raw [HttpClientResponse] and serialization helpers. + /// Throws a [DynamiteApiException] if the API call does not return an expected status code. + /// + /// Parameters: + /// * [contentString] + /// * [contentParameter] + /// + /// Status codes: + /// * 200 + /// + /// See: + /// * [$get] for an operation that returns a [DynamiteResponse] with a stable API. + @experimental + DynamiteRawResponse $getRaw({ + final ContentString>? contentString, + final ContentString>? contentParameter, + }) { + final queryParameters = {}; + final headers = { + 'Accept': 'application/json', + }; + Uint8List? body; + + if (contentString != null) { + queryParameters['content-string'] = _jsonSerializers.serialize( + contentString, + specifiedType: const FullType(ContentString, [ + FullType(BuiltMap, [FullType(String), FullType(JsonObject)]), + ]), + ); + } + if (contentParameter != null) { + queryParameters['content-parameter'] = _jsonSerializers.serialize( + contentParameter, + specifiedType: const FullType(ContentString, [ + FullType(BuiltMap, [FullType(String), FullType(JsonObject)]), + ]), + ); + } + const path = '/'; + final uri = Uri(path: path, queryParameters: queryParameters.isNotEmpty ? queryParameters : null); + + return DynamiteRawResponse( + response: executeRequest( + 'get', + uri, + headers, + body, + const {200}, + ), + bodyType: const FullType(JsonObject), + headersType: null, + serializers: _jsonSerializers, + ); + } +} + +// coverage:ignore-start +final Serializers _serializers = Serializers().toBuilder().build(); + +final Serializers _jsonSerializers = (_serializers.toBuilder() + ..add(DynamiteDoubleSerializer()) + ..addPlugin(StandardJsonPlugin()) + ..addPlugin(const ContentStringPlugin())) + .build(); +// coverage:ignore-end diff --git a/packages/dynamite/dynamite_end_to_end_test/lib/parameters.openapi.json b/packages/dynamite/dynamite_end_to_end_test/lib/parameters.openapi.json new file mode 100644 index 00000000..5b51e1cb --- /dev/null +++ b/packages/dynamite/dynamite_end_to_end_test/lib/parameters.openapi.json @@ -0,0 +1,51 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "parameters test", + "version": "0.0.1" + }, + "paths": { + "/": { + "get": { + "parameters": [ + { + "name": "content-string", + "in": "query", + "schema": { + "type": "string", + "contentMediaType": "application/json", + "contentSchema": { + "type": "object", + "additionalProperties": {} + } + } + }, + { + "name": "content-parameter", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": {} + } + } + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + } + } + } + } + } + } + } + }, + "tags": [] +} diff --git a/packages/dynamite/dynamite_end_to_end_test/pubspec.yaml b/packages/dynamite/dynamite_end_to_end_test/pubspec.yaml index c4b317ec..05e044c0 100644 --- a/packages/dynamite/dynamite_end_to_end_test/pubspec.yaml +++ b/packages/dynamite/dynamite_end_to_end_test/pubspec.yaml @@ -4,14 +4,18 @@ description: Tests for dynamite. Not meant for publishing. version: 1.0.0 environment: - sdk: '>=3.1.1 <4.0.0' + sdk: '>=3.1.0 <4.0.0' dependencies: - built_value: ^8.6.2 + built_collection: ^5.0.0 + built_value: ^8.0.0 dynamite_runtime: git: url: https://github.com/nextcloud/neon path: packages/dynamite/dynamite_runtime + meta: ^1.0.0 + universal_io: ^2.0.0 + dev_dependencies: build_runner: ^2.4.6 build_verify: ^3.1.0