From fc9d6325221f56998c8aa0c49b733715a25e959f Mon Sep 17 00:00:00 2001 From: William Cheng Date: Tue, 17 Mar 2015 05:24:43 +0800 Subject: [PATCH] update ruby client to support form parameters, add PATCH support, update ruby petstore client --- .../src/main/resources/ruby/api.mustache | 16 +++- .../resources/ruby/swagger/request.mustache | 24 ++++- samples/client/petstore/ruby/lib/PetApi.rb | 92 ++++++++++++++----- samples/client/petstore/ruby/lib/StoreApi.rb | 44 ++++++--- samples/client/petstore/ruby/lib/UserApi.rb | 88 +++++++++++++----- .../petstore/ruby/lib/swagger/request.rb | 24 ++++- 6 files changed, 215 insertions(+), 73 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/ruby/api.mustache b/modules/swagger-codegen/src/main/resources/ruby/api.mustache index b2c546b011e..1448e52bdf2 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/api.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/api.mustache @@ -37,14 +37,15 @@ class {{classname}} queryopts = options.select do |key,value| query_param_keys.include? key end - + {{#headerParams}}headers = { {{{paramName}}}: {{{paramName}}}, } {{/headerParams}} {{^headerParams}}headers = nil {{/headerParams}} - + + # http body (model) post_body = nil {{#bodyParam}} if body != nil @@ -69,17 +70,22 @@ class {{classname}} end {{/bodyParam}} + # form parameters + form_parameter_hash = {} + {{#formParams}}{{#optional}}form_parameter_hash["{{baseName}}"] = options[:'{{paramName}}'] if options[:'{{paramName}}']{{/optional}} + {{^optional}}form_parameter_hash["{{baseName}}"] = {{paramName}}{{/optional}}{{/formParams}} + {{#returnType}} - response = Swagger::Request.new(:{{httpMethod}}, path, {:params=>queryopts,:headers=>headers, :body=>post_body }).make.body + response = Swagger::Request.new(:{{httpMethod}}, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make.body {{#returnContainer}} response.map {|response|{{/returnContainer}} {{returnBaseType}}.new(response){{#returnContainer}} }{{/returnContainer}} {{/returnType}} {{^returnType}} - Swagger::Request.new(:{{httpMethod}}, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:{{httpMethod}}, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make {{/returnType}} {{newline}} end {{/operation}} end -{{/operations}} \ No newline at end of file +{{/operations}} diff --git a/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache b/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache index 7836cb0bf03..92b5cba810a 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/swagger/request.mustache @@ -6,7 +6,7 @@ module Swagger require 'typhoeus' require "swagger/version" - attr_accessor :host, :path, :format, :params, :body, :http_method, :headers + attr_accessor :host, :path, :format, :params, :body, :http_method, :headers, :form_params # All requests must have an HTTP method and a path @@ -115,9 +115,18 @@ module Swagger end # If body is an object, JSONify it before making the actual request. - # + # For form parameters, remove empty value def outgoing_body - body.is_a?(String) ? body : body.to_json + # http form + if @body.nil? && @form_params && !@form_params.empty? + data = form_params.dup + data.each do |key, value| + data[key] = value.to_s if value && !value.is_a?(File) # remove emtpy form parameter + end + data + else # http body is JSON + @body.is_a?(String) ? @body : @body.to_json + end end # Construct a query string from the query-string-type params @@ -163,6 +172,13 @@ module Swagger :headers => self.headers.stringify_keys, ) + when :patch,:PATCH + Typhoeus::Request.patch( + self.url, + :body => self.outgoing_body, + :headers => self.headers.stringify_keys, + ) + when :put,:PUT Typhoeus::Request.put( self.url, @@ -196,4 +212,4 @@ module Swagger end end -end \ No newline at end of file +end diff --git a/samples/client/petstore/ruby/lib/PetApi.rb b/samples/client/petstore/ruby/lib/PetApi.rb index 41b4f4122c2..d7d55a7c323 100644 --- a/samples/client/petstore/ruby/lib/PetApi.rb +++ b/samples/client/petstore/ruby/lib/PetApi.rb @@ -28,11 +28,12 @@ class PetApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil if body != nil @@ -57,9 +58,13 @@ class PetApi end + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:PUT, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:PUT, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end @@ -84,11 +89,12 @@ class PetApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil if body != nil @@ -113,9 +119,13 @@ class PetApi end + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end @@ -140,16 +150,21 @@ class PetApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} - response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body }).make.body + + + response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make.body response.map {|response| Pet.new(response) } @@ -177,16 +192,21 @@ class PetApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} - response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body }).make.body + + + response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make.body response.map {|response| Pet.new(response) } @@ -215,16 +235,21 @@ class PetApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} - response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body }).make.body + + + response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make.body Pet.new(response) @@ -258,17 +283,24 @@ class PetApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} + + form_parameter_hash["name"] = name + form_parameter_hash["status"] = status + - Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end @@ -297,19 +329,24 @@ class PetApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = { api_key: api_key, } - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:DELETE, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:DELETE, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end @@ -341,17 +378,24 @@ class PetApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} + + form_parameter_hash["additionalMetadata"] = additionalMetadata + form_parameter_hash["file"] = file + - Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end diff --git a/samples/client/petstore/ruby/lib/StoreApi.rb b/samples/client/petstore/ruby/lib/StoreApi.rb index b5d33010cc9..31513cc832b 100644 --- a/samples/client/petstore/ruby/lib/StoreApi.rb +++ b/samples/client/petstore/ruby/lib/StoreApi.rb @@ -26,16 +26,21 @@ class StoreApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} - response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body }).make.body + + + response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make.body response.map {|response| map.new(response) } @@ -63,11 +68,12 @@ class StoreApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil if body != nil @@ -92,8 +98,12 @@ class StoreApi end + # form parameters + form_parameter_hash = {} - response = Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body }).make.body + + + response = Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make.body Order.new(response) @@ -121,16 +131,21 @@ class StoreApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} - response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body }).make.body + + + response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make.body Order.new(response) @@ -158,17 +173,22 @@ class StoreApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:DELETE, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:DELETE, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end diff --git a/samples/client/petstore/ruby/lib/UserApi.rb b/samples/client/petstore/ruby/lib/UserApi.rb index 40051e7c9fc..4b24bf1f487 100644 --- a/samples/client/petstore/ruby/lib/UserApi.rb +++ b/samples/client/petstore/ruby/lib/UserApi.rb @@ -28,11 +28,12 @@ class UserApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil if body != nil @@ -57,9 +58,13 @@ class UserApi end + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end @@ -84,11 +89,12 @@ class UserApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil if body != nil @@ -113,9 +119,13 @@ class UserApi end + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end @@ -140,11 +150,12 @@ class UserApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil if body != nil @@ -169,9 +180,13 @@ class UserApi end + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:POST, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end @@ -199,16 +214,21 @@ class UserApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} - response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body }).make.body + + + response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make.body string.new(response) @@ -233,17 +253,22 @@ class UserApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end @@ -269,16 +294,21 @@ class UserApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} - response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body }).make.body + + + response = Swagger::Request.new(:GET, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make.body User.new(response) @@ -309,11 +339,12 @@ class UserApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil if body != nil @@ -338,9 +369,13 @@ class UserApi end + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:PUT, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:PUT, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end @@ -366,17 +401,22 @@ class UserApi queryopts = options.select do |key,value| query_param_keys.include? key end - + headers = nil - + + # http body (model) post_body = nil + # form parameters + form_parameter_hash = {} + + - Swagger::Request.new(:DELETE, path, {:params=>queryopts,:headers=>headers, :body=>post_body}).make + Swagger::Request.new(:DELETE, path, {:params=>queryopts,:headers=>headers, :body=>post_body, :form_params => form_parameter_hash }).make end diff --git a/samples/client/petstore/ruby/lib/swagger/request.rb b/samples/client/petstore/ruby/lib/swagger/request.rb index 7836cb0bf03..92b5cba810a 100644 --- a/samples/client/petstore/ruby/lib/swagger/request.rb +++ b/samples/client/petstore/ruby/lib/swagger/request.rb @@ -6,7 +6,7 @@ module Swagger require 'typhoeus' require "swagger/version" - attr_accessor :host, :path, :format, :params, :body, :http_method, :headers + attr_accessor :host, :path, :format, :params, :body, :http_method, :headers, :form_params # All requests must have an HTTP method and a path @@ -115,9 +115,18 @@ module Swagger end # If body is an object, JSONify it before making the actual request. - # + # For form parameters, remove empty value def outgoing_body - body.is_a?(String) ? body : body.to_json + # http form + if @body.nil? && @form_params && !@form_params.empty? + data = form_params.dup + data.each do |key, value| + data[key] = value.to_s if value && !value.is_a?(File) # remove emtpy form parameter + end + data + else # http body is JSON + @body.is_a?(String) ? @body : @body.to_json + end end # Construct a query string from the query-string-type params @@ -163,6 +172,13 @@ module Swagger :headers => self.headers.stringify_keys, ) + when :patch,:PATCH + Typhoeus::Request.patch( + self.url, + :body => self.outgoing_body, + :headers => self.headers.stringify_keys, + ) + when :put,:PUT Typhoeus::Request.put( self.url, @@ -196,4 +212,4 @@ module Swagger end end -end \ No newline at end of file +end