Merge pull request #585 from wing328/ruby_fix_path_variable

Fixed Ruby path variable url-encoded twice, removed duplicated path variable replacement
This commit is contained in:
Tony Tam 2015-04-06 07:42:58 -06:00
commit b9514a40de
9 changed files with 34 additions and 46 deletions

View File

@ -5,10 +5,6 @@ class {{classname}}
basePath = "{{basePath}}"
# apiInvoker = APIInvoker
def self.escapeString(string)
URI.encode(string.to_s)
end
{{#operation}}
{{newline}}
# {{summary}}
@ -34,7 +30,7 @@ class {{classname}}
}.merge(opts)
#resource path
path = "{{path}}".sub('{format}','json'){{#pathParams}}.sub('{' + '{{baseName}}' + '}', escapeString({{paramName}}))
path = "{{path}}".sub('{format}','json'){{#pathParams}}.sub('{' + '{{baseName}}' + '}', {{paramName}}.to_s)
{{/pathParams}}{{newline}}
# pull querystring keys from options

View File

@ -74,11 +74,6 @@ module Swagger
def interpreted_path
p = self.path.dup
# Fill in the path params
self.params.each_pair do |key, value|
p = p.gsub("{#{key}}", value.to_s)
end
# Stick a .{format} placeholder into the path if there isn't
# one already or an actual format like json or xml
# e.g. /words/blah => /words.{format}/blah

View File

@ -4,10 +4,6 @@ class PetApi
basePath = "http://petstore.swagger.io/v2"
# apiInvoker = APIInvoker
def self.escapeString(string)
URI.encode(string.to_s)
end
# Update an existing pet
#
@ -266,7 +262,7 @@ class PetApi
}.merge(opts)
#resource path
path = "/pet/{petId}".sub('{format}','json').sub('{' + 'petId' + '}', escapeString(pet_id))
path = "/pet/{petId}".sub('{format}','json').sub('{' + 'petId' + '}', pet_id.to_s)
# pull querystring keys from options
@ -321,7 +317,7 @@ class PetApi
}.merge(opts)
#resource path
path = "/pet/{petId}".sub('{format}','json').sub('{' + 'petId' + '}', escapeString(pet_id))
path = "/pet/{petId}".sub('{format}','json').sub('{' + 'petId' + '}', pet_id.to_s)
# pull querystring keys from options
@ -375,7 +371,7 @@ class PetApi
}.merge(opts)
#resource path
path = "/pet/{petId}".sub('{format}','json').sub('{' + 'petId' + '}', escapeString(pet_id))
path = "/pet/{petId}".sub('{format}','json').sub('{' + 'petId' + '}', pet_id.to_s)
# pull querystring keys from options
@ -429,7 +425,7 @@ class PetApi
}.merge(opts)
#resource path
path = "/pet/{petId}/uploadImage".sub('{format}','json').sub('{' + 'petId' + '}', escapeString(pet_id))
path = "/pet/{petId}/uploadImage".sub('{format}','json').sub('{' + 'petId' + '}', pet_id.to_s)
# pull querystring keys from options

View File

@ -4,10 +4,6 @@ class StoreApi
basePath = "http://petstore.swagger.io/v2"
# apiInvoker = APIInvoker
def self.escapeString(string)
URI.encode(string.to_s)
end
# Returns pet inventories by status
# Returns a map of status codes to quantities
@ -145,7 +141,7 @@ class StoreApi
}.merge(opts)
#resource path
path = "/store/order/{orderId}".sub('{format}','json').sub('{' + 'orderId' + '}', escapeString(order_id))
path = "/store/order/{orderId}".sub('{format}','json').sub('{' + 'orderId' + '}', order_id.to_s)
# pull querystring keys from options
@ -196,7 +192,7 @@ class StoreApi
}.merge(opts)
#resource path
path = "/store/order/{orderId}".sub('{format}','json').sub('{' + 'orderId' + '}', escapeString(order_id))
path = "/store/order/{orderId}".sub('{format}','json').sub('{' + 'orderId' + '}', order_id.to_s)
# pull querystring keys from options

View File

@ -74,11 +74,6 @@ module Swagger
def interpreted_path
p = self.path.dup
# Fill in the path params
self.params.each_pair do |key, value|
p = p.gsub("{#{key}}", value.to_s)
end
# Stick a .{format} placeholder into the path if there isn't
# one already or an actual format like json or xml
# e.g. /words/blah => /words.{format}/blah

View File

@ -4,10 +4,6 @@ class UserApi
basePath = "http://petstore.swagger.io/v2"
# apiInvoker = APIInvoker
def self.escapeString(string)
URI.encode(string.to_s)
end
# Create user
# This can only be done by the logged in user.
@ -332,7 +328,7 @@ class UserApi
}.merge(opts)
#resource path
path = "/user/{username}".sub('{format}','json').sub('{' + 'username' + '}', escapeString(username))
path = "/user/{username}".sub('{format}','json').sub('{' + 'username' + '}', username.to_s)
# pull querystring keys from options
@ -385,7 +381,7 @@ class UserApi
}.merge(opts)
#resource path
path = "/user/{username}".sub('{format}','json').sub('{' + 'username' + '}', escapeString(username))
path = "/user/{username}".sub('{format}','json').sub('{' + 'username' + '}', username.to_s)
# pull querystring keys from options
@ -455,7 +451,7 @@ class UserApi
}.merge(opts)
#resource path
path = "/user/{username}".sub('{format}','json').sub('{' + 'username' + '}', escapeString(username))
path = "/user/{username}".sub('{format}','json').sub('{' + 'username' + '}', username.to_s)
# pull querystring keys from options

View File

@ -65,7 +65,7 @@ describe "Store" do
end
it "should fetch an order" do
item = StoreApi.getOrderById(2)
item.id.should == 2
item = StoreApi.getOrderById(5)
item.id.should == 5
end
end
end

View File

@ -73,20 +73,18 @@ describe Swagger::Request do
describe "path" do
it "accounts for a total absence of format in the path string" do
@request = Swagger::Request.new(:get, "/word.{format}/{word}/entries", @default_params.merge({
@request = Swagger::Request.new(:get, "/word.{format}/cat/entries", @default_params.merge({
:format => "xml",
:params => {
:word => "cat"
}
}))
@request.url.should == "http://petstore.swagger.io/v2/word.xml/cat/entries"
end
it "does string substitution on path params" do
@request = Swagger::Request.new(:get, "/word.{format}/{word}/entries", @default_params.merge({
it "does string substitution (format) on path params" do
@request = Swagger::Request.new(:get, "/word.{format}/cat/entries", @default_params.merge({
:format => "xml",
:params => {
:word => "cat"
}
}))
@request.url.should == "http://petstore.swagger.io/v2/word.xml/cat/entries"
@ -123,7 +121,7 @@ describe Swagger::Request do
end
it "URI encodes the path" do
@request = Swagger::Request.new(:get, "word.{format}/{word}/definitions", @default_params.merge({
@request = Swagger::Request.new(:get, "word.{format}/bill gates/definitions", @default_params.merge({
:params => {
:word => "bill gates"
}
@ -200,4 +198,4 @@ describe Swagger::Request do
end
end
end

View File

@ -0,0 +1,16 @@
require 'spec_helper'
describe "Store" do
before do
Swagger.configure do |config|
config.api_key = 'special-key'
config.host = 'petstore.swagger.io'
config.base_path = '/v2'
end
end
it "should fetch an order" do
item = StoreApi.getOrderById(5)
item.id.should == 5
end
end