Skip to content

Commit 30d5285

Browse files
authored
Merge branch 'OpenAPITools:master' into master
2 parents d37cbfc + 7a3ea28 commit 30d5285

File tree

132 files changed

+11619
-6687
lines changed

Some content is hidden

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

132 files changed

+11619
-6687
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1139,7 +1139,7 @@ Here is a list of template creators:
11391139
* Kotlin (Spring Boot): @dr4ke616
11401140
* Kotlin (Vertx): @Wooyme
11411141
* Kotlin (JAX-RS): @anttileppa
1142-
* Kotlin Misk: @andrewwilsonnew
1142+
* Kotlin Misk: @andrewwilsonnew @guiarn
11431143
* Kotlin WireMock: @stefankoppier
11441144
* NodeJS Express: @YishTish
11451145
* PHP Flight: @daniel-sc

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ public String toDefaultValue(Schema p) {
214214
String defaultValue = String.valueOf(p.getDefault());
215215
if (defaultValue != null) {
216216
defaultValue = defaultValue.replace("\\", "\\\\")
217-
.replace("'", "\'");
217+
.replace("'", "\\'");
218218
if (Pattern.compile("\r\n|\r|\n").matcher(defaultValue).find()) {
219219
return "'''" + defaultValue + "'''";
220220
} else {

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

+1
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,7 @@ public void processOpts() {
924924
addSupportingFiles(clientPackageDir, packageFolder, excludeTests, testPackageFolder, testPackageName, modelPackageDir, authPackageDir);
925925
supportingFiles.add(new SupportingFile("ConnectionException.mustache", clientPackageDir, "ConnectionException.cs"));
926926
supportingFiles.add(new SupportingFile("UnexpectedResponseException.mustache", clientPackageDir, "UnexpectedResponseException.cs"));
927+
supportingFiles.add(new SupportingFile("UnityWebRequestAwaiterExtension.mustache", clientPackageDir, "UnityWebRequestAwaiterExtension.cs"));
927928
break;
928929
default: // generichost
929930
addGenericHostSupportingFiles(clientPackageDir, packageFolder, excludeTests, testPackageFolder, testPackageName, modelPackageDir);

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

+21-14
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ public class KotlinMiskServerCodegen extends AbstractKotlinCodegen implements Be
5757
protected String rootPackage = "org.openapitools.server.api";
5858
protected String apiVersion = "1.0.0-SNAPSHOT";
5959

60-
@Setter
61-
protected String moduleClassName = "OpenApiModule";
60+
@Setter protected String moduleClassName = "OpenApiModule";
6261

6362
@Override
6463
public CodegenType getTag() {
@@ -122,7 +121,7 @@ public KotlinMiskServerCodegen() {
122121
supportingFiles.clear();
123122

124123
apiTemplateFiles.clear();
125-
apiTemplateFiles.put("apiController.mustache", "Controller.kt");
124+
apiTemplateFiles.put("apiAction.mustache", "Action.kt");
126125
apiTemplateFiles.put("apiImpl.mustache", "Impl.kt");
127126
apiTemplateFiles.put("apiInterface.mustache", ".kt");
128127
modelTemplateFiles.put("model.mustache", ".kt");
@@ -199,30 +198,38 @@ public boolean getUseBeanValidation() {
199198
}
200199

201200
private String mapMediaType(String mediaType) {
202-
return MEDIA_MAPPING.getOrDefault(mediaType, "MediaTypes.APPLICATION_OCTETSTREAM /* unknown -> " + mediaType + " */ ");
201+
return MEDIA_MAPPING.getOrDefault(mediaType, "MediaTypes.APPLICATION_OCTETSTREAM /* @todo(unknown) -> " + mediaType + " */ ");
203202
}
204203

205204
private final static Map<String, String> MEDIA_MAPPING = getMappings();
206205

207206
private static Map<String, String> getMappings() {
207+
// add new values in order
208208
Map<String, String> result = new HashMap<>();
209-
result.put("application/json", "MediaTypes.APPLICATION_JSON");
210-
result.put("application/xml", "MediaTypes.APPLICATION_XML");
211-
result.put("application/javascript", "MediaTypes.APPLICATION_JAVASCRIPT");
212209
result.put("*/*", "MediaTypes.ALL");
213-
result.put("application/x-www-form-urlencoded", "MediaTypes.APPLICATION_FORM_URLENCODED");
210+
211+
result.put("application/grpc", "MediaTypes.APPLICATION_GRPC");
212+
result.put("application/javascript", "MediaTypes.APPLICATION_JAVASCRIPT");
213+
result.put("application/json", "MediaTypes.APPLICATION_JSON");
214214
result.put("application/octetstream", "MediaTypes.APPLICATION_OCTETSTREAM");
215215
result.put("application/pdf", "MediaTypes.APPLICATION_OCTETSTREAM");
216216
result.put("application/x-protobuf", "MediaTypes.APPLICATION_PROTOBUF");
217-
result.put("application/grpc", "MediaTypes.APPLICATION_GRPC");
218-
result.put("text/css", "MediaTypes.TEXT_CSS");
219-
result.put("text/html", "MediaTypes.TEXT_HTML");
220-
result.put("text/plain", "MediaTypes.TEXT_PLAIN_UTF8");
217+
result.put("application/x-www-form-urlencoded", "MediaTypes.APPLICATION_FORM_URLENCODED");
218+
result.put("application/xml", "MediaTypes.APPLICATION_XML");
219+
result.put("application/zip", "MediaTypes.APPLICATION_ZIP");
220+
221+
result.put("image/gif", "MediaTypes.IMAGE_GIF");
222+
result.put("image/jpeg", "MediaTypes.IMAGE_JPEG");
221223
result.put("image/png", "MediaTypes.IMAGE_PNG");
222224
result.put("image/svg+xml", "MediaTypes.IMAGE_SVG");
223-
result.put("image/jpeg", "MediaTypes.IMAGE_JPEG");
224-
result.put("image/gif", "MediaTypes.IMAGE_GIF");
225225
result.put("image/x-icon", "MediaTypes.IMAGE_ICO");
226+
227+
result.put("multipart/form-data", "MediaTypes.FORM_DATA");
228+
229+
result.put("text/css", "MediaTypes.TEXT_CSS");
230+
result.put("text/html", "MediaTypes.TEXT_HTML");
231+
result.put("text/plain", "MediaTypes.TEXT_PLAIN_UTF8");
232+
226233
return result;
227234
}
228235
}

modules/openapi-generator/src/main/resources/csharp/libraries/unityWebRequest/ApiClient.mustache

+29-8
Original file line numberDiff line numberDiff line change
@@ -377,10 +377,18 @@ namespace {{packageName}}.Client
377377
378378
using (request)
379379
{
380+
{{#useIntForTimeout}}
380381
if (configuration.Timeout > 0)
381382
{
382-
request.timeout = (int)Math.Ceiling(configuration.Timeout / 1000.0f);
383+
request.timeout = configuration.Timeout;
383384
}
385+
{{/useIntForTimeout}}
386+
{{^useIntForTimeout}}
387+
if (configuration.Timeout > TimeSpan.Zero)
388+
{
389+
request.timeout = (int)Math.Ceiling(configuration.Timeout.TotalSeconds);
390+
}
391+
{{/useIntForTimeout}}
384392

385393
if (configuration.Proxy != null)
386394
{
@@ -400,21 +408,34 @@ namespace {{packageName}}.Client
400408

401409
InterceptRequest(request, path, options, configuration);
402410

411+
#if UNITY_2020_2_OR_NEWER
412+
// For Unity 2020.2 and newer, use UnityWebRequest.Result.
403413
var asyncOp = request.SendWebRequest();
404-
405-
TaskCompletionSource<UnityWebRequest.Result> tsc = new TaskCompletionSource<UnityWebRequest.Result>();
406-
asyncOp.completed += (_) => tsc.TrySetResult(request.result);
407-
414+
TaskCompletionSource<UnityWebRequest.Result> tcs = new TaskCompletionSource<UnityWebRequest.Result>();
415+
asyncOp.completed += (_) => tcs.TrySetResult(request.result);
408416
using (var tokenRegistration = cancellationToken.Register(request.Abort, true))
409417
{
410-
await tsc.Task;
418+
await tcs.Task;
411419
}
412-
420+
413421
if (request.result == UnityWebRequest.Result.ConnectionError ||
414422
request.result == UnityWebRequest.Result.DataProcessingError)
415423
{
416424
throw new ConnectionException(request);
417425
}
426+
#else
427+
// For Unity 2019 and earlier, await the operation directly.
428+
var asyncOp = request.SendWebRequest();
429+
using (var tokenRegistration = cancellationToken.Register(request.Abort, true))
430+
{
431+
await asyncOp;
432+
}
433+
434+
if (request.isNetworkError || request.isHttpError)
435+
{
436+
throw new ConnectionException(request);
437+
}
438+
#endif
418439

419440
object responseData = deserializer.Deserialize<T>(request);
420441

@@ -636,4 +657,4 @@ namespace {{packageName}}.Client
636657
}
637658
#endregion ISynchronousClient
638659
}
639-
}
660+
}

modules/openapi-generator/src/main/resources/csharp/libraries/unityWebRequest/ConnectionException.mustache

+36
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ using UnityEngine.Networking;
55

66
namespace {{packageName}}.Client
77
{
8+
#if UNITY_2020_1_OR_NEWER
89
public class ConnectionException : Exception
910
{
1011
public UnityWebRequest.Result Result { get; private set; }
@@ -18,4 +19,39 @@ namespace {{packageName}}.Client
1819
Error = request.error ?? "";
1920
}
2021
}
22+
#else
23+
// For Unity 2019, define a custom enum that roughly simulates UnityWebRequest.Result.
24+
public enum UnityWebRequestResultLegacy
25+
{
26+
Success,
27+
ConnectionError,
28+
ProtocolError,
29+
DataProcessingError
30+
}
31+
32+
public class ConnectionException : Exception
33+
{
34+
public UnityWebRequestResultLegacy Result { get; private set; }
35+
public string Error { get; private set; }
36+
37+
public ConnectionException(UnityWebRequest request)
38+
: base($"Error: {request.error}")
39+
{
40+
if (request.isNetworkError)
41+
{
42+
Result = UnityWebRequestResultLegacy.ConnectionError;
43+
}
44+
else if (request.isHttpError)
45+
{
46+
Result = UnityWebRequestResultLegacy.ProtocolError;
47+
}
48+
else
49+
{
50+
Result = UnityWebRequestResultLegacy.Success;
51+
}
52+
53+
Error = request.error ?? "";
54+
}
55+
}
56+
#endif
2157
}

modules/openapi-generator/src/main/resources/csharp/libraries/unityWebRequest/README.mustache

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ This C# SDK is automatically generated by the [OpenAPI Generator](https://openap
2020
<a id="version-support"></a>
2121
## Version support
2222
This generator should support all current LTS versions of Unity
23-
- Unity 2020.3 (LTS) and up
23+
- Unity 2019.4 (LTS) and up
2424
- .NET Standard 2.1 / .NET Framework
2525

2626
<a id="dependencies"></a>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{{>partial_header}}
2+
3+
using System.Runtime.CompilerServices;
4+
using System.Threading.Tasks;
5+
using UnityEngine.Networking;
6+
7+
namespace {{packageName}}.Client
8+
{
9+
/// <summary>
10+
/// Provides an awaiter for UnityWebRequestAsyncOperation to allow `await request.SendWebRequest()`
11+
/// in Unity async methods. Unity's AsyncOperation types are not awaitable by default, so this
12+
/// extension bridges that gap by converting the operation into a Task.
13+
/// </summary>
14+
public static class UnityWebRequestAwaiterExtensions
15+
{
16+
public static TaskAwaiter<UnityWebRequestAsyncOperation> GetAwaiter(this UnityWebRequestAsyncOperation asyncOp)
17+
{
18+
var tcs = new TaskCompletionSource<UnityWebRequestAsyncOperation>();
19+
asyncOp.completed += _ => tcs.SetResult(asyncOp);
20+
return tcs.Task.GetAwaiter();
21+
}
22+
}
23+
}

modules/openapi-generator/src/main/resources/kotlin-misk/apiController.mustache renamed to modules/openapi-generator/src/main/resources/kotlin-misk/apiAction.mustache

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ import misk.web.mediatype.MediaTypes
3434

3535
{{#operations}}
3636
/**
37-
* Generated file, please change {{classname}}Controller.
37+
* Generated file, please change {{classname}}Impl.
3838
*/
3939
@Singleton
40-
class {{classname}}Controller @Inject constructor(
40+
class {{classname}}Action @Inject constructor(
4141
private val {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}: {{classname}}
4242
) : WebAction, {{classname}} {
4343
{{#operation}}

modules/openapi-generator/src/main/resources/kotlin-misk/api_test.mustache

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ internal class {{classname}}Test {
2121
{{#operations}}
2222
{{#operation}}
2323
/**
24-
* To test {{classname}}Controller.{{operationId}}
24+
* To test {{classname}}Action.{{operationId}}
2525
*/
2626
@Test
2727
fun `should handle {{operationId}}`() {

modules/openapi-generator/src/main/resources/kotlin-misk/build.gradle.kts.mustache

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ version = "{{artifactVersion}}"
99

1010
dependencies {
1111
implementation("jakarta.validation:jakarta.validation-api:3.1.1")
12-
implementation("com.squareup.misk:misk:2025.03.17.160337-2c6953c")
12+
implementation("com.squareup.misk:misk:2025.04.02.195630-a61d550")
1313
//implementation("com.squareup.wire:wire-runtime:5.2.1")
1414
1515
testImplementation("com.squareup.misk:misk-testing:2025.02.11.123913-8a41324")

modules/openapi-generator/src/main/resources/kotlin-misk/miskModule.mustache

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {{javaxPackage}}.inject.Singleton
66
{{#apiInfo}}
77
{{#apis}}
88
{{#operations}}
9-
import {{apiPackage}}.{{classname}}Controller
9+
import {{apiPackage}}.{{classname}}Action
1010
{{/operations}}
1111
{{/apis}}
1212
{{/apiInfo}}
@@ -17,7 +17,7 @@ class {{moduleClassName}} : KAbstractModule() {
1717
{{#apiInfo}}
1818
{{#apis}}
1919
{{#operations}}
20-
install(WebActionModule.create<{{classname}}Controller>())
20+
install(WebActionModule.create<{{classname}}Action>())
2121
{{/operations}}
2222
{{/apis}}
2323
{{/apiInfo}}

modules/openapi-generator/src/main/resources/php-laravel/api_controller.mustache

+1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class {{controllerName}} extends Controller
9191
$apiResult = $this->api->{{operationId}}({{#allParams}}${{paramName}}{{^-last}}, {{/-last}}{{/allParams}});
9292
} catch (\Exception $exception) {
9393
// This shouldn't happen
94+
report($exception);
9495
return response()->json(['error' => $exception->getMessage()], 500);
9596
}
9697

0 commit comments

Comments
 (0)