Kate
1 year ago
committed by
GitHub
9 changed files with 274 additions and 32 deletions
@ -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<DynamiteResponse<JsonObject, void>> $get({ |
||||
final ContentString<BuiltMap<String, JsonObject>>? contentString, |
||||
final ContentString<BuiltMap<String, JsonObject>>? 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<JsonObject, void> $getRaw({ |
||||
final ContentString<BuiltMap<String, JsonObject>>? contentString, |
||||
final ContentString<BuiltMap<String, JsonObject>>? contentParameter, |
||||
}) { |
||||
final queryParameters = <String, dynamic>{}; |
||||
final headers = <String, String>{ |
||||
'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<JsonObject, void>( |
||||
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 |
@ -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": [] |
||||
} |
Loading…
Reference in new issue