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

     1  require 'cgi'
     2  
     3  module {{moduleName}}
     4  {{#operations}}
     5    class {{classname}}
     6      attr_accessor :api_client
     7  
     8      def initialize(api_client = ApiClient.default)
     9        @api_client = api_client
    10      end
    11  {{#operation}}
    12      {{#summary}}
    13      # {{{summary}}}
    14      {{/summary}}
    15      {{#notes}}
    16      # {{{notes}}}
    17      {{/notes}}
    18  {{#allParams}}{{#required}}    # @param {{paramName}} [{{{dataType}}}] {{description}}
    19  {{/required}}{{/allParams}}    # @param [Hash] opts the optional parameters
    20  {{#allParams}}{{^required}}    # @option opts [{{{dataType}}}] :{{paramName}} {{description}}{{#defaultValue}} (default to {{{.}}}){{/defaultValue}}
    21  {{/required}}{{/allParams}}    # @return [{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}nil{{/returnType}}]
    22      def {{operationId}}({{#allParams}}{{#required}}{{paramName}}, {{/required}}{{/allParams}}opts = {})
    23        data, _status_code, _headers = {{operationId}}_with_http_info({{#allParams}}{{#required}}{{paramName}}, {{/required}}{{/allParams}}opts)
    24        data
    25      end
    26  
    27      {{#summary}}
    28      # {{summary}}
    29      {{/summary}}
    30      {{#notes}}
    31      # {{notes}}
    32      {{/notes}}
    33  {{#allParams}}{{#required}}    # @param {{paramName}} [{{{dataType}}}] {{description}}
    34  {{/required}}{{/allParams}}    # @param [Hash] opts the optional parameters
    35  {{#allParams}}{{^required}}    # @option opts [{{{dataType}}}] :{{paramName}} {{description}}
    36  {{/required}}{{/allParams}}    # @return [Array<(Response{{#returnType}}<({{{returnType}}})>{{/returnType}}, Integer, Hash)>] Response<({{#returnType}}{{{returnType}}})> data{{/returnType}}{{^returnType}}nil{{/returnType}}, response status code and response headers
    37      def {{operationId}}_with_http_info({{#allParams}}{{#required}}{{paramName}}, {{/required}}{{/allParams}}opts = {})
    38        if @api_client.config.debugging
    39          @api_client.config.logger.debug 'Calling API: {{classname}}.{{operationId}} ...'
    40        end
    41        {{#allParams}}
    42        {{^isNullable}}
    43        {{#required}}
    44        # verify the required parameter '{{paramName}}' is set
    45        if @api_client.config.client_side_validation && {{{paramName}}}.nil?
    46          fail ArgumentError, "Missing the required parameter '{{paramName}}' when calling {{classname}}.{{operationId}}"
    47        end
    48        {{#isEnum}}
    49        {{^isContainer}}
    50        # verify enum value
    51        allowable_values = [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}]
    52        if @api_client.config.client_side_validation && !allowable_values.include?({{{paramName}}})
    53          fail ArgumentError, "invalid value for \"{{{paramName}}}\", must be one of #{allowable_values}"
    54        end
    55        {{/isContainer}}
    56        {{/isEnum}}
    57        {{/required}}
    58        {{/isNullable}}
    59        {{^required}}
    60        {{#isEnum}}
    61        {{#collectionFormat}}
    62        allowable_values = [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}]
    63        if @api_client.config.client_side_validation && opts[:'{{{paramName}}}'] && !opts[:'{{{paramName}}}'].all? { |item| allowable_values.include?(item) }
    64          fail ArgumentError, "invalid value for \"{{{paramName}}}\", must include one of #{allowable_values}"
    65        end
    66        {{/collectionFormat}}
    67        {{^collectionFormat}}
    68        allowable_values = [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}]
    69        if @api_client.config.client_side_validation && opts[:'{{{paramName}}}'] && !allowable_values.include?(opts[:'{{{paramName}}}'])
    70          fail ArgumentError, "invalid value for \"{{{paramName}}}\", must be one of #{allowable_values}"
    71        end
    72        {{/collectionFormat}}
    73        {{/isEnum}}
    74        {{/required}}
    75        {{#hasValidation}}
    76        {{#maxLength}}
    77        if @api_client.config.client_side_validation && {{^required}}!opts[:'{{{paramName}}}'].nil? && {{/required}}{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:'{{{paramName}}}']{{/required}}.to_s.length > {{{maxLength}}}
    78          fail ArgumentError, 'invalid value for "{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:"{{{paramName}}}"]{{/required}}" when calling {{classname}}.{{operationId}}, the character length must be smaller than or equal to {{{maxLength}}}.'
    79        end
    80  
    81        {{/maxLength}}
    82        {{#minLength}}
    83        if @api_client.config.client_side_validation && {{^required}}!opts[:'{{{paramName}}}'].nil? && {{/required}}{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:'{{{paramName}}}']{{/required}}.to_s.length < {{{minLength}}}
    84          fail ArgumentError, 'invalid value for "{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:"{{{paramName}}}"]{{/required}}" when calling {{classname}}.{{operationId}}, the character length must be great than or equal to {{{minLength}}}.'
    85        end
    86  
    87        {{/minLength}}
    88        {{#maximum}}
    89        if @api_client.config.client_side_validation && {{^required}}!opts[:'{{{paramName}}}'].nil? && {{/required}}{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:'{{{paramName}}}']{{/required}} >{{#exclusiveMaximum}}={{/exclusiveMaximum}} {{{maximum}}}
    90          fail ArgumentError, 'invalid value for "{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:"{{{paramName}}}"]{{/required}}" when calling {{classname}}.{{operationId}}, must be smaller than {{^exclusiveMaximum}}or equal to {{/exclusiveMaximum}}{{{maximum}}}.'
    91        end
    92  
    93        {{/maximum}}
    94        {{#minimum}}
    95        if @api_client.config.client_side_validation && {{^required}}!opts[:'{{{paramName}}}'].nil? && {{/required}}{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:'{{{paramName}}}']{{/required}} <{{#exclusiveMinimum}}={{/exclusiveMinimum}} {{{minimum}}}
    96          fail ArgumentError, 'invalid value for "{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:"{{{paramName}}}"]{{/required}}" when calling {{classname}}.{{operationId}}, must be greater than {{^exclusiveMinimum}}or equal to {{/exclusiveMinimum}}{{{minimum}}}.'
    97        end
    98  
    99        {{/minimum}}
   100        {{#pattern}}
   101        pattern = Regexp.new({{{pattern}}})
   102        if @api_client.config.client_side_validation && {{^required}}!opts[:'{{{paramName}}}'].nil? && {{/required}}{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:'{{{paramName}}}']{{/required}} !~ pattern
   103          fail ArgumentError, "invalid value for '{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:\"{{{paramName}}}\"]{{/required}}' when calling {{classname}}.{{operationId}}, must conform to the pattern #{pattern}."
   104        end
   105  
   106        {{/pattern}}
   107        {{#maxItems}}
   108        if @api_client.config.client_side_validation && {{^required}}!opts[:'{{{paramName}}}'].nil? && {{/required}}{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:'{{{paramName}}}']{{/required}}.length > {{{maxItems}}}
   109          fail ArgumentError, 'invalid value for "{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:"{{{paramName}}}"]{{/required}}" when calling {{classname}}.{{operationId}}, number of items must be less than or equal to {{{maxItems}}}.'
   110        end
   111  
   112        {{/maxItems}}
   113        {{#minItems}}
   114        if @api_client.config.client_side_validation && {{^required}}!opts[:'{{{paramName}}}'].nil? && {{/required}}{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:'{{{paramName}}}']{{/required}}.length < {{{minItems}}}
   115          fail ArgumentError, 'invalid value for "{{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:"{{{paramName}}}"]{{/required}}" when calling {{classname}}.{{operationId}}, number of items must be greater than or equal to {{{minItems}}}.'
   116        end
   117  
   118        {{/minItems}}
   119        {{/hasValidation}}
   120        {{/allParams}}
   121        # resource path
   122        local_var_path = '{{{path}}}'{{#pathParams}}.sub('{' + '{{baseName}}' + '}', CGI.escape({{paramName}}.to_s){{^strictSpecBehavior}}.gsub('%2F', '/'){{/strictSpecBehavior}}){{/pathParams}}
   123  
   124        # query parameters
   125        query_params = opts[:query_params] || {}
   126        {{#queryParams}}
   127        {{#required}}
   128        query_params[:'{{{baseName}}}'] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}{{{paramName}}}{{/collectionFormat}}
   129        {{/required}}
   130        {{/queryParams}}
   131        {{#queryParams}}
   132        {{^required}}
   133        query_params[:'{{{baseName}}}'] = {{#collectionFormat}}@api_client.build_collection_param(opts[:'{{{paramName}}}'], :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}opts[:'{{{paramName}}}']{{/collectionFormat}} if !opts[:'{{{paramName}}}'].nil?
   134        {{/required}}
   135        {{/queryParams}}
   136  
   137        # header parameters
   138        header_params = opts[:header_params] || {}
   139        {{#hasProduces}}
   140        # HTTP header 'Accept' (if needed)
   141        header_params['Accept'] = @api_client.select_header_accept([{{#produces}}'{{{mediaType}}}'{{^-last}}, {{/-last}}{{/produces}}])
   142        {{/hasProduces}}
   143        {{#hasConsumes}}
   144        # HTTP header 'Content-Type'
   145        header_params['Content-Type'] = @api_client.select_header_content_type([{{#consumes}}'{{{mediaType}}}'{{^-last}}, {{/-last}}{{/consumes}}])
   146        {{/hasConsumes}}
   147        {{#headerParams}}
   148        {{#required}}
   149        header_params[:'{{{baseName}}}'] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}{{{paramName}}}{{/collectionFormat}}
   150        {{/required}}
   151        {{/headerParams}}
   152        {{#headerParams}}
   153        {{^required}}
   154        header_params[:'{{{baseName}}}'] = {{#collectionFormat}}@api_client.build_collection_param(opts[:'{{{paramName}}}'], :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}opts[:'{{{paramName}}}']{{/collectionFormat}} if !opts[:'{{{paramName}}}'].nil?
   155        {{/required}}
   156        {{/headerParams}}
   157  
   158        # form parameters
   159        form_params = opts[:form_params] || {}
   160        {{#formParams}}
   161        {{#required}}
   162        form_params['{{baseName}}'] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}{{{paramName}}}{{/collectionFormat}}
   163        {{/required}}
   164        {{/formParams}}
   165        {{#formParams}}
   166        {{^required}}
   167        form_params['{{baseName}}'] = {{#collectionFormat}}@api_client.build_collection_param(opts[:'{{{paramName}}}'], :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}opts[:'{{{paramName}}}']{{/collectionFormat}} if !opts[:'{{paramName}}'].nil?
   168        {{/required}}
   169        {{/formParams}}
   170  
   171        # http body (model)
   172        post_body = opts[:body] {{#bodyParam}}|| @api_client.object_to_http_body({{#required}}{{{paramName}}}{{/required}}{{^required}}opts[:'{{{paramName}}}']{{/required}}) {{/bodyParam}}
   173  
   174        # return_type
   175        return_type = opts[:return_type] {{#returnType}}|| '{{{returnType}}}' {{/returnType}}
   176  
   177        # auth_names
   178        auth_names = opts[:auth_names] || [{{#authMethods}}'{{name}}'{{^-last}}, {{/-last}}{{/authMethods}}]
   179  
   180        new_options = opts.merge(
   181          :header_params => header_params,
   182          :query_params => query_params,
   183          :form_params => form_params,
   184          :body => post_body,
   185          :auth_names => auth_names,
   186          :return_type => return_type
   187        )
   188  
   189        data, status_code, headers = @api_client.call_api(:{{httpMethod}}, local_var_path, new_options)
   190        if @api_client.config.debugging
   191          @api_client.config.logger.debug "API called: {{classname}}#{{operationId}}\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
   192        end
   193        response = ::{{moduleName}}::Response.new(data, headers)
   194        return response, status_code, headers
   195      end
   196  {{^-last}}
   197  
   198  {{/-last}}
   199  {{/operation}}
   200    end
   201  {{/operations}}
   202  end