Skip to content

Commit 1b440e1

Browse files
authored
[dart-dio] Improve API & API-Client field initialization (#8589)
1 parent 769b0e0 commit 1b440e1

20 files changed

Lines changed: 160 additions & 102 deletions

File tree

modules/openapi-generator/src/main/resources/dart-dio/api.mustache

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ import 'package:built_value/serializer.dart';
1111
{{/fullImports}}
1212

1313
class {{classname}} {
14+
1415
final Dio _dio;
15-
Serializers _serializers;
1616
17-
{{classname}}(this._dio, this._serializers);
17+
final Serializers _serializers;
18+
19+
const {{classname}}(this._dio, this._serializers);
1820

1921
{{#operation}}
2022
/// {{{summary}}}

modules/openapi-generator/src/main/resources/dart-dio/apilib.mustache

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,37 @@ import 'package:{{pubName}}/auth/oauth.dart';
1010
{{#apiInfo}}{{#apis}}import 'package:{{pubName}}/api/{{classFilename}}.dart';
1111
{{/apis}}{{/apiInfo}}
1212

13-
final _defaultInterceptors = [OAuthInterceptor(), BasicAuthInterceptor(), ApiKeyAuthInterceptor()];
13+
final _defaultInterceptors = [
14+
OAuthInterceptor(),
15+
BasicAuthInterceptor(),
16+
ApiKeyAuthInterceptor(),
17+
];
1418

1519
class {{clientName}} {
1620
17-
Dio dio;
18-
Serializers serializers;
19-
String basePath = '{{{basePath}}}';
21+
static const String basePath = r'{{{basePath}}}';
2022
21-
{{clientName}}({this.dio, Serializers serializers, String basePathOverride, List<Interceptor> interceptors}) {
22-
if (dio == null) {
23-
BaseOptions options = new BaseOptions(
23+
final Dio dio;
24+
25+
final Serializers serializers;
26+
27+
{{clientName}}({
28+
Dio dio,
29+
Serializers serializers,
30+
String basePathOverride,
31+
List<Interceptor> interceptors,
32+
}) : this.serializers = serializers ?? standardSerializers,
33+
this.dio = dio ??
34+
Dio(BaseOptions(
2435
baseUrl: basePathOverride ?? basePath,
2536
connectTimeout: 5000,
2637
receiveTimeout: 3000,
27-
);
28-
this.dio = new Dio(options);
29-
}
30-
31-
if (interceptors == null) {
32-
this.dio.interceptors.addAll(_defaultInterceptors);
33-
} else {
34-
this.dio.interceptors.addAll(interceptors);
35-
}
36-
37-
this.serializers = serializers ?? standardSerializers;
38+
)) {
39+
if (interceptors == null) {
40+
this.dio.interceptors.addAll(_defaultInterceptors);
41+
} else {
42+
this.dio.interceptors.addAll(interceptors);
43+
}
3844
}
3945

4046
void setOAuthToken(String name, String token) {

modules/openapi-generator/src/main/resources/dart-dio/local_date_serializer.mustache

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import 'package:built_value/serializer.dart';
44
import 'package:time_machine/time_machine.dart';
55

66
class OffsetDateSerializer implements PrimitiveSerializer<OffsetDate> {
7+
8+
const OffsetDateSerializer();
9+
710
@override
811
Iterable<Type> get types => BuiltList<Type>([OffsetDate]);
912
@@ -25,6 +28,9 @@ class OffsetDateSerializer implements PrimitiveSerializer<OffsetDate> {
2528
}
2629

2730
class OffsetDateTimeSerializer implements PrimitiveSerializer<OffsetDateTime> {
31+
32+
const OffsetDateTimeSerializer();
33+
2834
@override
2935
Iterable<Type> get types => BuiltList<Type>([OffsetDateTime]);
3036

modules/openapi-generator/src/main/resources/dart-dio/serializers.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ Serializers serializers = (_$serializers.toBuilder(){{#apiInfo}}{{#apis}}{{#seri
2626
() => MapBuilder<String, {{baseType}}>(),
2727
{{/isMap}}
2828
){{/serializers}}{{/apis}}{{/apiInfo}}{{#timeMachine}}
29-
..add(OffsetDateSerializer())
30-
..add(OffsetDateTimeSerializer()){{/timeMachine}}
29+
..add(const OffsetDateSerializer())
30+
..add(const OffsetDateTimeSerializer()){{/timeMachine}}
3131
..add(Iso8601DateTimeSerializer()))
3232
.build();
3333

samples/client/petstore/dart-dio/petstore_client_lib/lib/api.dart

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,37 @@ import 'package:openapi/api/store_api.dart';
1818
import 'package:openapi/api/user_api.dart';
1919

2020

21-
final _defaultInterceptors = [OAuthInterceptor(), BasicAuthInterceptor(), ApiKeyAuthInterceptor()];
21+
final _defaultInterceptors = [
22+
OAuthInterceptor(),
23+
BasicAuthInterceptor(),
24+
ApiKeyAuthInterceptor(),
25+
];
2226

2327
class Openapi {
2428

25-
Dio dio;
26-
Serializers serializers;
27-
String basePath = 'http://petstore.swagger.io/v2';
29+
static const String basePath = r'http://petstore.swagger.io/v2';
2830

29-
Openapi({this.dio, Serializers serializers, String basePathOverride, List<Interceptor> interceptors}) {
30-
if (dio == null) {
31-
BaseOptions options = new BaseOptions(
31+
final Dio dio;
32+
33+
final Serializers serializers;
34+
35+
Openapi({
36+
Dio dio,
37+
Serializers serializers,
38+
String basePathOverride,
39+
List<Interceptor> interceptors,
40+
}) : this.serializers = serializers ?? standardSerializers,
41+
this.dio = dio ??
42+
Dio(BaseOptions(
3243
baseUrl: basePathOverride ?? basePath,
3344
connectTimeout: 5000,
3445
receiveTimeout: 3000,
35-
);
36-
this.dio = new Dio(options);
37-
}
38-
39-
if (interceptors == null) {
40-
this.dio.interceptors.addAll(_defaultInterceptors);
41-
} else {
42-
this.dio.interceptors.addAll(interceptors);
43-
}
44-
45-
this.serializers = serializers ?? standardSerializers;
46+
)) {
47+
if (interceptors == null) {
48+
this.dio.interceptors.addAll(_defaultInterceptors);
49+
} else {
50+
this.dio.interceptors.addAll(interceptors);
51+
}
4652
}
4753

4854
void setOAuthToken(String name, String token) {

samples/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ import 'package:built_collection/built_collection.dart';
1717
import 'package:openapi/api_util.dart';
1818

1919
class PetApi {
20+
2021
final Dio _dio;
21-
Serializers _serializers;
2222

23-
PetApi(this._dio, this._serializers);
23+
final Serializers _serializers;
24+
25+
const PetApi(this._dio, this._serializers);
2426

2527
/// Add a new pet to the store
2628
///

samples/client/petstore/dart-dio/petstore_client_lib/lib/api/store_api.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ import 'package:openapi/model/order.dart';
1414
import 'package:built_collection/built_collection.dart';
1515

1616
class StoreApi {
17+
1718
final Dio _dio;
18-
Serializers _serializers;
1919

20-
StoreApi(this._dio, this._serializers);
20+
final Serializers _serializers;
21+
22+
const StoreApi(this._dio, this._serializers);
2123

2224
/// Delete purchase order by ID
2325
///

samples/client/petstore/dart-dio/petstore_client_lib/lib/api/user_api.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ import 'package:openapi/model/user.dart';
1414
import 'package:built_collection/built_collection.dart';
1515

1616
class UserApi {
17+
1718
final Dio _dio;
18-
Serializers _serializers;
1919

20-
UserApi(this._dio, this._serializers);
20+
final Serializers _serializers;
21+
22+
const UserApi(this._dio, this._serializers);
2123

2224
/// Create user
2325
///

samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api.dart

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,37 @@ import 'package:openapi/api/store_api.dart';
1818
import 'package:openapi/api/user_api.dart';
1919

2020

21-
final _defaultInterceptors = [OAuthInterceptor(), BasicAuthInterceptor(), ApiKeyAuthInterceptor()];
21+
final _defaultInterceptors = [
22+
OAuthInterceptor(),
23+
BasicAuthInterceptor(),
24+
ApiKeyAuthInterceptor(),
25+
];
2226

2327
class Openapi {
2428

25-
Dio dio;
26-
Serializers serializers;
27-
String basePath = 'http://petstore.swagger.io/v2';
29+
static const String basePath = r'http://petstore.swagger.io/v2';
2830

29-
Openapi({this.dio, Serializers serializers, String basePathOverride, List<Interceptor> interceptors}) {
30-
if (dio == null) {
31-
BaseOptions options = new BaseOptions(
31+
final Dio dio;
32+
33+
final Serializers serializers;
34+
35+
Openapi({
36+
Dio dio,
37+
Serializers serializers,
38+
String basePathOverride,
39+
List<Interceptor> interceptors,
40+
}) : this.serializers = serializers ?? standardSerializers,
41+
this.dio = dio ??
42+
Dio(BaseOptions(
3243
baseUrl: basePathOverride ?? basePath,
3344
connectTimeout: 5000,
3445
receiveTimeout: 3000,
35-
);
36-
this.dio = new Dio(options);
37-
}
38-
39-
if (interceptors == null) {
40-
this.dio.interceptors.addAll(_defaultInterceptors);
41-
} else {
42-
this.dio.interceptors.addAll(interceptors);
43-
}
44-
45-
this.serializers = serializers ?? standardSerializers;
46+
)) {
47+
if (interceptors == null) {
48+
this.dio.interceptors.addAll(_defaultInterceptors);
49+
} else {
50+
this.dio.interceptors.addAll(interceptors);
51+
}
4652
}
4753

4854
void setOAuthToken(String name, String token) {

samples/openapi3/client/petstore/dart-dio/petstore_client_lib/lib/api/pet_api.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ import 'package:built_collection/built_collection.dart';
1717
import 'package:openapi/api_util.dart';
1818

1919
class PetApi {
20+
2021
final Dio _dio;
21-
Serializers _serializers;
2222

23-
PetApi(this._dio, this._serializers);
23+
final Serializers _serializers;
24+
25+
const PetApi(this._dio, this._serializers);
2426

2527
/// Add a new pet to the store
2628
///

0 commit comments

Comments
 (0)