diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java index 46c0f70a4b6..41d9f494a7c 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RubyClientCodegen.java @@ -73,6 +73,7 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("swagger.mustache", baseFolder, "swagger.rb")); supportingFiles.add(new SupportingFile("swagger" + File.separatorChar + "request.mustache", swaggerFolder, "request.rb")); supportingFiles.add(new SupportingFile("swagger" + File.separatorChar + "response.mustache", swaggerFolder, "response.rb")); + supportingFiles.add(new SupportingFile("swagger" + File.separatorChar + "api_error.mustache", swaggerFolder, "api_error.rb")); supportingFiles.add(new SupportingFile("swagger" + File.separatorChar + "version.mustache", swaggerFolder, "version.rb")); supportingFiles.add(new SupportingFile("swagger" + File.separatorChar + "configuration.mustache", swaggerFolder, "configuration.rb")); supportingFiles.add(new SupportingFile("base_object.mustache", modelFolder, "base_object.rb")); diff --git a/modules/swagger-codegen/src/main/resources/ruby/swagger.mustache b/modules/swagger-codegen/src/main/resources/ruby/swagger.mustache index dd2f630a8c9..239e3cfac26 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/swagger.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/swagger.mustache @@ -52,7 +52,7 @@ module {{moduleName}} return if Swagger.authenticated? if Swagger.configuration.username.blank? || Swagger.configuration.password.blank? - raise ClientError, "Username and password are required to authenticate." + raise ApiError, "Username and password are required to authenticate." end request = Swagger::Request.new( @@ -69,10 +69,4 @@ module {{moduleName}} end end end - - class ServerError < StandardError - end - - class ClientError < StandardError - end end diff --git a/modules/swagger-codegen/src/main/resources/ruby/swagger/api_error.mustache b/modules/swagger-codegen/src/main/resources/ruby/swagger/api_error.mustache new file mode 100644 index 00000000000..552161238a0 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/ruby/swagger/api_error.mustache @@ -0,0 +1,26 @@ +module {{moduleName}} + module Swagger + class ApiError < StandardError + attr_reader :code, :response_headers, :response_body + + # Usage examples: + # ApiError.new + # ApiError.new("message") + # ApiError.new(:code => 500, :response_headers => {}, :response_body => "") + # ApiError.new(:code => 404, :message => "Not Found") + def initialize(arg = nil) + if arg.is_a? Hash + arg.each do |k, v| + if k.to_s == 'message' + super v + else + instance_variable_set "@#{k}", v + end + end + else + super arg + end + end + end + end +end diff --git a/modules/swagger-codegen/src/main/resources/ruby/swagger/response.mustache b/modules/swagger-codegen/src/main/resources/ruby/swagger/response.mustache index 717ce49c3d5..b621110935a 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/swagger/response.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/swagger/response.mustache @@ -9,9 +9,11 @@ module {{moduleName}} def initialize(raw) self.raw = raw - case self.code - when 500..510 then raise(ServerError, self.body) - when 299..426 then raise(ClientError, self.body) + unless raw.success? + fail ApiError.new(:code => code, + :response_headers => headers, + :response_body => body), + raw.status_message end end diff --git a/modules/swagger-codegen/src/main/resources/ruby/swagger_client.mustache b/modules/swagger-codegen/src/main/resources/ruby/swagger_client.mustache index df675ddf26e..69454179283 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/swagger_client.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/swagger_client.mustache @@ -2,6 +2,7 @@ require '{{gemName}}/monkey' require '{{gemName}}/swagger' require '{{gemName}}/swagger/configuration' +require '{{gemName}}/swagger/api_error' require '{{gemName}}/swagger/request' require '{{gemName}}/swagger/response' require '{{gemName}}/swagger/version' diff --git a/samples/client/petstore/ruby/lib/swagger_client.rb b/samples/client/petstore/ruby/lib/swagger_client.rb index 6d239185005..42380927f82 100644 --- a/samples/client/petstore/ruby/lib/swagger_client.rb +++ b/samples/client/petstore/ruby/lib/swagger_client.rb @@ -2,6 +2,7 @@ require 'swagger_client/monkey' require 'swagger_client/swagger' require 'swagger_client/swagger/configuration' +require 'swagger_client/swagger/api_error' require 'swagger_client/swagger/request' require 'swagger_client/swagger/response' require 'swagger_client/swagger/version' diff --git a/samples/client/petstore/ruby/lib/swagger_client/swagger.rb b/samples/client/petstore/ruby/lib/swagger_client/swagger.rb index 2e2632c169d..477ec89ba81 100644 --- a/samples/client/petstore/ruby/lib/swagger_client/swagger.rb +++ b/samples/client/petstore/ruby/lib/swagger_client/swagger.rb @@ -52,7 +52,7 @@ module SwaggerClient return if Swagger.authenticated? if Swagger.configuration.username.blank? || Swagger.configuration.password.blank? - raise ClientError, "Username and password are required to authenticate." + raise ApiError, "Username and password are required to authenticate." end request = Swagger::Request.new( @@ -69,10 +69,4 @@ module SwaggerClient end end end - - class ServerError < StandardError - end - - class ClientError < StandardError - end end diff --git a/samples/client/petstore/ruby/lib/swagger_client/swagger/api_error.rb b/samples/client/petstore/ruby/lib/swagger_client/swagger/api_error.rb new file mode 100644 index 00000000000..12319927ace --- /dev/null +++ b/samples/client/petstore/ruby/lib/swagger_client/swagger/api_error.rb @@ -0,0 +1,26 @@ +module SwaggerClient + module Swagger + class ApiError < StandardError + attr_reader :code, :response_headers, :response_body + + # Usage examples: + # ApiError.new + # ApiError.new("message") + # ApiError.new(:code => 500, :response_headers => {}, :response_body => "") + # ApiError.new(:code => 404, :message => "Not Found") + def initialize(arg = nil) + if arg.is_a? Hash + arg.each do |k, v| + if k.to_s == 'message' + super v + else + instance_variable_set "@#{k}", v + end + end + else + super arg + end + end + end + end +end diff --git a/samples/client/petstore/ruby/lib/swagger_client/swagger/response.rb b/samples/client/petstore/ruby/lib/swagger_client/swagger/response.rb index 53b60205a75..f560006de6d 100644 --- a/samples/client/petstore/ruby/lib/swagger_client/swagger/response.rb +++ b/samples/client/petstore/ruby/lib/swagger_client/swagger/response.rb @@ -9,9 +9,11 @@ module SwaggerClient def initialize(raw) self.raw = raw - case self.code - when 500..510 then raise(ServerError, self.body) - when 299..426 then raise(ClientError, self.body) + unless raw.success? + fail ApiError.new(:code => code, + :response_headers => headers, + :response_body => body), + raw.status_message end end