diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Animal.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Animal.pm
new file mode 100644
index 000000000000..c2e124ad8b45
--- /dev/null
+++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Animal.pm
@@ -0,0 +1,127 @@
+package WWW::SwaggerClient::Object::Animal;
+
+require 5.6.0;
+use strict;
+use warnings;
+use utf8;
+use JSON qw(decode_json);
+use Data::Dumper;
+use Module::Runtime qw(use_module);
+use Log::Any qw($log);
+use Date::Parse;
+use DateTime;
+
+use base ("Class::Accessor", "Class::Data::Inheritable");
+
+
+#
+#
+#
+#NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually.
+#
+
+__PACKAGE__->mk_classdata('attribute_map' => {});
+__PACKAGE__->mk_classdata('swagger_types' => {});
+__PACKAGE__->mk_classdata('method_documentation' => {});
+__PACKAGE__->mk_classdata('class_documentation' => {});
+
+# new object
+sub new {
+ my ($class, %args) = @_;
+
+ my $self = bless {}, $class;
+
+ foreach my $attribute (keys %{$class->attribute_map}) {
+ my $args_key = $class->attribute_map->{$attribute};
+ $self->$attribute( $args{ $args_key } );
+ }
+
+ return $self;
+}
+
+# return perl hash
+sub to_hash {
+ return decode_json(JSON->new->convert_blessed->encode( shift ));
+}
+
+# used by JSON for serialization
+sub TO_JSON {
+ my $self = shift;
+ my $_data = {};
+ foreach my $_key (keys %{$self->attribute_map}) {
+ if (defined $self->{$_key}) {
+ $_data->{$self->attribute_map->{$_key}} = $self->{$_key};
+ }
+ }
+ return $_data;
+}
+
+# from Perl hashref
+sub from_hash {
+ my ($self, $hash) = @_;
+
+ # loop through attributes and use swagger_types to deserialize the data
+ while ( my ($_key, $_type) = each %{$self->swagger_types} ) {
+ my $_json_attribute = $self->attribute_map->{$_key};
+ if ($_type =~ /^array\[/i) { # array
+ my $_subclass = substr($_type, 6, -1);
+ my @_array = ();
+ foreach my $_element (@{$hash->{$_json_attribute}}) {
+ push @_array, $self->_deserialize($_subclass, $_element);
+ }
+ $self->{$_key} = \@_array;
+ } elsif (exists $hash->{$_json_attribute}) { #hash(model), primitive, datetime
+ $self->{$_key} = $self->_deserialize($_type, $hash->{$_json_attribute});
+ } else {
+ $log->debugf("Warning: %s (%s) does not exist in input hash\n", $_key, $_json_attribute);
+ }
+ }
+
+ return $self;
+}
+
+# deserialize non-array data
+sub _deserialize {
+ my ($self, $type, $data) = @_;
+ $log->debugf("deserializing %s with %s",Dumper($data), $type);
+
+ if ($type eq 'DateTime') {
+ return DateTime->from_epoch(epoch => str2time($data));
+ } elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) {
+ return $data;
+ } else { # hash(model)
+ my $_instance = eval "WWW::SwaggerClient::Object::$type->new()";
+ return $_instance->from_hash($data);
+ }
+}
+
+
+
+__PACKAGE__->class_documentation({description => '',
+ class => 'Animal',
+ required => [], # TODO
+} );
+
+__PACKAGE__->method_documentation({
+ 'class_name' => {
+ datatype => 'string',
+ base_name => 'className',
+ description => '',
+ format => '',
+ read_only => '',
+ },
+
+});
+
+__PACKAGE__->swagger_types( {
+ 'class_name' => 'string'
+} );
+
+__PACKAGE__->attribute_map( {
+ 'class_name' => 'className'
+} );
+
+__PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map});
+
+
+1;
diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Cat.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Cat.pm
new file mode 100644
index 000000000000..05500d61ad08
--- /dev/null
+++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Cat.pm
@@ -0,0 +1,136 @@
+package WWW::SwaggerClient::Object::Cat;
+
+require 5.6.0;
+use strict;
+use warnings;
+use utf8;
+use JSON qw(decode_json);
+use Data::Dumper;
+use Module::Runtime qw(use_module);
+use Log::Any qw($log);
+use Date::Parse;
+use DateTime;
+
+use base ("Class::Accessor", "Class::Data::Inheritable");
+
+
+#
+#
+#
+#NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually.
+#
+
+__PACKAGE__->mk_classdata('attribute_map' => {});
+__PACKAGE__->mk_classdata('swagger_types' => {});
+__PACKAGE__->mk_classdata('method_documentation' => {});
+__PACKAGE__->mk_classdata('class_documentation' => {});
+
+# new object
+sub new {
+ my ($class, %args) = @_;
+
+ my $self = bless {}, $class;
+
+ foreach my $attribute (keys %{$class->attribute_map}) {
+ my $args_key = $class->attribute_map->{$attribute};
+ $self->$attribute( $args{ $args_key } );
+ }
+
+ return $self;
+}
+
+# return perl hash
+sub to_hash {
+ return decode_json(JSON->new->convert_blessed->encode( shift ));
+}
+
+# used by JSON for serialization
+sub TO_JSON {
+ my $self = shift;
+ my $_data = {};
+ foreach my $_key (keys %{$self->attribute_map}) {
+ if (defined $self->{$_key}) {
+ $_data->{$self->attribute_map->{$_key}} = $self->{$_key};
+ }
+ }
+ return $_data;
+}
+
+# from Perl hashref
+sub from_hash {
+ my ($self, $hash) = @_;
+
+ # loop through attributes and use swagger_types to deserialize the data
+ while ( my ($_key, $_type) = each %{$self->swagger_types} ) {
+ my $_json_attribute = $self->attribute_map->{$_key};
+ if ($_type =~ /^array\[/i) { # array
+ my $_subclass = substr($_type, 6, -1);
+ my @_array = ();
+ foreach my $_element (@{$hash->{$_json_attribute}}) {
+ push @_array, $self->_deserialize($_subclass, $_element);
+ }
+ $self->{$_key} = \@_array;
+ } elsif (exists $hash->{$_json_attribute}) { #hash(model), primitive, datetime
+ $self->{$_key} = $self->_deserialize($_type, $hash->{$_json_attribute});
+ } else {
+ $log->debugf("Warning: %s (%s) does not exist in input hash\n", $_key, $_json_attribute);
+ }
+ }
+
+ return $self;
+}
+
+# deserialize non-array data
+sub _deserialize {
+ my ($self, $type, $data) = @_;
+ $log->debugf("deserializing %s with %s",Dumper($data), $type);
+
+ if ($type eq 'DateTime') {
+ return DateTime->from_epoch(epoch => str2time($data));
+ } elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) {
+ return $data;
+ } else { # hash(model)
+ my $_instance = eval "WWW::SwaggerClient::Object::$type->new()";
+ return $_instance->from_hash($data);
+ }
+}
+
+
+
+__PACKAGE__->class_documentation({description => '',
+ class => 'Cat',
+ required => [], # TODO
+} );
+
+__PACKAGE__->method_documentation({
+ 'class_name' => {
+ datatype => 'string',
+ base_name => 'className',
+ description => '',
+ format => '',
+ read_only => '',
+ },
+ 'declawed' => {
+ datatype => 'boolean',
+ base_name => 'declawed',
+ description => '',
+ format => '',
+ read_only => '',
+ },
+
+});
+
+__PACKAGE__->swagger_types( {
+ 'class_name' => 'string',
+ 'declawed' => 'boolean'
+} );
+
+__PACKAGE__->attribute_map( {
+ 'class_name' => 'className',
+ 'declawed' => 'declawed'
+} );
+
+__PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map});
+
+
+1;
diff --git a/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Dog.pm b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Dog.pm
new file mode 100644
index 000000000000..b4192ec71cd9
--- /dev/null
+++ b/samples/client/petstore/perl/lib/WWW/SwaggerClient/Object/Dog.pm
@@ -0,0 +1,136 @@
+package WWW::SwaggerClient::Object::Dog;
+
+require 5.6.0;
+use strict;
+use warnings;
+use utf8;
+use JSON qw(decode_json);
+use Data::Dumper;
+use Module::Runtime qw(use_module);
+use Log::Any qw($log);
+use Date::Parse;
+use DateTime;
+
+use base ("Class::Accessor", "Class::Data::Inheritable");
+
+
+#
+#
+#
+#NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually.
+#
+
+__PACKAGE__->mk_classdata('attribute_map' => {});
+__PACKAGE__->mk_classdata('swagger_types' => {});
+__PACKAGE__->mk_classdata('method_documentation' => {});
+__PACKAGE__->mk_classdata('class_documentation' => {});
+
+# new object
+sub new {
+ my ($class, %args) = @_;
+
+ my $self = bless {}, $class;
+
+ foreach my $attribute (keys %{$class->attribute_map}) {
+ my $args_key = $class->attribute_map->{$attribute};
+ $self->$attribute( $args{ $args_key } );
+ }
+
+ return $self;
+}
+
+# return perl hash
+sub to_hash {
+ return decode_json(JSON->new->convert_blessed->encode( shift ));
+}
+
+# used by JSON for serialization
+sub TO_JSON {
+ my $self = shift;
+ my $_data = {};
+ foreach my $_key (keys %{$self->attribute_map}) {
+ if (defined $self->{$_key}) {
+ $_data->{$self->attribute_map->{$_key}} = $self->{$_key};
+ }
+ }
+ return $_data;
+}
+
+# from Perl hashref
+sub from_hash {
+ my ($self, $hash) = @_;
+
+ # loop through attributes and use swagger_types to deserialize the data
+ while ( my ($_key, $_type) = each %{$self->swagger_types} ) {
+ my $_json_attribute = $self->attribute_map->{$_key};
+ if ($_type =~ /^array\[/i) { # array
+ my $_subclass = substr($_type, 6, -1);
+ my @_array = ();
+ foreach my $_element (@{$hash->{$_json_attribute}}) {
+ push @_array, $self->_deserialize($_subclass, $_element);
+ }
+ $self->{$_key} = \@_array;
+ } elsif (exists $hash->{$_json_attribute}) { #hash(model), primitive, datetime
+ $self->{$_key} = $self->_deserialize($_type, $hash->{$_json_attribute});
+ } else {
+ $log->debugf("Warning: %s (%s) does not exist in input hash\n", $_key, $_json_attribute);
+ }
+ }
+
+ return $self;
+}
+
+# deserialize non-array data
+sub _deserialize {
+ my ($self, $type, $data) = @_;
+ $log->debugf("deserializing %s with %s",Dumper($data), $type);
+
+ if ($type eq 'DateTime') {
+ return DateTime->from_epoch(epoch => str2time($data));
+ } elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) {
+ return $data;
+ } else { # hash(model)
+ my $_instance = eval "WWW::SwaggerClient::Object::$type->new()";
+ return $_instance->from_hash($data);
+ }
+}
+
+
+
+__PACKAGE__->class_documentation({description => '',
+ class => 'Dog',
+ required => [], # TODO
+} );
+
+__PACKAGE__->method_documentation({
+ 'class_name' => {
+ datatype => 'string',
+ base_name => 'className',
+ description => '',
+ format => '',
+ read_only => '',
+ },
+ 'breed' => {
+ datatype => 'string',
+ base_name => 'breed',
+ description => '',
+ format => '',
+ read_only => '',
+ },
+
+});
+
+__PACKAGE__->swagger_types( {
+ 'class_name' => 'string',
+ 'breed' => 'string'
+} );
+
+__PACKAGE__->attribute_map( {
+ 'class_name' => 'className',
+ 'breed' => 'breed'
+} );
+
+__PACKAGE__->mk_accessors(keys %{__PACKAGE__->attribute_map});
+
+
+1;
diff --git a/samples/client/petstore/perl/t/AnimalTest.t b/samples/client/petstore/perl/t/AnimalTest.t
new file mode 100644
index 000000000000..7d608e30803d
--- /dev/null
+++ b/samples/client/petstore/perl/t/AnimalTest.t
@@ -0,0 +1,17 @@
+# NOTE: This class is auto generated by the Swagger Codegen
+# Please update the test case below to test the model.
+
+use Test::More tests => 2;
+use Test::Exception;
+
+use lib 'lib';
+use strict;
+use warnings;
+
+
+use_ok('WWW::SwaggerClient::Object::Animal');
+
+my $instance = WWW::SwaggerClient::Object::Animal->new();
+
+isa_ok($instance, 'WWW::SwaggerClient::Object::Animal');
+
diff --git a/samples/client/petstore/perl/t/CatTest.t b/samples/client/petstore/perl/t/CatTest.t
new file mode 100644
index 000000000000..cc1569cab400
--- /dev/null
+++ b/samples/client/petstore/perl/t/CatTest.t
@@ -0,0 +1,17 @@
+# NOTE: This class is auto generated by the Swagger Codegen
+# Please update the test case below to test the model.
+
+use Test::More tests => 2;
+use Test::Exception;
+
+use lib 'lib';
+use strict;
+use warnings;
+
+
+use_ok('WWW::SwaggerClient::Object::Cat');
+
+my $instance = WWW::SwaggerClient::Object::Cat->new();
+
+isa_ok($instance, 'WWW::SwaggerClient::Object::Cat');
+
diff --git a/samples/client/petstore/perl/t/DogTest.t b/samples/client/petstore/perl/t/DogTest.t
new file mode 100644
index 000000000000..d99225a0592e
--- /dev/null
+++ b/samples/client/petstore/perl/t/DogTest.t
@@ -0,0 +1,17 @@
+# NOTE: This class is auto generated by the Swagger Codegen
+# Please update the test case below to test the model.
+
+use Test::More tests => 2;
+use Test::Exception;
+
+use lib 'lib';
+use strict;
+use warnings;
+
+
+use_ok('WWW::SwaggerClient::Object::Dog');
+
+my $instance = WWW::SwaggerClient::Object::Dog->new();
+
+isa_ok($instance, 'WWW::SwaggerClient::Object::Dog');
+
diff --git a/samples/client/petstore/php/SwaggerClient-php/petstore b/samples/client/petstore/php/SwaggerClient-php/petstore
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/samples/client/petstore/ruby/lib/petstore/models/animal.rb b/samples/client/petstore/ruby/lib/petstore/models/animal.rb
new file mode 100644
index 000000000000..cf5fa7c1c948
--- /dev/null
+++ b/samples/client/petstore/ruby/lib/petstore/models/animal.rb
@@ -0,0 +1,165 @@
+=begin
+Swagger Petstore
+
+This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters
+
+OpenAPI spec version: 1.0.0
+Contact: apiteam@swagger.io
+Generated by: https://github.com/swagger-api/swagger-codegen.git
+
+License: Apache 2.0
+http://www.apache.org/licenses/LICENSE-2.0.html
+
+Terms of Service: http://swagger.io/terms/
+
+=end
+
+require 'date'
+
+module Petstore
+ class Animal
+ attr_accessor :class_name
+
+ # Attribute mapping from ruby-style variable name to JSON key.
+ def self.attribute_map
+ {
+
+ :'class_name' => :'className'
+
+ }
+ end
+
+ # Attribute type mapping.
+ def self.swagger_types
+ {
+ :'class_name' => :'String'
+
+ }
+ end
+
+ def initialize(attributes = {})
+ return unless attributes.is_a?(Hash)
+
+ # convert string to symbol for hash key
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
+
+
+ if attributes[:'className']
+ self.class_name = attributes[:'className']
+ end
+
+ end
+
+ # Check equality by comparing each attribute.
+ def ==(o)
+ return true if self.equal?(o)
+ self.class == o.class &&
+ class_name == o.class_name
+ end
+
+ # @see the `==` method
+ def eql?(o)
+ self == o
+ end
+
+ # Calculate hash code according to all attributes.
+ def hash
+ [class_name].hash
+ end
+
+ # build the object from hash
+ def build_from_hash(attributes)
+ return nil unless attributes.is_a?(Hash)
+ self.class.swagger_types.each_pair do |key, type|
+ if type =~ /^Array<(.*)>/i
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
+ else
+ #TODO show warning in debug mode
+ end
+ elsif !attributes[self.class.attribute_map[key]].nil?
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
+ else
+ # data not found in attributes(hash), not an issue as the data can be optional
+ end
+ end
+
+ self
+ end
+
+ def _deserialize(type, value)
+ case type.to_sym
+ when :DateTime
+ DateTime.parse(value)
+ when :Date
+ Date.parse(value)
+ when :String
+ value.to_s
+ when :Integer
+ value.to_i
+ when :Float
+ value.to_f
+ when :BOOLEAN
+ if value.to_s =~ /^(true|t|yes|y|1)$/i
+ true
+ else
+ false
+ end
+ when :Object
+ # generic object (usually a Hash), return directly
+ value
+ when /\AArray<(?.+)>\z/
+ inner_type = Regexp.last_match[:inner_type]
+ value.map { |v| _deserialize(inner_type, v) }
+ when /\AHash<(?.+), (?.+)>\z/
+ k_type = Regexp.last_match[:k_type]
+ v_type = Regexp.last_match[:v_type]
+ {}.tap do |hash|
+ value.each do |k, v|
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
+ end
+ end
+ else # model
+ _model = Petstore.const_get(type).new
+ _model.build_from_hash(value)
+ end
+ end
+
+ def to_s
+ to_hash.to_s
+ end
+
+ # to_body is an alias to to_body (backward compatibility))
+ def to_body
+ to_hash
+ end
+
+ # return the object in the form of hash
+ def to_hash
+ hash = {}
+ self.class.attribute_map.each_pair do |attr, param|
+ value = self.send(attr)
+ next if value.nil?
+ hash[param] = _to_hash(value)
+ end
+ hash
+ end
+
+ # Method to output non-array value in the form of hash
+ # For object, use to_hash. Otherwise, just return the value
+ def _to_hash(value)
+ if value.is_a?(Array)
+ value.compact.map{ |v| _to_hash(v) }
+ elsif value.is_a?(Hash)
+ {}.tap do |hash|
+ value.each { |k, v| hash[k] = _to_hash(v) }
+ end
+ elsif value.respond_to? :to_hash
+ value.to_hash
+ else
+ value
+ end
+ end
+
+ end
+end
diff --git a/samples/client/petstore/ruby/lib/petstore/models/cat.rb b/samples/client/petstore/ruby/lib/petstore/models/cat.rb
new file mode 100644
index 000000000000..db40e8eab2c4
--- /dev/null
+++ b/samples/client/petstore/ruby/lib/petstore/models/cat.rb
@@ -0,0 +1,175 @@
+=begin
+Swagger Petstore
+
+This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters
+
+OpenAPI spec version: 1.0.0
+Contact: apiteam@swagger.io
+Generated by: https://github.com/swagger-api/swagger-codegen.git
+
+License: Apache 2.0
+http://www.apache.org/licenses/LICENSE-2.0.html
+
+Terms of Service: http://swagger.io/terms/
+
+=end
+
+require 'date'
+
+module Petstore
+ class Cat
+ attr_accessor :class_name
+
+ attr_accessor :declawed
+
+ # Attribute mapping from ruby-style variable name to JSON key.
+ def self.attribute_map
+ {
+
+ :'class_name' => :'className',
+
+ :'declawed' => :'declawed'
+
+ }
+ end
+
+ # Attribute type mapping.
+ def self.swagger_types
+ {
+ :'class_name' => :'String',
+ :'declawed' => :'BOOLEAN'
+
+ }
+ end
+
+ def initialize(attributes = {})
+ return unless attributes.is_a?(Hash)
+
+ # convert string to symbol for hash key
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
+
+
+ if attributes[:'className']
+ self.class_name = attributes[:'className']
+ end
+
+ if attributes[:'declawed']
+ self.declawed = attributes[:'declawed']
+ end
+
+ end
+
+ # Check equality by comparing each attribute.
+ def ==(o)
+ return true if self.equal?(o)
+ self.class == o.class &&
+ class_name == o.class_name &&
+ declawed == o.declawed
+ end
+
+ # @see the `==` method
+ def eql?(o)
+ self == o
+ end
+
+ # Calculate hash code according to all attributes.
+ def hash
+ [class_name, declawed].hash
+ end
+
+ # build the object from hash
+ def build_from_hash(attributes)
+ return nil unless attributes.is_a?(Hash)
+ self.class.swagger_types.each_pair do |key, type|
+ if type =~ /^Array<(.*)>/i
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
+ else
+ #TODO show warning in debug mode
+ end
+ elsif !attributes[self.class.attribute_map[key]].nil?
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
+ else
+ # data not found in attributes(hash), not an issue as the data can be optional
+ end
+ end
+
+ self
+ end
+
+ def _deserialize(type, value)
+ case type.to_sym
+ when :DateTime
+ DateTime.parse(value)
+ when :Date
+ Date.parse(value)
+ when :String
+ value.to_s
+ when :Integer
+ value.to_i
+ when :Float
+ value.to_f
+ when :BOOLEAN
+ if value.to_s =~ /^(true|t|yes|y|1)$/i
+ true
+ else
+ false
+ end
+ when :Object
+ # generic object (usually a Hash), return directly
+ value
+ when /\AArray<(?.+)>\z/
+ inner_type = Regexp.last_match[:inner_type]
+ value.map { |v| _deserialize(inner_type, v) }
+ when /\AHash<(?.+), (?.+)>\z/
+ k_type = Regexp.last_match[:k_type]
+ v_type = Regexp.last_match[:v_type]
+ {}.tap do |hash|
+ value.each do |k, v|
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
+ end
+ end
+ else # model
+ _model = Petstore.const_get(type).new
+ _model.build_from_hash(value)
+ end
+ end
+
+ def to_s
+ to_hash.to_s
+ end
+
+ # to_body is an alias to to_body (backward compatibility))
+ def to_body
+ to_hash
+ end
+
+ # return the object in the form of hash
+ def to_hash
+ hash = {}
+ self.class.attribute_map.each_pair do |attr, param|
+ value = self.send(attr)
+ next if value.nil?
+ hash[param] = _to_hash(value)
+ end
+ hash
+ end
+
+ # Method to output non-array value in the form of hash
+ # For object, use to_hash. Otherwise, just return the value
+ def _to_hash(value)
+ if value.is_a?(Array)
+ value.compact.map{ |v| _to_hash(v) }
+ elsif value.is_a?(Hash)
+ {}.tap do |hash|
+ value.each { |k, v| hash[k] = _to_hash(v) }
+ end
+ elsif value.respond_to? :to_hash
+ value.to_hash
+ else
+ value
+ end
+ end
+
+ end
+end
diff --git a/samples/client/petstore/ruby/lib/petstore/models/dog.rb b/samples/client/petstore/ruby/lib/petstore/models/dog.rb
new file mode 100644
index 000000000000..a7f19f2b9135
--- /dev/null
+++ b/samples/client/petstore/ruby/lib/petstore/models/dog.rb
@@ -0,0 +1,175 @@
+=begin
+Swagger Petstore
+
+This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters
+
+OpenAPI spec version: 1.0.0
+Contact: apiteam@swagger.io
+Generated by: https://github.com/swagger-api/swagger-codegen.git
+
+License: Apache 2.0
+http://www.apache.org/licenses/LICENSE-2.0.html
+
+Terms of Service: http://swagger.io/terms/
+
+=end
+
+require 'date'
+
+module Petstore
+ class Dog
+ attr_accessor :class_name
+
+ attr_accessor :breed
+
+ # Attribute mapping from ruby-style variable name to JSON key.
+ def self.attribute_map
+ {
+
+ :'class_name' => :'className',
+
+ :'breed' => :'breed'
+
+ }
+ end
+
+ # Attribute type mapping.
+ def self.swagger_types
+ {
+ :'class_name' => :'String',
+ :'breed' => :'String'
+
+ }
+ end
+
+ def initialize(attributes = {})
+ return unless attributes.is_a?(Hash)
+
+ # convert string to symbol for hash key
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
+
+
+ if attributes[:'className']
+ self.class_name = attributes[:'className']
+ end
+
+ if attributes[:'breed']
+ self.breed = attributes[:'breed']
+ end
+
+ end
+
+ # Check equality by comparing each attribute.
+ def ==(o)
+ return true if self.equal?(o)
+ self.class == o.class &&
+ class_name == o.class_name &&
+ breed == o.breed
+ end
+
+ # @see the `==` method
+ def eql?(o)
+ self == o
+ end
+
+ # Calculate hash code according to all attributes.
+ def hash
+ [class_name, breed].hash
+ end
+
+ # build the object from hash
+ def build_from_hash(attributes)
+ return nil unless attributes.is_a?(Hash)
+ self.class.swagger_types.each_pair do |key, type|
+ if type =~ /^Array<(.*)>/i
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
+ else
+ #TODO show warning in debug mode
+ end
+ elsif !attributes[self.class.attribute_map[key]].nil?
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
+ else
+ # data not found in attributes(hash), not an issue as the data can be optional
+ end
+ end
+
+ self
+ end
+
+ def _deserialize(type, value)
+ case type.to_sym
+ when :DateTime
+ DateTime.parse(value)
+ when :Date
+ Date.parse(value)
+ when :String
+ value.to_s
+ when :Integer
+ value.to_i
+ when :Float
+ value.to_f
+ when :BOOLEAN
+ if value.to_s =~ /^(true|t|yes|y|1)$/i
+ true
+ else
+ false
+ end
+ when :Object
+ # generic object (usually a Hash), return directly
+ value
+ when /\AArray<(?.+)>\z/
+ inner_type = Regexp.last_match[:inner_type]
+ value.map { |v| _deserialize(inner_type, v) }
+ when /\AHash<(?.+), (?.+)>\z/
+ k_type = Regexp.last_match[:k_type]
+ v_type = Regexp.last_match[:v_type]
+ {}.tap do |hash|
+ value.each do |k, v|
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
+ end
+ end
+ else # model
+ _model = Petstore.const_get(type).new
+ _model.build_from_hash(value)
+ end
+ end
+
+ def to_s
+ to_hash.to_s
+ end
+
+ # to_body is an alias to to_body (backward compatibility))
+ def to_body
+ to_hash
+ end
+
+ # return the object in the form of hash
+ def to_hash
+ hash = {}
+ self.class.attribute_map.each_pair do |attr, param|
+ value = self.send(attr)
+ next if value.nil?
+ hash[param] = _to_hash(value)
+ end
+ hash
+ end
+
+ # Method to output non-array value in the form of hash
+ # For object, use to_hash. Otherwise, just return the value
+ def _to_hash(value)
+ if value.is_a?(Array)
+ value.compact.map{ |v| _to_hash(v) }
+ elsif value.is_a?(Hash)
+ {}.tap do |hash|
+ value.each { |k, v| hash[k] = _to_hash(v) }
+ end
+ elsif value.respond_to? :to_hash
+ value.to_hash
+ else
+ value
+ end
+ end
+
+ end
+end
diff --git a/samples/client/petstore/ruby/spec/models/animal_spec.rb b/samples/client/petstore/ruby/spec/models/animal_spec.rb
new file mode 100644
index 000000000000..ddbfeca85f90
--- /dev/null
+++ b/samples/client/petstore/ruby/spec/models/animal_spec.rb
@@ -0,0 +1,50 @@
+=begin
+Swagger Petstore
+
+This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters
+
+OpenAPI spec version: 1.0.0
+Contact: apiteam@swagger.io
+Generated by: https://github.com/swagger-api/swagger-codegen.git
+
+License: Apache 2.0
+http://www.apache.org/licenses/LICENSE-2.0.html
+
+Terms of Service: http://swagger.io/terms/
+
+=end
+
+require 'spec_helper'
+require 'json'
+require 'date'
+
+# Unit tests for Petstore::Animal
+# Automatically generated by swagger-codegen (github.com/swagger-api/swagger-codegen)
+# Please update as you see appropriate
+describe 'Animal' do
+ before do
+ # run before each test
+ @instance = Petstore::Animal.new
+ end
+
+ after do
+ # run after each test
+ end
+
+ describe 'test an instance of Animal' do
+ it 'should create an instact of Animal' do
+ @instance.should be_a(Petstore::Animal)
+ end
+ end
+ describe 'test attribute "class_name"' do
+ it 'should work' do
+ # assertion here
+ # should be_a()
+ # should be_nil
+ # should ==
+ # should_not ==
+ end
+ end
+
+end
+
diff --git a/samples/client/petstore/ruby/spec/models/cat_spec.rb b/samples/client/petstore/ruby/spec/models/cat_spec.rb
new file mode 100644
index 000000000000..220a37dfebe0
--- /dev/null
+++ b/samples/client/petstore/ruby/spec/models/cat_spec.rb
@@ -0,0 +1,60 @@
+=begin
+Swagger Petstore
+
+This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters
+
+OpenAPI spec version: 1.0.0
+Contact: apiteam@swagger.io
+Generated by: https://github.com/swagger-api/swagger-codegen.git
+
+License: Apache 2.0
+http://www.apache.org/licenses/LICENSE-2.0.html
+
+Terms of Service: http://swagger.io/terms/
+
+=end
+
+require 'spec_helper'
+require 'json'
+require 'date'
+
+# Unit tests for Petstore::Cat
+# Automatically generated by swagger-codegen (github.com/swagger-api/swagger-codegen)
+# Please update as you see appropriate
+describe 'Cat' do
+ before do
+ # run before each test
+ @instance = Petstore::Cat.new
+ end
+
+ after do
+ # run after each test
+ end
+
+ describe 'test an instance of Cat' do
+ it 'should create an instact of Cat' do
+ @instance.should be_a(Petstore::Cat)
+ end
+ end
+ describe 'test attribute "class_name"' do
+ it 'should work' do
+ # assertion here
+ # should be_a()
+ # should be_nil
+ # should ==
+ # should_not ==
+ end
+ end
+
+ describe 'test attribute "declawed"' do
+ it 'should work' do
+ # assertion here
+ # should be_a()
+ # should be_nil
+ # should ==
+ # should_not ==
+ end
+ end
+
+end
+
diff --git a/samples/client/petstore/ruby/spec/models/dog_spec.rb b/samples/client/petstore/ruby/spec/models/dog_spec.rb
new file mode 100644
index 000000000000..23b1b9a83f7a
--- /dev/null
+++ b/samples/client/petstore/ruby/spec/models/dog_spec.rb
@@ -0,0 +1,60 @@
+=begin
+Swagger Petstore
+
+This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters
+
+OpenAPI spec version: 1.0.0
+Contact: apiteam@swagger.io
+Generated by: https://github.com/swagger-api/swagger-codegen.git
+
+License: Apache 2.0
+http://www.apache.org/licenses/LICENSE-2.0.html
+
+Terms of Service: http://swagger.io/terms/
+
+=end
+
+require 'spec_helper'
+require 'json'
+require 'date'
+
+# Unit tests for Petstore::Dog
+# Automatically generated by swagger-codegen (github.com/swagger-api/swagger-codegen)
+# Please update as you see appropriate
+describe 'Dog' do
+ before do
+ # run before each test
+ @instance = Petstore::Dog.new
+ end
+
+ after do
+ # run after each test
+ end
+
+ describe 'test an instance of Dog' do
+ it 'should create an instact of Dog' do
+ @instance.should be_a(Petstore::Dog)
+ end
+ end
+ describe 'test attribute "class_name"' do
+ it 'should work' do
+ # assertion here
+ # should be_a()
+ # should be_nil
+ # should ==
+ # should_not ==
+ end
+ end
+
+ describe 'test attribute "breed"' do
+ it 'should work' do
+ # assertion here
+ # should be_a()
+ # should be_nil
+ # should ==
+ # should_not ==
+ end
+ end
+
+end
+