Skip to content

Commit f5e8f54

Browse files
authored
[dart-dio-next] Adds an option for using the dio_http package (#10497)
* [dart-dio] Adds an option for using the dio_http package Relates to #10305 * [dart-dio-next] Generates new dio_http sample * [dart-dio-next] renames dio_http sample, adds pom.xml * [dart-dio-next] Removes executions not required
1 parent 1735ab9 commit f5e8f54

File tree

194 files changed

+13389
-12
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

194 files changed

+13389
-12
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
generatorName: dart-dio-next
2+
outputDir: samples/openapi3/client/petstore/dart-dio-next/dio_http_petstore_client_lib_fake
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/dart/libraries/dio
5+
typeMappings:
6+
Client: "ModelClient"
7+
File: "ModelFile"
8+
EnumClass: "ModelEnumClass"
9+
additionalProperties:
10+
hideGenerationTimestamp: "true"
11+
dioLibrary: "dio_http"

docs/generators/dart-dio-next.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
99
| ------ | ----------- | ------ | ------- |
1010
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
1111
|dateLibrary|Specify Date library|<dl><dt>**core**</dt><dd>[DEFAULT] Dart core library (DateTime)</dd><dt>**timemachine**</dt><dd>Time Machine is date and time library for Flutter, Web, and Server with support for timezones, calendars, cultures, formatting and parsing.</dd></dl>|core|
12+
|dioLibrary|Specify Dio library|<dl><dt>**dio_http**</dt><dd>dio_http 5.x</dd><dt>**dio**</dt><dd>[DEFAULT] dio 4.x</dd></dl>|dio|
1213
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|<dl><dt>**false**</dt><dd>The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.</dd><dt>**true**</dt><dd>Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.</dd></dl>|true|
1314
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
1415
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/DartDioNextClientCodegen.java

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen {
3939

4040
private final Logger LOGGER = LoggerFactory.getLogger(DartDioNextClientCodegen.class);
4141

42+
public static final String DIO_LIBRARY = "dioLibrary";
43+
public static final String DIO_ORIGINAL = "dio";
44+
public static final String DIO_HTTP = "dio_http";
45+
public static final String DIO_LIBRARY_DEFAULT = DIO_ORIGINAL;
46+
4247
public static final String DATE_LIBRARY = "dateLibrary";
4348
public static final String DATE_LIBRARY_CORE = "core";
4449
public static final String DATE_LIBRARY_TIME_MACHINE = "timemachine";
@@ -47,11 +52,13 @@ public class DartDioNextClientCodegen extends AbstractDartCodegen {
4752
public static final String SERIALIZATION_LIBRARY_BUILT_VALUE = "built_value";
4853
public static final String SERIALIZATION_LIBRARY_DEFAULT = SERIALIZATION_LIBRARY_BUILT_VALUE;
4954

50-
private static final String DIO_IMPORT = "package:dio/dio.dart";
5155
private static final String CLIENT_NAME = "clientName";
5256

5357
private String dateLibrary;
5458

59+
private String dioLibrary;
60+
private String dioImport;
61+
5562
private String clientName;
5663

5764
public DartDioNextClientCodegen() {
@@ -80,6 +87,7 @@ public DartDioNextClientCodegen() {
8087
serializationLibrary.setDefault(SERIALIZATION_LIBRARY_DEFAULT);
8188
cliOptions.add(serializationLibrary);
8289

90+
// Date Library Option
8391
final CliOption dateOption = CliOption.newString(DATE_LIBRARY, "Specify Date library");
8492
dateOption.setDefault(DATE_LIBRARY_DEFAULT);
8593

@@ -88,6 +96,16 @@ public DartDioNextClientCodegen() {
8896
dateOptions.put(DATE_LIBRARY_TIME_MACHINE, "Time Machine is date and time library for Flutter, Web, and Server with support for timezones, calendars, cultures, formatting and parsing.");
8997
dateOption.setEnum(dateOptions);
9098
cliOptions.add(dateOption);
99+
100+
// Dio Library Option
101+
final CliOption dioOption = CliOption.newString(DIO_LIBRARY, "Specify Dio library");
102+
dioOption.setDefault(DIO_LIBRARY_DEFAULT);
103+
104+
final Map<String, String> dioOptions = new HashMap<>();
105+
dioOptions.put(DIO_ORIGINAL, "[DEFAULT] dio 4.x");
106+
dioOptions.put(DIO_HTTP, "dio_http 5.x");
107+
dioOption.setEnum(dioOptions);
108+
cliOptions.add(dioOption);
91109
}
92110

93111
public String getDateLibrary() {
@@ -98,6 +116,14 @@ public void setDateLibrary(String library) {
98116
this.dateLibrary = library;
99117
}
100118

119+
public String getDioLibrary() {
120+
return dioLibrary;
121+
}
122+
123+
public void setDioLibrary(String library) {
124+
this.dioLibrary = library;
125+
}
126+
101127
public String getClientName() {
102128
return clientName;
103129
}
@@ -137,6 +163,12 @@ public void processOpts() {
137163
}
138164
setDateLibrary(additionalProperties.get(DATE_LIBRARY).toString());
139165

166+
if (!additionalProperties.containsKey(DIO_LIBRARY)) {
167+
additionalProperties.put(DIO_LIBRARY, DIO_LIBRARY_DEFAULT);
168+
LOGGER.debug("Dio library not set, using default {}", DIO_LIBRARY_DEFAULT);
169+
}
170+
setDioLibrary(additionalProperties.get(DIO_LIBRARY).toString());
171+
140172
if (!additionalProperties.containsKey(CLIENT_NAME)) {
141173
final String name = org.openapitools.codegen.utils.StringUtils.camelize(pubName);
142174
additionalProperties.put(CLIENT_NAME, name);
@@ -162,15 +194,31 @@ public void processOpts() {
162194
supportingFiles.add(new SupportingFile("auth/oauth.mustache", authFolder, "oauth.dart"));
163195
supportingFiles.add(new SupportingFile("auth/auth.mustache", authFolder, "auth.dart"));
164196

197+
configureDioLibrary();
165198
configureSerializationLibrary(srcFolder);
166199
configureDateLibrary(srcFolder);
167200
}
168201

202+
private void configureDioLibrary() {
203+
switch (dioLibrary) {
204+
case DIO_HTTP:
205+
dioImport = "package:dio_http/dio_http.dart";
206+
break;
207+
case DIO_ORIGINAL:
208+
default:
209+
dioImport = "package:dio/dio.dart";
210+
break;
211+
}
212+
}
213+
169214
private void configureSerializationLibrary(String srcFolder) {
170215
switch (library) {
171216
default:
172217
case SERIALIZATION_LIBRARY_BUILT_VALUE:
173218
additionalProperties.put("useBuiltValue", "true");
219+
additionalProperties.put("useDioHttp", dioLibrary.equals(DIO_HTTP));
220+
additionalProperties.put("dioImport", dioImport);
221+
additionalProperties.put("dioLibrary", dioLibrary);
174222
configureSerializationLibraryBuiltValue(srcFolder);
175223
break;
176224
}
@@ -195,7 +243,7 @@ private void configureSerializationLibraryBuiltValue(String srcFolder) {
195243
imports.put("BuiltMap", "package:built_collection/built_collection.dart");
196244
imports.put("JsonObject", "package:built_value/json_object.dart");
197245
imports.put("Uint8List", "dart:typed_data");
198-
imports.put("MultipartFile", DIO_IMPORT);
246+
imports.put("MultipartFile", dioImport);
199247
}
200248

201249
private void configureDateLibrary(String srcFolder) {
@@ -367,7 +415,7 @@ private Set<String> rewriteImports(Set<String> originalImports, boolean isModel)
367415
for (String modelImport : originalImports) {
368416
if (imports.containsKey(modelImport)) {
369417
String i = imports.get(modelImport);
370-
if (Objects.equals(i, DIO_IMPORT) && !isModel) {
418+
if (Objects.equals(i, dioImport) && !isModel) {
371419
// Don't add imports to operations that are already imported
372420
continue;
373421
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import 'dart:async';
33

44
{{#useBuiltValue}}import 'package:built_value/serializer.dart';{{/useBuiltValue}}
5-
import 'package:dio/dio.dart';
5+
import '{{dioImport}}';
66

77
{{#operations}}
88
{{#imports}}import '{{.}}';

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{>header}}
2-
import 'package:dio/dio.dart';{{#useBuiltValue}}
2+
import '{{dioImport}}';{{#useBuiltValue}}
33
import 'package:built_value/serializer.dart';
44
import 'package:{{pubName}}/src/serializers.dart';{{/useBuiltValue}}
55
import 'package:{{pubName}}/src/auth/api_key_auth.dart';

modules/openapi-generator/src/main/resources/dart/libraries/dio/auth/api_key_auth.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{{>header}}
22

3-
import 'package:dio/dio.dart';
3+
import '{{dioImport}}';
44
import 'package:{{pubName}}/src/auth/auth.dart';
55

66
class ApiKeyAuthInterceptor extends AuthInterceptor {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{>header}}
2-
import 'package:dio/dio.dart';
2+
import '{{dioImport}}';
33

44
abstract class AuthInterceptor extends Interceptor {
55
/// Get auth information on given route for the given type.

modules/openapi-generator/src/main/resources/dart/libraries/dio/auth/basic_auth.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{>header}}
22
import 'dart:convert';
33

4-
import 'package:dio/dio.dart';
4+
import '{{dioImport}}';
55
import 'package:{{pubName}}/src/auth/auth.dart';
66

77
class BasicAuthInfo {

modules/openapi-generator/src/main/resources/dart/libraries/dio/auth/bearer_auth.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{>header}}
2-
import 'package:dio/dio.dart';
2+
import '{{dioImport}}';
33
import 'package:{{pubName}}/src/auth/auth.dart';
44

55
class BearerAuthInterceptor extends AuthInterceptor {

modules/openapi-generator/src/main/resources/dart/libraries/dio/auth/oauth.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{>header}}
2-
import 'package:dio/dio.dart';
2+
import '{{dioImport}}';
33
import 'package:{{pubName}}/src/auth/auth.dart';
44

55
class OAuthInterceptor extends AuthInterceptor {

0 commit comments

Comments
 (0)