Jaumard 7d5695e551
dart-dio improvements (#6047)
* fix runtime deserialisation

* add security support for dart dio

* regenerate dart dio sample

* update dio pubspec.mustache deps

* check response type before parsing

* add default dateTime serializer

* regenerate sample
2020-05-02 21:23:52 +08:00

82 lines
2.6 KiB
Dart

library openapi.api;
import 'package:dio/dio.dart';
import 'package:built_value/serializer.dart';
import 'package:openapi/serializers.dart';
import 'package:openapi/auth/api_key_auth.dart';
import 'package:openapi/auth/basic_auth.dart';
import 'package:openapi/auth/oauth.dart';
import 'package:openapi/api/pet_api.dart';
import 'package:openapi/api/store_api.dart';
import 'package:openapi/api/user_api.dart';
final _defaultInterceptors = [OAuthInterceptor(), BasicAuthInterceptor(), ApiKeyAuthInterceptor()];
class Openapi {
Dio dio;
Serializers serializers;
String basePath = "http://petstore.swagger.io/v2";
Openapi({this.dio, Serializers serializers, String basePathOverride, List<Interceptor> interceptors}) {
if (dio == null) {
BaseOptions options = new 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;
}
void setOAuthToken(String name, String token) {
(this.dio.interceptors.firstWhere((element) => element is OAuthInterceptor, orElse: null) as OAuthInterceptor)?.tokens[name] = token;
}
void setBasicAuth(String name, String username, String password) {
(this.dio.interceptors.firstWhere((element) => element is BasicAuthInterceptor, orElse: null) as BasicAuthInterceptor)?.authInfo[name] = BasicAuthInfo(username, password);
}
void setApiKey(String name, String apiKey) {
(this.dio.interceptors.firstWhere((element) => element is ApiKeyAuthInterceptor, orElse: null) as ApiKeyAuthInterceptor)?.apiKeys[name] = apiKey;
}
/**
* Get PetApi instance, base route and serializer can be overridden by a given but be careful,
* by doing that all interceptors will not be executed
*/
PetApi getPetApi() {
return PetApi(dio, serializers);
}
/**
* Get StoreApi instance, base route and serializer can be overridden by a given but be careful,
* by doing that all interceptors will not be executed
*/
StoreApi getStoreApi() {
return StoreApi(dio, serializers);
}
/**
* Get UserApi instance, base route and serializer can be overridden by a given but be careful,
* by doing that all interceptors will not be executed
*/
UserApi getUserApi() {
return UserApi(dio, serializers);
}
}