github.com/phrase/openapi@v0.0.0-20240514140800-49e8a106740e/openapi-generator/templates/java/libraries/native/api.mustache (about) 1 {{>licenseInfo}} 2 package {{package}}; 3 4 import {{invokerPackage}}.ApiClient; 5 import {{invokerPackage}}.ApiException; 6 import {{invokerPackage}}.Pair; 7 8 {{#imports}} 9 import {{import}}; 10 {{/imports}} 11 12 import com.fasterxml.jackson.core.type.TypeReference; 13 import com.fasterxml.jackson.databind.ObjectMapper; 14 15 import java.io.IOException; 16 import java.io.InputStream; 17 import java.net.URI; 18 import java.net.http.HttpClient; 19 import java.net.http.HttpRequest; 20 import java.net.http.HttpResponse; 21 import java.time.Duration; 22 import java.util.function.Consumer; 23 24 {{^fullJavaUtil}} 25 import java.util.ArrayList; 26 import java.util.StringJoiner; 27 import java.util.List; 28 import java.util.Map; 29 {{/fullJavaUtil}} 30 31 {{#asyncNative}} 32 import java.util.concurrent.CompletableFuture; 33 {{/asyncNative}} 34 35 {{>generatedAnnotation}} 36 {{#operations}} 37 public class {{classname}} { 38 private final HttpClient memberVarHttpClient; 39 private final ObjectMapper memberVarObjectMapper; 40 private final String memberVarBaseUri; 41 private final Consumer<HttpRequest.Builder> memberVarInterceptor; 42 private final Duration memberVarReadTimeout; 43 private final Consumer<HttpResponse<InputStream>> memberVarResponseInterceptor; 44 45 public {{classname}}() { 46 this(new ApiClient()); 47 } 48 49 public {{classname}}(ApiClient apiClient) { 50 memberVarHttpClient = apiClient.getHttpClient(); 51 memberVarObjectMapper = apiClient.getObjectMapper(); 52 memberVarBaseUri = apiClient.getBaseUri(); 53 memberVarInterceptor = apiClient.getRequestInterceptor(); 54 memberVarReadTimeout = apiClient.getReadTimeout(); 55 memberVarResponseInterceptor = apiClient.getResponseInterceptor(); 56 } 57 58 {{#operation}} 59 /** 60 * {{summary}} 61 * {{notes}} 62 {{#allParams}} 63 * @param {{paramName}} {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{^isContainer}}{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/isContainer}}{{/required}} 64 {{/allParams}} 65 {{#returnType}} 66 * @return {{returnType}} 67 {{/returnType}} 68 * @throws ApiException if fails to make API call 69 {{#isDeprecated}} 70 * @deprecated 71 {{/isDeprecated}} 72 {{#externalDocs}} 73 * {{description}} 74 * @see <a href="{{url}}">{{summary}} Documentation</a> 75 {{/externalDocs}} 76 */ 77 {{#isDeprecated}} 78 @Deprecated 79 {{/isDeprecated}} 80 public {{#returnType}}{{#asyncNative}}CompletableFuture<{{{returnType}}}>{{/asyncNative}}{{^asyncNative}}{{{returnType}}}{{/asyncNative}}{{/returnType}}{{^returnType}}{{#asyncNative}}CompletableFuture<Void>{{/asyncNative}}{{^asyncNative}}void{{/asyncNative}}{{/returnType}} {{operationId}} ({{#allParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws ApiException { 81 {{#allParams}} 82 {{#required}} 83 // verify the required parameter '{{paramName}}' is set 84 if ({{paramName}} == null) { 85 {{#asyncNative}} 86 return CompletableFuture.failedFuture(new ApiException(400, "Missing the required parameter '{{paramName}}' when calling {{operationId}}")); 87 {{/asyncNative}} 88 {{^asyncNative}} 89 throw new ApiException(400, "Missing the required parameter '{{paramName}}' when calling {{operationId}}"); 90 {{/asyncNative}} 91 } 92 {{/required}} 93 {{/allParams}} 94 95 HttpRequest.Builder localVarRequestBuilder = HttpRequest.newBuilder(); 96 97 {{! Switch delimiters for baseName so we can write constants like "{query}" }} 98 String localVarPath = "{{{path}}}"{{#pathParams}} 99 .replace({{=<% %>=}}"{<%baseName%>}"<%={{ }}=%>, ApiClient.urlEncode({{{paramName}}}.toString())){{/pathParams}}; 100 101 {{#hasQueryParams}} 102 {{javaUtilPrefix}}List<Pair> localVarQueryParams = new {{javaUtilPrefix}}ArrayList<>(); 103 {{#queryParams}} 104 {{#collectionFormat}} 105 localVarQueryParams.addAll(ApiClient.parameterToPairs("{{{collectionFormat}}}", "{{baseName}}", {{paramName}})); 106 {{/collectionFormat}} 107 {{^collectionFormat}} 108 localVarQueryParams.addAll(ApiClient.parameterToPairs("{{baseName}}", {{paramName}})); 109 {{/collectionFormat}} 110 {{/queryParams}} 111 112 if (!localVarQueryParams.isEmpty()) { 113 {{javaUtilPrefix}}StringJoiner queryJoiner = new StringJoiner("&"); 114 localVarQueryParams.forEach(p -> queryJoiner.add(p.getName() + '=' + p.getValue())); 115 localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath + '?' + queryJoiner.toString())); 116 } else { 117 localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); 118 } 119 {{/hasQueryParams}} 120 {{^hasQueryParams}} 121 localVarRequestBuilder.uri(URI.create(memberVarBaseUri + localVarPath)); 122 {{/hasQueryParams}} 123 124 {{#headerParams}} 125 if ({{paramName}} != null) { 126 localVarRequestBuilder.header("{{baseName}}", {{paramName}}.toString()); 127 } 128 {{/headerParams}} 129 {{#bodyParam}} 130 localVarRequestBuilder.header("Content-Type", "application/json"); 131 {{/bodyParam}} 132 localVarRequestBuilder.header("Accept", "application/json"); 133 134 {{^asyncNative}} 135 try { 136 {{/asyncNative}} 137 {{#asyncNative}} 138 {{#bodyParam}} 139 try { 140 {{/bodyParam}} 141 {{/asyncNative}} 142 {{#bodyParam}} 143 byte[] localVarPostBody = memberVarObjectMapper.writeValueAsBytes({{paramName}}); 144 localVarRequestBuilder.method("{{httpMethod}}", HttpRequest.BodyPublishers.ofByteArray(localVarPostBody)); 145 {{/bodyParam}} 146 {{^bodyParam}} 147 localVarRequestBuilder.method("{{httpMethod}}", HttpRequest.BodyPublishers.noBody()); 148 {{/bodyParam}} 149 if (memberVarReadTimeout != null) { 150 localVarRequestBuilder.timeout(memberVarReadTimeout); 151 } 152 if (memberVarInterceptor != null) { 153 memberVarInterceptor.accept(localVarRequestBuilder); 154 } 155 {{^asyncNative}} 156 HttpResponse<InputStream> localVarResponse = memberVarHttpClient.send( 157 localVarRequestBuilder.build(), 158 HttpResponse.BodyHandlers.ofInputStream()); 159 if (memberVarResponseInterceptor != null) { 160 memberVarResponseInterceptor.accept(localVarResponse); 161 } 162 if (localVarResponse.statusCode()/ 100 != 2) { 163 throw new ApiException(localVarResponse.statusCode(), 164 "{{operationId}} call received non-success response", 165 localVarResponse.headers(), 166 localVarResponse.body() == null ? null : new String(localVarResponse.body().readAllBytes())); 167 } 168 {{#returnType}} 169 return memberVarObjectMapper.readValue(localVarResponse.body(), new TypeReference<{{{returnType}}}>() {}); 170 {{/returnType}} 171 {{/asyncNative}} 172 {{#asyncNative}} 173 return memberVarHttpClient.sendAsync( 174 localVarRequestBuilder.build(), 175 HttpResponse.BodyHandlers.ofString()).thenComposeAsync(localVarResponse -> { 176 if (localVarResponse.statusCode()/ 100 != 2) { 177 return CompletableFuture.failedFuture(new ApiException(localVarResponse.statusCode(), 178 "{{operationId}} call received non-success response", 179 localVarResponse.headers(), 180 localVarResponse.body()) 181 ); 182 } else { 183 try { 184 return CompletableFuture.completedFuture( 185 {{#returnType}} 186 memberVarObjectMapper.readValue(localVarResponse.body(), new TypeReference<{{{returnType}}}>() {}) 187 {{/returnType}} 188 {{^returnType}} 189 null 190 {{/returnType}} 191 ); 192 } catch (IOException e) { 193 return CompletableFuture.failedFuture(new ApiException(e)); 194 } 195 } 196 }); 197 {{/asyncNative}} 198 {{#asyncNative}} 199 {{#bodyParam}} 200 } catch (IOException e) { 201 return CompletableFuture.failedFuture(new ApiException(e)); 202 } 203 {{/bodyParam}} 204 {{/asyncNative}} 205 {{^asyncNative}} 206 } catch (IOException e) { 207 throw new ApiException(e); 208 } 209 {{/asyncNative}} 210 {{^asyncNative}} 211 catch (InterruptedException e) { 212 Thread.currentThread().interrupt(); 213 throw new ApiException(e); 214 } 215 {{/asyncNative}} 216 } 217 {{/operation}} 218 } 219 {{/operations}}