[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}}
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}}
/// {{{summary}}}

View File

@ -10,31 +10,37 @@ import 'package:{{pubName}}/auth/oauth.dart';
{{#apiInfo}}{{#apis}}import 'package:{{pubName}}/api/{{classFilename}}.dart';
{{/apis}}{{/apiInfo}}
final _defaultInterceptors = [OAuthInterceptor(), BasicAuthInterceptor(), ApiKeyAuthInterceptor()];
final _defaultInterceptors = [
OAuthInterceptor(),
BasicAuthInterceptor(),
ApiKeyAuthInterceptor(),
];
class {{clientName}} {
Dio dio;
Serializers serializers;
String basePath = '{{{basePath}}}';
static const String basePath = r'{{{basePath}}}';
{{clientName}}({this.dio, Serializers serializers, String basePathOverride, List<Interceptor> interceptors}) {
if (dio == null) {
BaseOptions options = new BaseOptions(
final Dio dio;
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,
connectTimeout: 5000,
receiveTimeout: 3000,
);
this.dio = new Dio(options);
}
if (interceptors == null) {
this.dio.interceptors.addAll(_defaultInterceptors);
} else {
this.dio.interceptors.addAll(interceptors);
}
this.serializers = serializers ?? standardSerializers;
)) {
if (interceptors == null) {
this.dio.interceptors.addAll(_defaultInterceptors);
} else {
this.dio.interceptors.addAll(interceptors);
}
}
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';
class OffsetDateSerializer implements PrimitiveSerializer<OffsetDate> {
const OffsetDateSerializer();
@override
Iterable<Type> get types => BuiltList<Type>([OffsetDate]);
@ -25,6 +28,9 @@ class OffsetDateSerializer implements PrimitiveSerializer<OffsetDate> {
}
class OffsetDateTimeSerializer implements PrimitiveSerializer<OffsetDateTime> {
const OffsetDateTimeSerializer();
@override
Iterable<Type> get types => BuiltList<Type>([OffsetDateTime]);

View File

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

View File

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

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/order.dart';
import 'package:built_collection/built_collection.dart';
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
///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/user.dart';
import 'package:built_collection/built_collection.dart';
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
///

View File

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

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/order.dart';
import 'package:built_collection/built_collection.dart';
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
///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/user.dart';
import 'package:built_collection/built_collection.dart';
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
///

View File

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

View File

@ -13,10 +13,12 @@ import 'package:built_value/serializer.dart';
import 'package:openapi/model/inline_response_default.dart';
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';
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
///

View File

@ -13,10 +13,12 @@ import 'package:built_value/serializer.dart';
import 'package:openapi/model/model_client.dart';
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
///

View File

@ -17,10 +17,12 @@ import 'package:built_collection/built_collection.dart';
import 'package:openapi/api_util.dart';
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
///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/order.dart';
import 'package:built_collection/built_collection.dart';
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
///

View File

@ -14,10 +14,12 @@ import 'package:openapi/model/user.dart';
import 'package:built_collection/built_collection.dart';
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
///