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