github.com/phrase/openapi@v0.0.0-20240514140800-49e8a106740e/openapi-generator/templates/java/libraries/webclient/api.mustache (about)

     1  package {{package}};
     2  
     3  import {{invokerPackage}}.ApiClient;
     4  
     5  {{#imports}}import {{import}};
     6  {{/imports}}
     7  {{^fullJavaUtil}}
     8  
     9  import java.util.HashMap;
    10  import java.util.List;
    11  import java.util.Locale;
    12  import java.util.Map;
    13  {{/fullJavaUtil}}
    14  
    15  import org.springframework.beans.factory.annotation.Autowired;
    16  import org.springframework.util.LinkedMultiValueMap;
    17  import org.springframework.util.MultiValueMap;
    18  import org.springframework.web.client.RestClientException;
    19  import org.springframework.web.client.HttpClientErrorException;
    20  import org.springframework.web.util.UriComponentsBuilder;
    21  import org.springframework.core.ParameterizedTypeReference;
    22  import org.springframework.core.io.FileSystemResource;
    23  import org.springframework.http.HttpHeaders;
    24  import org.springframework.http.HttpMethod;
    25  import org.springframework.http.HttpStatus;
    26  import org.springframework.http.MediaType;
    27  import reactor.core.publisher.Mono;
    28  import reactor.core.publisher.Flux;
    29  
    30  {{>generatedAnnotation}}
    31  {{#operations}}
    32  public class {{classname}} {
    33      private ApiClient apiClient;
    34  
    35      public {{classname}}() {
    36          this(new ApiClient());
    37      }
    38  
    39      @Autowired
    40      public {{classname}}(ApiClient apiClient) {
    41          this.apiClient = apiClient;
    42      }
    43  
    44      public ApiClient getApiClient() {
    45          return apiClient;
    46      }
    47  
    48      public void setApiClient(ApiClient apiClient) {
    49          this.apiClient = apiClient;
    50      }
    51  
    52      {{#operation}}
    53      /**
    54       * {{summary}}
    55       * {{notes}}
    56  {{#responses}}     * <p><b>{{code}}</b>{{#message}} - {{message}}{{/message}}
    57  {{/responses}}{{#allParams}}     * @param {{paramName}} {{description}}{{^description}}The {{paramName}} parameter{{/description}}
    58  {{/allParams}}{{#returnType}}     * @return {{returnType}}
    59  {{/returnType}}     * @throws RestClientException if an error occurs while attempting to invoke the API
    60  {{#externalDocs}}
    61      * {{description}}
    62      * @see <a href="{{url}}">{{summary}} Documentation</a>
    63  {{/externalDocs}}
    64       */
    65      public {{#returnType}}{{#isArray}}Flux<{{{returnBaseType}}}>{{/isArray}}{{^isArray}}Mono<{{{returnType}}}>{{/isArray}} {{/returnType}}{{^returnType}}Mono<Void> {{/returnType}}{{operationId}}({{#allParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws RestClientException {
    66          Object postBody = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}};
    67          {{#allParams}}
    68          {{#required}}
    69          // verify the required parameter '{{paramName}}' is set
    70          if ({{paramName}} == null) {
    71              throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing the required parameter '{{paramName}}' when calling {{operationId}}");
    72          }
    73          {{/required}}
    74          {{/allParams}}
    75          // create path and map variables
    76          final Map<String, Object> pathParams = new HashMap<String, Object>();
    77          {{#hasPathParams}}
    78  
    79          {{#pathParams}}
    80          pathParams.put("{{baseName}}", {{#collectionFormat}}apiClient.collectionPathParameterToString(ApiClient.CollectionFormat.valueOf("csv".toUpperCase()), {{/collectionFormat}}{{{paramName}}}{{#collectionFormat}}){{/collectionFormat}});
    81          {{/pathParams}}
    82          {{/hasPathParams}}
    83  
    84          final MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
    85          final HttpHeaders headerParams = new HttpHeaders();
    86          final MultiValueMap<String, String> cookieParams = new LinkedMultiValueMap<String, String>();
    87          final MultiValueMap<String, Object> formParams = new LinkedMultiValueMap<String, Object>();
    88          {{#hasQueryParams}}
    89  
    90          {{#queryParams}}
    91          queryParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{collectionFormat}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}));
    92          {{/queryParams}}
    93          {{/hasQueryParams}}
    94          {{#hasHeaderParams}}
    95  
    96          {{#headerParams}}
    97          if ({{paramName}} != null)
    98          headerParams.add("{{baseName}}", apiClient.parameterToString({{paramName}}));{{^-last}}
    99          {{/-last}}
   100          {{/headerParams}}
   101          {{/hasHeaderParams}}
   102          {{#hasCookieParams}}
   103  
   104          {{#cookieParams}}
   105          cookieParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{collectionFormat}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}));
   106          {{/cookieParams}}
   107          {{/hasCookieParams}}
   108          {{#hasFormParams}}
   109  
   110          {{#formParams}}
   111          if ({{paramName}} != null)
   112              formParams.add{{#collectionFormat}}All{{/collectionFormat}}("{{baseName}}", {{#isFile}}new FileSystemResource({{paramName}}){{/isFile}}{{^isFile}}{{paramName}}{{/isFile}});
   113          {{/formParams}}
   114          {{/hasFormParams}}
   115  
   116          final String[] localVarAccepts = { {{#hasProduces}}
   117              {{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}}
   118          {{/hasProduces}}};
   119          final List<MediaType> localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);
   120          final String[] localVarContentTypes = { {{#hasConsumes}}
   121              {{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}}
   122          {{/hasConsumes}}};
   123          final MediaType localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);
   124  
   125          String[] localVarAuthNames = new String[] { {{#authMethods}}"{{name}}"{{^-last}}, {{/-last}}{{/authMethods}} };
   126  
   127          {{#returnType}}ParameterizedTypeReference<{{#isArray}}{{{returnBaseType}}}{{/isArray}}{{^isArray}}{{{returnType}}}{{/isArray}}> localVarReturnType = new ParameterizedTypeReference<{{#isArray}}{{{returnBaseType}}}{{/isArray}}{{^isArray}}{{{returnType}}}{{/isArray}}>() {};{{/returnType}}{{^returnType}}ParameterizedTypeReference<Void> localVarReturnType = new ParameterizedTypeReference<Void>() {};{{/returnType}}
   128          return apiClient.{{#isArray}}invokeFluxAPI{{/isArray}}{{^isArray}}invokeAPI{{/isArray}}("{{{path}}}", HttpMethod.{{httpMethod}}, pathParams, queryParams, postBody, headerParams, cookieParams, formParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
   129      }
   130      {{/operation}}
   131  }
   132  {{/operations}}