[dart-dio] Improve API & API-Client field initialization (#8589)

This commit is contained in:
Peter Leibiger 2021-02-02 11:46:51 +01:00 committed by GitHub
parent 769b0e0e38
commit 1b440e191c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 174 additions and 116 deletions

View File

@ -11,10 +11,12 @@ import 'package:built_value/serializer.dart';
{{/fullImports}} {{/fullImports}}
class {{classname}} { class {{classname}} {
final Dio _dio;
Serializers _serializers;
{{classname}}(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const {{classname}}(this._dio, this._serializers);
{{#operation}} {{#operation}}
/// {{{summary}}} /// {{{summary}}}

View File

@ -10,31 +10,37 @@ import 'package:{{pubName}}/auth/oauth.dart';
{{#apiInfo}}{{#apis}}import 'package:{{pubName}}/api/{{classFilename}}.dart'; {{#apiInfo}}{{#apis}}import 'package:{{pubName}}/api/{{classFilename}}.dart';
{{/apis}}{{/apiInfo}} {{/apis}}{{/apiInfo}}
final _defaultInterceptors = [OAuthInterceptor(), BasicAuthInterceptor(), ApiKeyAuthInterceptor()]; final _defaultInterceptors = [
OAuthInterceptor(),
BasicAuthInterceptor(),
ApiKeyAuthInterceptor(),
];
class {{clientName}} { class {{clientName}} {
Dio dio; static const String basePath = r'{{{basePath}}}';
Serializers serializers;
String basePath = '{{{basePath}}}';
{{clientName}}({this.dio, Serializers serializers, String basePathOverride, List<Interceptor> interceptors}) { final Dio dio;
if (dio == null) {
BaseOptions options = new BaseOptions( final Serializers serializers;
{{clientName}}({
Dio dio,
Serializers serializers,
String basePathOverride,
List<Interceptor> interceptors,
}) : this.serializers = serializers ?? standardSerializers,
this.dio = dio ??
Dio(BaseOptions(
baseUrl: basePathOverride ?? basePath, baseUrl: basePathOverride ?? basePath,
connectTimeout: 5000, connectTimeout: 5000,
receiveTimeout: 3000, receiveTimeout: 3000,
); )) {
this.dio = new Dio(options); if (interceptors == null) {
} this.dio.interceptors.addAll(_defaultInterceptors);
} else {
if (interceptors == null) { this.dio.interceptors.addAll(interceptors);
this.dio.interceptors.addAll(_defaultInterceptors); }
} else {
this.dio.interceptors.addAll(interceptors);
}
this.serializers = serializers ?? standardSerializers;
} }
void setOAuthToken(String name, String token) { void setOAuthToken(String name, String token) {

View File

@ -4,6 +4,9 @@ import 'package:built_value/serializer.dart';
import 'package:time_machine/time_machine.dart'; import 'package:time_machine/time_machine.dart';
class OffsetDateSerializer implements PrimitiveSerializer<OffsetDate> { class OffsetDateSerializer implements PrimitiveSerializer<OffsetDate> {
const OffsetDateSerializer();
@override @override
Iterable<Type> get types => BuiltList<Type>([OffsetDate]); Iterable<Type> get types => BuiltList<Type>([OffsetDate]);
@ -25,6 +28,9 @@ class OffsetDateSerializer implements PrimitiveSerializer<OffsetDate> {
} }
class OffsetDateTimeSerializer implements PrimitiveSerializer<OffsetDateTime> { class OffsetDateTimeSerializer implements PrimitiveSerializer<OffsetDateTime> {
const OffsetDateTimeSerializer();
@override @override
Iterable<Type> get types => BuiltList<Type>([OffsetDateTime]); Iterable<Type> get types => BuiltList<Type>([OffsetDateTime]);

View File

@ -26,8 +26,8 @@ Serializers serializers = (_$serializers.toBuilder(){{#apiInfo}}{{#apis}}{{#seri
() => MapBuilder<String, {{baseType}}>(), () => MapBuilder<String, {{baseType}}>(),
{{/isMap}} {{/isMap}}
){{/serializers}}{{/apis}}{{/apiInfo}}{{#timeMachine}} ){{/serializers}}{{/apis}}{{/apiInfo}}{{#timeMachine}}
..add(OffsetDateSerializer()) ..add(const OffsetDateSerializer())
..add(OffsetDateTimeSerializer()){{/timeMachine}} ..add(const OffsetDateTimeSerializer()){{/timeMachine}}
..add(Iso8601DateTimeSerializer())) ..add(Iso8601DateTimeSerializer()))
.build(); .build();

View File

@ -18,31 +18,37 @@ import 'package:openapi/api/store_api.dart';
import 'package:openapi/api/user_api.dart'; import 'package:openapi/api/user_api.dart';
final _defaultInterceptors = [OAuthInterceptor(), BasicAuthInterceptor(), ApiKeyAuthInterceptor()]; final _defaultInterceptors = [
OAuthInterceptor(),
BasicAuthInterceptor(),
ApiKeyAuthInterceptor(),
];
class Openapi { class Openapi {
Dio dio; static const String basePath = r'http://petstore.swagger.io/v2';
Serializers serializers;
String basePath = 'http://petstore.swagger.io/v2';
Openapi({this.dio, Serializers serializers, String basePathOverride, List<Interceptor> interceptors}) { final Dio dio;
if (dio == null) {
BaseOptions options = new BaseOptions( final Serializers serializers;
Openapi({
Dio dio,
Serializers serializers,
String basePathOverride,
List<Interceptor> interceptors,
}) : this.serializers = serializers ?? standardSerializers,
this.dio = dio ??
Dio(BaseOptions(
baseUrl: basePathOverride ?? basePath, baseUrl: basePathOverride ?? basePath,
connectTimeout: 5000, connectTimeout: 5000,
receiveTimeout: 3000, receiveTimeout: 3000,
); )) {
this.dio = new Dio(options); if (interceptors == null) {
} this.dio.interceptors.addAll(_defaultInterceptors);
} else {
if (interceptors == null) { this.dio.interceptors.addAll(interceptors);
this.dio.interceptors.addAll(_defaultInterceptors); }
} else {
this.dio.interceptors.addAll(interceptors);
}
this.serializers = serializers ?? standardSerializers;
} }
void setOAuthToken(String name, String token) { void setOAuthToken(String name, String token) {

View File

@ -17,10 +17,12 @@ import 'package:built_collection/built_collection.dart';
import 'package:openapi/api_util.dart'; import 'package:openapi/api_util.dart';
class PetApi { class PetApi {
final Dio _dio;
Serializers _serializers;
PetApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const PetApi(this._dio, this._serializers);
/// Add a new pet to the store /// Add a new pet to the store
/// ///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/order.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
class StoreApi { class StoreApi {
final Dio _dio;
Serializers _serializers;
StoreApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const StoreApi(this._dio, this._serializers);
/// Delete purchase order by ID /// Delete purchase order by ID
/// ///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/user.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
class UserApi { class UserApi {
final Dio _dio;
Serializers _serializers;
UserApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const UserApi(this._dio, this._serializers);
/// Create user /// Create user
/// ///

View File

@ -18,31 +18,37 @@ import 'package:openapi/api/store_api.dart';
import 'package:openapi/api/user_api.dart'; import 'package:openapi/api/user_api.dart';
final _defaultInterceptors = [OAuthInterceptor(), BasicAuthInterceptor(), ApiKeyAuthInterceptor()]; final _defaultInterceptors = [
OAuthInterceptor(),
BasicAuthInterceptor(),
ApiKeyAuthInterceptor(),
];
class Openapi { class Openapi {
Dio dio; static const String basePath = r'http://petstore.swagger.io/v2';
Serializers serializers;
String basePath = 'http://petstore.swagger.io/v2';
Openapi({this.dio, Serializers serializers, String basePathOverride, List<Interceptor> interceptors}) { final Dio dio;
if (dio == null) {
BaseOptions options = new BaseOptions( final Serializers serializers;
Openapi({
Dio dio,
Serializers serializers,
String basePathOverride,
List<Interceptor> interceptors,
}) : this.serializers = serializers ?? standardSerializers,
this.dio = dio ??
Dio(BaseOptions(
baseUrl: basePathOverride ?? basePath, baseUrl: basePathOverride ?? basePath,
connectTimeout: 5000, connectTimeout: 5000,
receiveTimeout: 3000, receiveTimeout: 3000,
); )) {
this.dio = new Dio(options); if (interceptors == null) {
} this.dio.interceptors.addAll(_defaultInterceptors);
} else {
if (interceptors == null) { this.dio.interceptors.addAll(interceptors);
this.dio.interceptors.addAll(_defaultInterceptors); }
} else {
this.dio.interceptors.addAll(interceptors);
}
this.serializers = serializers ?? standardSerializers;
} }
void setOAuthToken(String name, String token) { void setOAuthToken(String name, String token) {

View File

@ -17,10 +17,12 @@ import 'package:built_collection/built_collection.dart';
import 'package:openapi/api_util.dart'; import 'package:openapi/api_util.dart';
class PetApi { class PetApi {
final Dio _dio;
Serializers _serializers;
PetApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const PetApi(this._dio, this._serializers);
/// Add a new pet to the store /// Add a new pet to the store
/// ///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/order.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
class StoreApi { class StoreApi {
final Dio _dio;
Serializers _serializers;
StoreApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const StoreApi(this._dio, this._serializers);
/// Delete purchase order by ID /// Delete purchase order by ID
/// ///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/user.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
class UserApi { class UserApi {
final Dio _dio;
Serializers _serializers;
UserApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const UserApi(this._dio, this._serializers);
/// Create user /// Create user
/// ///

View File

@ -22,31 +22,37 @@ import 'package:openapi/api/store_api.dart';
import 'package:openapi/api/user_api.dart'; import 'package:openapi/api/user_api.dart';
final _defaultInterceptors = [OAuthInterceptor(), BasicAuthInterceptor(), ApiKeyAuthInterceptor()]; final _defaultInterceptors = [
OAuthInterceptor(),
BasicAuthInterceptor(),
ApiKeyAuthInterceptor(),
];
class Openapi { class Openapi {
Dio dio; static const String basePath = r'http://petstore.swagger.io:80/v2';
Serializers serializers;
String basePath = 'http://petstore.swagger.io:80/v2';
Openapi({this.dio, Serializers serializers, String basePathOverride, List<Interceptor> interceptors}) { final Dio dio;
if (dio == null) {
BaseOptions options = new BaseOptions( final Serializers serializers;
Openapi({
Dio dio,
Serializers serializers,
String basePathOverride,
List<Interceptor> interceptors,
}) : this.serializers = serializers ?? standardSerializers,
this.dio = dio ??
Dio(BaseOptions(
baseUrl: basePathOverride ?? basePath, baseUrl: basePathOverride ?? basePath,
connectTimeout: 5000, connectTimeout: 5000,
receiveTimeout: 3000, receiveTimeout: 3000,
); )) {
this.dio = new Dio(options); if (interceptors == null) {
} this.dio.interceptors.addAll(_defaultInterceptors);
} else {
if (interceptors == null) { this.dio.interceptors.addAll(interceptors);
this.dio.interceptors.addAll(_defaultInterceptors); }
} else {
this.dio.interceptors.addAll(interceptors);
}
this.serializers = serializers ?? standardSerializers;
} }
void setOAuthToken(String name, String token) { void setOAuthToken(String name, String token) {

View File

@ -13,10 +13,12 @@ import 'package:built_value/serializer.dart';
import 'package:openapi/model/model_client.dart'; import 'package:openapi/model/model_client.dart';
class AnotherFakeApi { class AnotherFakeApi {
final Dio _dio;
Serializers _serializers;
AnotherFakeApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const AnotherFakeApi(this._dio, this._serializers);
/// To test special tags /// To test special tags
/// ///

View File

@ -13,10 +13,12 @@ import 'package:built_value/serializer.dart';
import 'package:openapi/model/inline_response_default.dart'; import 'package:openapi/model/inline_response_default.dart';
class DefaultApi { class DefaultApi {
final Dio _dio;
Serializers _serializers;
DefaultApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const DefaultApi(this._dio, this._serializers);
/// ///
/// ///

View File

@ -21,10 +21,12 @@ import 'package:built_collection/built_collection.dart';
import 'package:openapi/api_util.dart'; import 'package:openapi/api_util.dart';
class FakeApi { class FakeApi {
final Dio _dio;
Serializers _serializers;
FakeApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const FakeApi(this._dio, this._serializers);
/// Health check endpoint /// Health check endpoint
/// ///

View File

@ -13,10 +13,12 @@ import 'package:built_value/serializer.dart';
import 'package:openapi/model/model_client.dart'; import 'package:openapi/model/model_client.dart';
class FakeClassnameTags123Api { class FakeClassnameTags123Api {
final Dio _dio;
Serializers _serializers;
FakeClassnameTags123Api(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const FakeClassnameTags123Api(this._dio, this._serializers);
/// To test class name in snake case /// To test class name in snake case
/// ///

View File

@ -17,10 +17,12 @@ import 'package:built_collection/built_collection.dart';
import 'package:openapi/api_util.dart'; import 'package:openapi/api_util.dart';
class PetApi { class PetApi {
final Dio _dio;
Serializers _serializers;
PetApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const PetApi(this._dio, this._serializers);
/// Add a new pet to the store /// Add a new pet to the store
/// ///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/order.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
class StoreApi { class StoreApi {
final Dio _dio;
Serializers _serializers;
StoreApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const StoreApi(this._dio, this._serializers);
/// Delete purchase order by ID /// Delete purchase order by ID
/// ///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/user.dart';
import 'package:built_collection/built_collection.dart'; import 'package:built_collection/built_collection.dart';
class UserApi { class UserApi {
final Dio _dio;
Serializers _serializers;
UserApi(this._dio, this._serializers); final Dio _dio;
final Serializers _serializers;
const UserApi(this._dio, this._serializers);
/// Create user /// Create user
/// ///