forked from loafle/openapi-generator-original
more flexible perl module naming
- No more presuming 'WWW::' is at the beginning (default is now "WWW::SwaggerClient" vs "SwaggerClient" in order to accomodate) - Test that module names Like::This write to the filesystem and in the mustache templates properly
This commit is contained in:
parent
54a8ebd7d8
commit
99842f646f
2
.gitignore
vendored
2
.gitignore
vendored
@ -55,6 +55,8 @@ samples/client/petstore/php/SwaggerClient-php/vendor/
|
|||||||
samples/client/petstore/silex/SwaggerServer/composer.lock
|
samples/client/petstore/silex/SwaggerServer/composer.lock
|
||||||
samples/client/petstore/silex/SwaggerServer/venodr/
|
samples/client/petstore/silex/SwaggerServer/venodr/
|
||||||
|
|
||||||
|
samples/client/petstore/perl/deep_module_test/
|
||||||
|
|
||||||
samples/client/petstore/python/.projectile
|
samples/client/petstore/python/.projectile
|
||||||
samples/client/petstore/python/.venv/
|
samples/client/petstore/python/.venv/
|
||||||
|
|
||||||
|
@ -26,6 +26,9 @@ fi
|
|||||||
|
|
||||||
# if you've executed sbt assembly previously it will use that instead.
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
|
# complex module name used for testing
|
||||||
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l perl -o samples/client/petstore/perl"
|
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l perl -o samples/client/petstore/perl"
|
||||||
|
|
||||||
java $JAVA_OPTS -jar $executable $ags
|
java $JAVA_OPTS -jar $executable $ags
|
||||||
|
|
||||||
|
java $JAVA_OPTS -jar $executable $ags --additional-properties moduleName=Something::Deep -o samples/client/petstore/perl/deep_module_test
|
||||||
|
@ -20,7 +20,8 @@ import org.apache.commons.lang.StringUtils;
|
|||||||
public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
public static final String MODULE_NAME = "moduleName";
|
public static final String MODULE_NAME = "moduleName";
|
||||||
public static final String MODULE_VERSION = "moduleVersion";
|
public static final String MODULE_VERSION = "moduleVersion";
|
||||||
protected String moduleName = "SwaggerClient";
|
protected String moduleName = "WWW::SwaggerClient";
|
||||||
|
protected String modulePathPart = moduleName.replaceAll("::",String.valueOf(File.separatorChar));
|
||||||
protected String moduleVersion = "1.0.0";
|
protected String moduleVersion = "1.0.0";
|
||||||
|
|
||||||
public PerlClientCodegen() {
|
public PerlClientCodegen() {
|
||||||
@ -72,7 +73,7 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
typeMapping.put("object", "object");
|
typeMapping.put("object", "object");
|
||||||
|
|
||||||
cliOptions.clear();
|
cliOptions.clear();
|
||||||
cliOptions.add(new CliOption(MODULE_NAME, "Perl module name (convention: CamelCase).").defaultValue("SwaggerClient"));
|
cliOptions.add(new CliOption(MODULE_NAME, "Perl module name (convention: CamelCase or Long::Module).").defaultValue("SwaggerClient"));
|
||||||
cliOptions.add(new CliOption(MODULE_VERSION, "Perl module version.").defaultValue("1.0.0"));
|
cliOptions.add(new CliOption(MODULE_VERSION, "Perl module version.").defaultValue("1.0.0"));
|
||||||
cliOptions.add(CliOption.newBoolean(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
|
cliOptions.add(CliOption.newBoolean(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
|
||||||
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC).defaultValue(Boolean.TRUE.toString()));
|
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC).defaultValue(Boolean.TRUE.toString()));
|
||||||
@ -94,15 +95,16 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
if (additionalProperties.containsKey(MODULE_NAME)) {
|
if (additionalProperties.containsKey(MODULE_NAME)) {
|
||||||
setModuleName((String) additionalProperties.get(MODULE_NAME));
|
setModuleName((String) additionalProperties.get(MODULE_NAME));
|
||||||
|
setModulePathPart(moduleName.replaceAll("::",String.valueOf(File.separatorChar)));
|
||||||
} else {
|
} else {
|
||||||
additionalProperties.put(MODULE_NAME, moduleName);
|
additionalProperties.put(MODULE_NAME, moduleName);
|
||||||
}
|
}
|
||||||
|
|
||||||
supportingFiles.add(new SupportingFile("ApiClient.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "ApiClient.pm"));
|
supportingFiles.add(new SupportingFile("ApiClient.mustache", ("lib/" + modulePathPart).replace('/', File.separatorChar), "ApiClient.pm"));
|
||||||
supportingFiles.add(new SupportingFile("Configuration.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "Configuration.pm"));
|
supportingFiles.add(new SupportingFile("Configuration.mustache", ("lib/" + modulePathPart).replace('/', File.separatorChar), "Configuration.pm"));
|
||||||
supportingFiles.add(new SupportingFile("ApiFactory.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "ApiFactory.pm"));
|
supportingFiles.add(new SupportingFile("ApiFactory.mustache", ("lib/" + modulePathPart).replace('/', File.separatorChar), "ApiFactory.pm"));
|
||||||
supportingFiles.add(new SupportingFile("Role.mustache", ("lib/WWW/" + moduleName).replace('/', File.separatorChar), "Role.pm"));
|
supportingFiles.add(new SupportingFile("Role.mustache", ("lib/" + modulePathPart).replace('/', File.separatorChar), "Role.pm"));
|
||||||
supportingFiles.add(new SupportingFile("AutoDoc.mustache", ("lib/WWW/" + moduleName + "/Role").replace('/', File.separatorChar), "AutoDoc.pm"));
|
supportingFiles.add(new SupportingFile("AutoDoc.mustache", ("lib/" + modulePathPart + "/Role").replace('/', File.separatorChar), "AutoDoc.pm"));
|
||||||
supportingFiles.add(new SupportingFile("autodoc.script.mustache", "bin", "autodoc"));
|
supportingFiles.add(new SupportingFile("autodoc.script.mustache", "bin", "autodoc"));
|
||||||
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
}
|
}
|
||||||
@ -129,12 +131,12 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String apiFileFolder() {
|
public String apiFileFolder() {
|
||||||
return (outputFolder + "/lib/WWW/" + moduleName + apiPackage()).replace('/', File.separatorChar);
|
return (outputFolder + "/lib/" + modulePathPart + apiPackage()).replace('/', File.separatorChar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String modelFileFolder() {
|
public String modelFileFolder() {
|
||||||
return (outputFolder + "/lib/WWW/" + moduleName + modelPackage()).replace('/', File.separatorChar);
|
return (outputFolder + "/lib/" + modulePathPart + modelPackage()).replace('/', File.separatorChar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -251,6 +253,10 @@ public class PerlClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
this.moduleName = moduleName;
|
this.moduleName = moduleName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setModulePathPart(String modulePathPart) {
|
||||||
|
this.modulePathPart = modulePathPart;
|
||||||
|
}
|
||||||
|
|
||||||
public void setModuleVersion(String moduleVersion) {
|
public void setModuleVersion(String moduleVersion) {
|
||||||
this.moduleVersion = moduleVersion;
|
this.moduleVersion = moduleVersion;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package WWW::{{moduleName}}::ApiClient;
|
package {{moduleName}}::ApiClient;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
@ -18,7 +18,7 @@ use Log::Any qw($log);
|
|||||||
use Carp;
|
use Carp;
|
||||||
use Module::Runtime qw(use_module);
|
use Module::Runtime qw(use_module);
|
||||||
|
|
||||||
use WWW::{{moduleName}}::Configuration;
|
use {{moduleName}}::Configuration;
|
||||||
|
|
||||||
use base 'Class::Singleton';
|
use base 'Class::Singleton';
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ sub _new_instance
|
|||||||
return bless \%args, $class;
|
return bless \%args, $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub _cfg {'WWW::{{moduleName}}::Configuration'}
|
sub _cfg {'{{moduleName}}::Configuration'}
|
||||||
|
|
||||||
# Set the user agent of the API client
|
# Set the user agent of the API client
|
||||||
#
|
#
|
||||||
@ -119,8 +119,8 @@ sub call_api {
|
|||||||
else {
|
else {
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->{ua}->timeout($self->{http_timeout} || $WWW::{{moduleName}}::Configuration::http_timeout);
|
$self->{ua}->timeout($self->{http_timeout} || ${{moduleName}}::Configuration::http_timeout);
|
||||||
$self->{ua}->agent($self->{http_user_agent} || $WWW::{{moduleName}}::Configuration::http_user_agent);
|
$self->{ua}->agent($self->{http_user_agent} || ${{moduleName}}::Configuration::http_user_agent);
|
||||||
|
|
||||||
$log->debugf("REQUEST: %s", $_request->as_string);
|
$log->debugf("REQUEST: %s", $_request->as_string);
|
||||||
my $_response = $self->{ua}->request($_request);
|
my $_response = $self->{ua}->request($_request);
|
||||||
@ -243,7 +243,7 @@ sub deserialize
|
|||||||
} elsif (grep /^$class$/, ('string', 'int', 'float', 'bool', 'object')) {
|
} elsif (grep /^$class$/, ('string', 'int', 'float', 'bool', 'object')) {
|
||||||
return $data;
|
return $data;
|
||||||
} else { # model
|
} else { # model
|
||||||
my $_instance = use_module("WWW::{{moduleName}}::Object::$class")->new;
|
my $_instance = use_module("{{moduleName}}::Object::$class")->new;
|
||||||
if (ref $data eq "HASH") {
|
if (ref $data eq "HASH") {
|
||||||
return $_instance->from_hash($data);
|
return $_instance->from_hash($data);
|
||||||
} else { # string, need to json decode first
|
} else { # string, need to json decode first
|
||||||
@ -294,11 +294,11 @@ sub get_api_key_with_prefix
|
|||||||
{
|
{
|
||||||
my ($self, $key_name) = @_;
|
my ($self, $key_name) = @_;
|
||||||
|
|
||||||
my $api_key = $WWW::{{moduleName}}::Configuration::api_key->{$key_name};
|
my $api_key = ${{moduleName}}::Configuration::api_key->{$key_name};
|
||||||
|
|
||||||
return unless $api_key;
|
return unless $api_key;
|
||||||
|
|
||||||
my $prefix = $WWW::{{moduleName}}::Configuration::api_key_prefix->{$key_name};
|
my $prefix = ${{moduleName}}::Configuration::api_key_prefix->{$key_name};
|
||||||
return $prefix ? "$prefix $api_key" : $api_key;
|
return $prefix ? "$prefix $api_key" : $api_key;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,11 +329,11 @@ sub update_params_for_auth {
|
|||||||
if ($api_key) {
|
if ($api_key) {
|
||||||
$query_params->{'{{keyParamName}}'} = $api_key;
|
$query_params->{'{{keyParamName}}'} = $api_key;
|
||||||
}{{/isKeyInQuery}}{{/isApiKey}}{{#isBasic}}
|
}{{/isKeyInQuery}}{{/isApiKey}}{{#isBasic}}
|
||||||
if ($WWW::{{moduleName}}::Configuration::username || $WWW::{{moduleName}}::Configuration::password) {
|
if (${{moduleName}}::Configuration::username || ${{moduleName}}::Configuration::password) {
|
||||||
$header_params->{'Authorization'} = 'Basic ' . encode_base64($WWW::{{moduleName}}::Configuration::username . ":" . $WWW::{{moduleName}}::Configuration::password);
|
$header_params->{'Authorization'} = 'Basic ' . encode_base64(${{moduleName}}::Configuration::username . ":" . ${{moduleName}}::Configuration::password);
|
||||||
}{{/isBasic}}{{#isOAuth}}
|
}{{/isBasic}}{{#isOAuth}}
|
||||||
if ($WWW::{{moduleName}}::Configuration::access_token) {
|
if (${{moduleName}}::Configuration::access_token) {
|
||||||
$header_params->{'Authorization'} = 'Bearer ' . $WWW::{{moduleName}}::Configuration::access_token;
|
$header_params->{'Authorization'} = 'Bearer ' . ${{moduleName}}::Configuration::access_token;
|
||||||
}{{/isOAuth}}
|
}{{/isOAuth}}
|
||||||
}
|
}
|
||||||
{{/authMethods}}
|
{{/authMethods}}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package WWW::{{moduleName}}::ApiFactory;
|
package {{moduleName}}::ApiFactory;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
@ -7,26 +7,26 @@ use utf8;
|
|||||||
use Carp;
|
use Carp;
|
||||||
use Module::Find;
|
use Module::Find;
|
||||||
|
|
||||||
usesub WWW::{{moduleName}}::Object;
|
usesub {{moduleName}}::Object;
|
||||||
|
|
||||||
use WWW::{{moduleName}}::ApiClient;
|
use {{moduleName}}::ApiClient;
|
||||||
|
|
||||||
=head1 Name
|
=head1 Name
|
||||||
|
|
||||||
WWW::{{moduleName}}::ApiFactory - constructs APIs to retrieve {{moduleName}} objects
|
{{moduleName}}::ApiFactory - constructs APIs to retrieve {{moduleName}} objects
|
||||||
|
|
||||||
=head1 Synopsis
|
=head1 Synopsis
|
||||||
|
|
||||||
package My::Petstore::App;
|
package My::Petstore::App;
|
||||||
|
|
||||||
use WWW::{{moduleName}}::ApiFactory;
|
use {{moduleName}}::ApiFactory;
|
||||||
|
|
||||||
my $api_factory = WWW::{{moduleName}}::ApiFactory->new( ... ); # any args for ApiClient constructor
|
my $api_factory = {{moduleName}}::ApiFactory->new( ... ); # any args for ApiClient constructor
|
||||||
|
|
||||||
# later...
|
# later...
|
||||||
my $pet_api = $api_factory->get_api('Pet');
|
my $pet_api = $api_factory->get_api('Pet');
|
||||||
|
|
||||||
# $pet_api isa WWW::{{moduleName}}::PetApi
|
# $pet_api isa {{moduleName}}::PetApi
|
||||||
|
|
||||||
my $pet = $pet_api->get_pet_by_id(pet_id => $pet_id);
|
my $pet = $pet_api->get_pet_by_id(pet_id => $pet_id);
|
||||||
|
|
||||||
@ -39,9 +39,9 @@ use WWW::{{moduleName}}::ApiClient;
|
|||||||
=cut
|
=cut
|
||||||
|
|
||||||
# Load all the API classes and construct a lookup table at startup time
|
# Load all the API classes and construct a lookup table at startup time
|
||||||
my %_apis = map { $_ =~ /^WWW::{{moduleName}}::(.*)$/; $1 => $_ }
|
my %_apis = map { $_ =~ /^{{moduleName}}::(.*)$/; $1 => $_ }
|
||||||
grep {$_ =~ /Api$/}
|
grep {$_ =~ /Api$/}
|
||||||
usesub 'WWW::{{moduleName}}';
|
usesub '{{moduleName}}';
|
||||||
|
|
||||||
=head1 new()
|
=head1 new()
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ my %_apis = map { $_ =~ /^WWW::{{moduleName}}::(.*)$/; $1 => $_ }
|
|||||||
|
|
||||||
sub new {
|
sub new {
|
||||||
my ($class, %p) = (shift, @_);
|
my ($class, %p) = (shift, @_);
|
||||||
$p{api_client} = WWW::{{moduleName}}::ApiClient->instance(%p);
|
$p{api_client} = {{moduleName}}::ApiClient->instance(%p);
|
||||||
return bless \%p, $class;
|
return bless \%p, $class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ sub new {
|
|||||||
|
|
||||||
$which is a nickname for the class:
|
$which is a nickname for the class:
|
||||||
|
|
||||||
WWW::FooBarClient::BazApi has nickname 'Baz'
|
FooBarClient::BazApi has nickname 'Baz'
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package WWW::{{moduleName}}::Role::AutoDoc;
|
package {{moduleName}}::Role::AutoDoc;
|
||||||
use List::MoreUtils qw(uniq);
|
use List::MoreUtils qw(uniq);
|
||||||
|
|
||||||
use Moose::Role;
|
use Moose::Role;
|
||||||
@ -40,7 +40,7 @@ sub _printisa {
|
|||||||
|
|
||||||
foreach my $role (@roles) {
|
foreach my $role (@roles) {
|
||||||
$rolepkg = $role->{package} || next; # some are anonymous, or something
|
$rolepkg = $role->{package} || next; # some are anonymous, or something
|
||||||
next if $rolepkg eq 'WWW::{{moduleName}}::Role::AutoDoc';
|
next if $rolepkg eq '{{moduleName}}::Role::AutoDoc';
|
||||||
$role_reqs = join ', ', keys %{$role->{required_methods}};
|
$role_reqs = join ', ', keys %{$role->{required_methods}};
|
||||||
$role_reqs ||= '';
|
$role_reqs ||= '';
|
||||||
$~ = $how eq 'pod' ? 'ROLES_POD' : 'ROLES';
|
$~ = $how eq 'pod' ? 'ROLES_POD' : 'ROLES';
|
||||||
@ -424,4 +424,4 @@ $attrname
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -68,7 +68,7 @@ sub _deserialize {
|
|||||||
} elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) {
|
} elsif ( grep( /^$type$/, ('int', 'double', 'string', 'boolean'))) {
|
||||||
return $data;
|
return $data;
|
||||||
} else { # hash(model)
|
} else { # hash(model)
|
||||||
my $_instance = eval "WWW::{{moduleName}}::Object::$type->new()";
|
my $_instance = eval "{{moduleName}}::Object::$type->new()";
|
||||||
return $_instance->from_hash($data);
|
return $_instance->from_hash($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package WWW::{{moduleName}}::Configuration;
|
package {{moduleName}}::Configuration;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# NAME
|
# NAME
|
||||||
|
|
||||||
WWW::{{moduleName}}::Role - a Moose role for the {{appName}}
|
{{moduleName}}::Role - a Moose role for the {{appName}}
|
||||||
|
|
||||||
## {{appName}} version: {{appVersion}}
|
## {{appName}} version: {{appVersion}}
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ Automatically generated by the Perl Swagger Codegen project:
|
|||||||
## A note on Moose
|
## A note on Moose
|
||||||
|
|
||||||
This role is the only component of the library that uses Moose. See
|
This role is the only component of the library that uses Moose. See
|
||||||
WWW::{{moduleName}}::ApiFactory for non-Moosey usage.
|
{{moduleName}}::ApiFactory for non-Moosey usage.
|
||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ role.
|
|||||||
|
|
||||||
package MyApp;
|
package MyApp;
|
||||||
use Moose;
|
use Moose;
|
||||||
with 'WWW::{{moduleName}}::Role';
|
with '{{moduleName}}::Role';
|
||||||
|
|
||||||
package main;
|
package main;
|
||||||
|
|
||||||
@ -88,37 +88,37 @@ you are accessing. Usually `prefix` and `in` will be determined by the code gene
|
|||||||
the spec and you will not need to set them at run time. If not, `in` will
|
the spec and you will not need to set them at run time. If not, `in` will
|
||||||
default to 'head' and `prefix` to the empty string.
|
default to 'head' and `prefix` to the empty string.
|
||||||
|
|
||||||
The tokens will be placed in the `WWW::{{moduleName}}::Configuration` namespace
|
The tokens will be placed in the `{{moduleName}}::Configuration` namespace
|
||||||
as follows, but you don't need to know about this.
|
as follows, but you don't need to know about this.
|
||||||
|
|
||||||
- `$WWW::{{moduleName}}::Configuration::username`
|
- `${{moduleName}}::Configuration::username`
|
||||||
|
|
||||||
String. The username for basic auth.
|
String. The username for basic auth.
|
||||||
|
|
||||||
- `$WWW::{{moduleName}}::Configuration::password`
|
- `${{moduleName}}::Configuration::password`
|
||||||
|
|
||||||
String. The password for basic auth.
|
String. The password for basic auth.
|
||||||
|
|
||||||
- `$WWW::{{moduleName}}::Configuration::api_key`
|
- `${{moduleName}}::Configuration::api_key`
|
||||||
|
|
||||||
Hashref. Keyed on the name of each key (there can be multiple tokens).
|
Hashref. Keyed on the name of each key (there can be multiple tokens).
|
||||||
|
|
||||||
$WWW::{{moduleName}}::Configuration::api_key = {
|
${{moduleName}}::Configuration::api_key = {
|
||||||
secretKey => 'aaaabbbbccccdddd',
|
secretKey => 'aaaabbbbccccdddd',
|
||||||
anotherKey => '1111222233334444',
|
anotherKey => '1111222233334444',
|
||||||
};
|
};
|
||||||
|
|
||||||
- `$WWW::{{moduleName}}::Configuration::api_key_prefix`
|
- `${{moduleName}}::Configuration::api_key_prefix`
|
||||||
|
|
||||||
Hashref. Keyed on the name of each key (there can be multiple tokens). Note not
|
Hashref. Keyed on the name of each key (there can be multiple tokens). Note not
|
||||||
all api keys require a prefix.
|
all api keys require a prefix.
|
||||||
|
|
||||||
$WWW::{{moduleName}}::Configuration::api_key_prefix = {
|
${{moduleName}}::Configuration::api_key_prefix = {
|
||||||
secretKey => 'string',
|
secretKey => 'string',
|
||||||
anotherKey => 'same or some other string',
|
anotherKey => 'same or some other string',
|
||||||
};
|
};
|
||||||
|
|
||||||
- `$WWW::{{moduleName}}::Configuration::access_token`
|
- `${{moduleName}}::Configuration::access_token`
|
||||||
|
|
||||||
String. The OAuth access token.
|
String. The OAuth access token.
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ created yet) the current value of `base_url`.
|
|||||||
|
|
||||||
Returns an API factory object. You probably won't need to call this directly.
|
Returns an API factory object. You probably won't need to call this directly.
|
||||||
|
|
||||||
$self->api_factory('Pet'); # returns a WWW::{{moduleName}}::PetApi instance
|
$self->api_factory('Pet'); # returns a {{moduleName}}::PetApi instance
|
||||||
|
|
||||||
$self->pet_api; # the same
|
$self->pet_api; # the same
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ maven 3.0.3 or better already installed.
|
|||||||
|
|
||||||
The config file should specify the project name for the generated library:
|
The config file should specify the project name for the generated library:
|
||||||
|
|
||||||
{"moduleName":"MyProjectName"}
|
{"moduleName":"WWW::MyProjectName"}
|
||||||
|
|
||||||
Your library files will be built under `WWW::MyProjectName`.
|
Your library files will be built under `WWW::MyProjectName`.
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package WWW::{{moduleName}}::Role;
|
package {{moduleName}}::Role;
|
||||||
use utf8;
|
use utf8;
|
||||||
|
|
||||||
use Moose::Role;
|
use Moose::Role;
|
||||||
use namespace::autoclean;
|
use namespace::autoclean;
|
||||||
use Class::Inspector;
|
use Class::Inspector;
|
||||||
use Log::Any qw($log);
|
use Log::Any qw($log);
|
||||||
use WWW::{{moduleName}}::ApiFactory;
|
use {{moduleName}}::ApiFactory;
|
||||||
|
|
||||||
has base_url => ( is => 'ro',
|
has base_url => ( is => 'ro',
|
||||||
required => 0,
|
required => 0,
|
||||||
@ -14,7 +14,7 @@ has base_url => ( is => 'ro',
|
|||||||
);
|
);
|
||||||
|
|
||||||
has api_factory => ( is => 'ro',
|
has api_factory => ( is => 'ro',
|
||||||
isa => 'WWW::{{moduleName}}::ApiFactory',
|
isa => '{{moduleName}}::ApiFactory',
|
||||||
builder => '_build_af',
|
builder => '_build_af',
|
||||||
lazy => 1,
|
lazy => 1,
|
||||||
documentation => 'Builds an instance of the endpoint API class',
|
documentation => 'Builds an instance of the endpoint API class',
|
||||||
@ -29,7 +29,7 @@ has tokens => ( is => 'ro',
|
|||||||
|
|
||||||
has _cfg => ( is => 'ro',
|
has _cfg => ( is => 'ro',
|
||||||
isa => 'Str',
|
isa => 'Str',
|
||||||
default => 'WWW::{{moduleName}}::Configuration',
|
default => '{{moduleName}}::Configuration',
|
||||||
);
|
);
|
||||||
|
|
||||||
has version_info => ( is => 'ro',
|
has version_info => ( is => 'ro',
|
||||||
@ -88,12 +88,12 @@ sub _build_af {
|
|||||||
my $self = shift;
|
my $self = shift;
|
||||||
my %args;
|
my %args;
|
||||||
$args{base_url} = $self->base_url if $self->base_url;
|
$args{base_url} = $self->base_url if $self->base_url;
|
||||||
return WWW::{{moduleName}}::ApiFactory->new(%args);
|
return {{moduleName}}::ApiFactory->new(%args);
|
||||||
}
|
}
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
WWW::{{moduleName}}::Role - a Moose role for the {{appName}}
|
{{moduleName}}::Role - a Moose role for the {{appName}}
|
||||||
|
|
||||||
=head2 {{appName}} version: {{appVersion}}
|
=head2 {{appName}} version: {{appVersion}}
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ Automatically generated by the Perl Swagger Codegen project:
|
|||||||
=head2 A note on Moose
|
=head2 A note on Moose
|
||||||
|
|
||||||
This role is the only component of the library that uses Moose. See
|
This role is the only component of the library that uses Moose. See
|
||||||
WWW::{{moduleName}}::ApiFactory for non-Moosey usage.
|
{{moduleName}}::ApiFactory for non-Moosey usage.
|
||||||
|
|
||||||
=head1 SYNOPSIS
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ role.
|
|||||||
|
|
||||||
package MyApp;
|
package MyApp;
|
||||||
use Moose;
|
use Moose;
|
||||||
with 'WWW::{{moduleName}}::Role';
|
with '{{moduleName}}::Role';
|
||||||
|
|
||||||
package main;
|
package main;
|
||||||
|
|
||||||
@ -186,39 +186,39 @@ you are accessing. Usually C<prefix> and C<in> will be determined by the code ge
|
|||||||
the spec and you will not need to set them at run time. If not, C<in> will
|
the spec and you will not need to set them at run time. If not, C<in> will
|
||||||
default to 'head' and C<prefix> to the empty string.
|
default to 'head' and C<prefix> to the empty string.
|
||||||
|
|
||||||
The tokens will be placed in the C<WWW::{{moduleName}}::Configuration> namespace
|
The tokens will be placed in the C<{{moduleName}}::Configuration> namespace
|
||||||
as follows, but you don't need to know about this.
|
as follows, but you don't need to know about this.
|
||||||
|
|
||||||
=over 4
|
=over 4
|
||||||
|
|
||||||
=item C<$WWW::{{moduleName}}::Configuration::username>
|
=item C<${{moduleName}}::Configuration::username>
|
||||||
|
|
||||||
String. The username for basic auth.
|
String. The username for basic auth.
|
||||||
|
|
||||||
=item C<$WWW::{{moduleName}}::Configuration::password>
|
=item C<${{moduleName}}::Configuration::password>
|
||||||
|
|
||||||
String. The password for basic auth.
|
String. The password for basic auth.
|
||||||
|
|
||||||
=item C<$WWW::{{moduleName}}::Configuration::api_key>
|
=item C<${{moduleName}}::Configuration::api_key>
|
||||||
|
|
||||||
Hashref. Keyed on the name of each key (there can be multiple tokens).
|
Hashref. Keyed on the name of each key (there can be multiple tokens).
|
||||||
|
|
||||||
$WWW::{{moduleName}}::Configuration::api_key = {
|
${{moduleName}}::Configuration::api_key = {
|
||||||
secretKey => 'aaaabbbbccccdddd',
|
secretKey => 'aaaabbbbccccdddd',
|
||||||
anotherKey => '1111222233334444',
|
anotherKey => '1111222233334444',
|
||||||
};
|
};
|
||||||
|
|
||||||
=item C<$WWW::{{moduleName}}::Configuration::api_key_prefix>
|
=item C<${{moduleName}}::Configuration::api_key_prefix>
|
||||||
|
|
||||||
Hashref. Keyed on the name of each key (there can be multiple tokens). Note not
|
Hashref. Keyed on the name of each key (there can be multiple tokens). Note not
|
||||||
all api keys require a prefix.
|
all api keys require a prefix.
|
||||||
|
|
||||||
$WWW::{{moduleName}}::Configuration::api_key_prefix = {
|
${{moduleName}}::Configuration::api_key_prefix = {
|
||||||
secretKey => 'string',
|
secretKey => 'string',
|
||||||
anotherKey => 'same or some other string',
|
anotherKey => 'same or some other string',
|
||||||
};
|
};
|
||||||
|
|
||||||
=item C<$WWW::{{moduleName}}::Configuration::access_token>
|
=item C<${{moduleName}}::Configuration::access_token>
|
||||||
|
|
||||||
String. The OAuth access token.
|
String. The OAuth access token.
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ created yet) the current value of C<base_url>.
|
|||||||
|
|
||||||
Returns an API factory object. You probably won't need to call this directly.
|
Returns an API factory object. You probably won't need to call this directly.
|
||||||
|
|
||||||
$self->api_factory('Pet'); # returns a WWW::{{moduleName}}::PetApi instance
|
$self->api_factory('Pet'); # returns a {{moduleName}}::PetApi instance
|
||||||
|
|
||||||
$self->pet_api; # the same
|
$self->pet_api; # the same
|
||||||
|
|
||||||
@ -269,7 +269,7 @@ maven 3.0.3 or better already installed.
|
|||||||
|
|
||||||
The config file should specify the project name for the generated library:
|
The config file should specify the project name for the generated library:
|
||||||
|
|
||||||
{"moduleName":"MyProjectName"}
|
{"moduleName":"WWW::MyProjectName"}
|
||||||
|
|
||||||
Your library files will be built under C<WWW::MyProjectName>.
|
Your library files will be built under C<WWW::MyProjectName>.
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
# NOTE: This class is auto generated by the swagger code generator program.
|
# NOTE: This class is auto generated by the swagger code generator program.
|
||||||
# Do not edit the class manually.
|
# Do not edit the class manually.
|
||||||
#
|
#
|
||||||
package WWW::{{moduleName}}::{{classname}};
|
package {{moduleName}}::{{classname}};
|
||||||
|
|
||||||
require 5.6.0;
|
require 5.6.0;
|
||||||
use strict;
|
use strict;
|
||||||
@ -27,8 +27,8 @@ use Exporter;
|
|||||||
use Carp qw( croak );
|
use Carp qw( croak );
|
||||||
use Log::Any qw($log);
|
use Log::Any qw($log);
|
||||||
|
|
||||||
use WWW::{{moduleName}}::ApiClient;
|
use {{moduleName}}::ApiClient;
|
||||||
use WWW::{{moduleName}}::Configuration;
|
use {{moduleName}}::Configuration;
|
||||||
|
|
||||||
use base "Class::Data::Inheritable";
|
use base "Class::Data::Inheritable";
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ __PACKAGE__->mk_classdata('method_documentation' => {});
|
|||||||
sub new {
|
sub new {
|
||||||
my $class = shift;
|
my $class = shift;
|
||||||
my (%self) = (
|
my (%self) = (
|
||||||
'api_client' => WWW::{{moduleName}}::ApiClient->instance,
|
'api_client' => {{moduleName}}::ApiClient->instance,
|
||||||
@_
|
@_
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -15,14 +15,14 @@ my $my_app = $options{c} || 'My::App';
|
|||||||
if ($options{c}) {
|
if ($options{c}) {
|
||||||
eval <<LOAD;
|
eval <<LOAD;
|
||||||
use $my_app;
|
use $my_app;
|
||||||
apply_all_roles($my_app, "WWW::{{moduleName}}::Role::AutoDoc");
|
apply_all_roles($my_app, "{{moduleName}}::Role::AutoDoc");
|
||||||
LOAD
|
LOAD
|
||||||
die $@ if $@;
|
die $@ if $@;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
package My::App;
|
package My::App;
|
||||||
use Moose;
|
use Moose;
|
||||||
with ('WWW::{{moduleName}}::Role', 'WWW::{{moduleName}}::Role::AutoDoc');
|
with ('{{moduleName}}::Role', '{{moduleName}}::Role::AutoDoc');
|
||||||
}
|
}
|
||||||
|
|
||||||
package main;
|
package main;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{{#models}}
|
{{#models}}
|
||||||
{{#model}}
|
{{#model}}
|
||||||
package WWW::{{moduleName}}::Object::{{classname}};
|
package {{moduleName}}::Object::{{classname}};
|
||||||
|
|
||||||
require 5.6.0;
|
require 5.6.0;
|
||||||
use strict;
|
use strict;
|
||||||
|
@ -8,7 +8,7 @@ WWW::SwaggerClient::Role - a Moose role for the Swagger Petstore
|
|||||||
|
|
||||||
Automatically generated by the Perl Swagger Codegen project:
|
Automatically generated by the Perl Swagger Codegen project:
|
||||||
|
|
||||||
- Build date: 2015-12-29T16:27:28.775+08:00
|
- Build date: 2016-01-04T20:36:07.450-08:00
|
||||||
- Build package: class io.swagger.codegen.languages.PerlClientCodegen
|
- Build package: class io.swagger.codegen.languages.PerlClientCodegen
|
||||||
- Codegen version:
|
- Codegen version:
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ maven 3.0.3 or better already installed.
|
|||||||
|
|
||||||
The config file should specify the project name for the generated library:
|
The config file should specify the project name for the generated library:
|
||||||
|
|
||||||
{"moduleName":"MyProjectName"}
|
{"moduleName":"WWW::MyProjectName"}
|
||||||
|
|
||||||
Your library files will be built under `WWW::MyProjectName`.
|
Your library files will be built under `WWW::MyProjectName`.
|
||||||
|
|
||||||
|
@ -319,6 +319,12 @@ sub update_params_for_auth {
|
|||||||
if (!defined($auth)) {
|
if (!defined($auth)) {
|
||||||
# TODO show warning about auth setting not defined
|
# TODO show warning about auth setting not defined
|
||||||
}
|
}
|
||||||
|
elsif ($auth eq 'petstore_auth') {
|
||||||
|
|
||||||
|
if ($WWW::SwaggerClient::Configuration::access_token) {
|
||||||
|
$header_params->{'Authorization'} = 'Bearer ' . $WWW::SwaggerClient::Configuration::access_token;
|
||||||
|
}
|
||||||
|
}
|
||||||
elsif ($auth eq 'api_key') {
|
elsif ($auth eq 'api_key') {
|
||||||
|
|
||||||
my $api_key = $self->get_api_key_with_prefix('api_key');
|
my $api_key = $self->get_api_key_with_prefix('api_key');
|
||||||
@ -326,12 +332,6 @@ sub update_params_for_auth {
|
|||||||
$header_params->{'api_key'} = $api_key;
|
$header_params->{'api_key'} = $api_key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ($auth eq 'petstore_auth') {
|
|
||||||
|
|
||||||
if ($WWW::SwaggerClient::Configuration::access_token) {
|
|
||||||
$header_params->{'Authorization'} = 'Bearer ' . $WWW::SwaggerClient::Configuration::access_token;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
else {
|
else {
|
||||||
# TODO show warning about security definition not found
|
# TODO show warning about security definition not found
|
||||||
@ -341,7 +341,7 @@ sub update_params_for_auth {
|
|||||||
|
|
||||||
# The endpoint API class has not found any settings for auth. This may be deliberate,
|
# The endpoint API class has not found any settings for auth. This may be deliberate,
|
||||||
# in which case update_params_for_auth() will be a no-op. But it may also be that the
|
# in which case update_params_for_auth() will be a no-op. But it may also be that the
|
||||||
# swagger spec does not describe the intended authorization. So we check in the config for any
|
# OpenAPI Spec does not describe the intended authorization. So we check in the config for any
|
||||||
# auth tokens and if we find any, we use them for all endpoints;
|
# auth tokens and if we find any, we use them for all endpoints;
|
||||||
sub _global_auth_setup {
|
sub _global_auth_setup {
|
||||||
my ($self, $header_params, $query_params) = @_;
|
my ($self, $header_params, $query_params) = @_;
|
||||||
|
@ -13,7 +13,7 @@ use WWW::SwaggerClient::ApiClient;
|
|||||||
|
|
||||||
=head1 Name
|
=head1 Name
|
||||||
|
|
||||||
WWW::SwaggerClient::ApiFactory - constructs APIs to retrieve SwaggerClient objects
|
WWW::SwaggerClient::ApiFactory - constructs APIs to retrieve WWW::SwaggerClient objects
|
||||||
|
|
||||||
=head1 Synopsis
|
=head1 Synopsis
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ sub new {
|
|||||||
|
|
||||||
$which is a nickname for the class:
|
$which is a nickname for the class:
|
||||||
|
|
||||||
WWW::FooBarClient::BazApi has nickname 'Baz'
|
FooBarClient::BazApi has nickname 'Baz'
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ has version_info => ( is => 'ro',
|
|||||||
default => sub { {
|
default => sub { {
|
||||||
app_name => 'Swagger Petstore',
|
app_name => 'Swagger Petstore',
|
||||||
app_version => '1.0.0',
|
app_version => '1.0.0',
|
||||||
generated_date => '2015-12-29T16:27:28.775+08:00',
|
generated_date => '2016-01-04T20:36:07.450-08:00',
|
||||||
generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen',
|
generator_class => 'class io.swagger.codegen.languages.PerlClientCodegen',
|
||||||
} },
|
} },
|
||||||
documentation => 'Information about the application version and the codegen codebase version'
|
documentation => 'Information about the application version and the codegen codebase version'
|
||||||
@ -103,7 +103,7 @@ Automatically generated by the Perl Swagger Codegen project:
|
|||||||
|
|
||||||
=over 4
|
=over 4
|
||||||
|
|
||||||
=item Build date: 2015-12-29T16:27:28.775+08:00
|
=item Build date: 2016-01-04T20:36:07.450-08:00
|
||||||
|
|
||||||
=item Build package: class io.swagger.codegen.languages.PerlClientCodegen
|
=item Build package: class io.swagger.codegen.languages.PerlClientCodegen
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ WWW::SwaggerClient::ApiFactory for non-Moosey usage.
|
|||||||
=head1 SYNOPSIS
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
The Perl Swagger Codegen project builds a library of Perl modules to interact with
|
The Perl Swagger Codegen project builds a library of Perl modules to interact with
|
||||||
a web service defined by a Swagger specification. See below for how to build the
|
a web service defined by a OpenAPI Specification. See below for how to build the
|
||||||
library.
|
library.
|
||||||
|
|
||||||
This module provides an interface to the generated library. All the classes,
|
This module provides an interface to the generated library. All the classes,
|
||||||
@ -154,7 +154,7 @@ For documentation of all these methods, see AUTOMATIC DOCUMENTATION below.
|
|||||||
|
|
||||||
=head2 Configuring authentication
|
=head2 Configuring authentication
|
||||||
|
|
||||||
In the normal case, the Swagger spec will describe what parameters are
|
In the normal case, the OpenAPI Spec will describe what parameters are
|
||||||
required and where to put them. You just need to supply the tokens.
|
required and where to put them. You just need to supply the tokens.
|
||||||
|
|
||||||
my $tokens = {
|
my $tokens = {
|
||||||
@ -269,7 +269,7 @@ maven 3.0.3 or better already installed.
|
|||||||
|
|
||||||
The config file should specify the project name for the generated library:
|
The config file should specify the project name for the generated library:
|
||||||
|
|
||||||
{"moduleName":"MyProjectName"}
|
{"moduleName":"WWW::MyProjectName"}
|
||||||
|
|
||||||
Your library files will be built under C<WWW::MyProjectName>.
|
Your library files will be built under C<WWW::MyProjectName>.
|
||||||
|
|
||||||
@ -304,7 +304,7 @@ output formats are supported:
|
|||||||
The C<-c> option allows you to load and inspect your own application. A dummy
|
The C<-c> option allows you to load and inspect your own application. A dummy
|
||||||
namespace is used if you don't supply your own class.
|
namespace is used if you don't supply your own class.
|
||||||
|
|
||||||
=head1 DOCUMENTATION FROM THE SWAGGER SPEC
|
=head1 DOCUMENTATION FROM THE OpenAPI Spec
|
||||||
|
|
||||||
Additional documentation for each class and method may be provided by the Swagger
|
Additional documentation for each class and method may be provided by the Swagger
|
||||||
spec. If so, this is available via the C<class_documentation()> and
|
spec. If so, this is available via the C<class_documentation()> and
|
||||||
|
@ -424,4 +424,4 @@ $attrname
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
96
samples/client/petstore/perl/t/05_long_module_name.t
Normal file
96
samples/client/petstore/perl/t/05_long_module_name.t
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
use Test::More;
|
||||||
|
use Test::Exception;
|
||||||
|
|
||||||
|
use lib 'deep_module_test/lib';
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
if (! -d 'deep_module_test/lib' ) {
|
||||||
|
plan skip_all => 'bin/perl-petstore.sh needs to be run first';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
plan tests => 38;
|
||||||
|
}
|
||||||
|
|
||||||
|
use_ok('Something::Deep::PetApi');
|
||||||
|
use_ok('Something::Deep::ApiClient');
|
||||||
|
use_ok('Something::Deep::Object::Pet');
|
||||||
|
use_ok('Something::Deep::Object::Tag');
|
||||||
|
use_ok('Something::Deep::Object::Category');
|
||||||
|
|
||||||
|
my $api_client = Something::Deep::ApiClient->instance('base_url' => 'http://testing');
|
||||||
|
my $pet_api = Something::Deep::PetApi->new('api_client' => $api_client);
|
||||||
|
is $pet_api->{api_client}->{base_url}, 'http://testing', 'get the proper base URL from api client';
|
||||||
|
|
||||||
|
my $api = Something::Deep::PetApi->new();
|
||||||
|
|
||||||
|
is $api->{api_client}->{base_url}, 'http://testing', 'we still get the original base URL from api client, because it\'s a singleton';
|
||||||
|
|
||||||
|
# reset the base_url - no direct access because an application shouldn't be changing
|
||||||
|
# its base URL halfway through
|
||||||
|
$api->{api_client}->{base_url} = 'http://petstore.swagger.io/v2';
|
||||||
|
|
||||||
|
is $api->{api_client}->{base_url}, 'http://petstore.swagger.io/v2', 'get the default base URL from api client';
|
||||||
|
|
||||||
|
# test select_header_content_type
|
||||||
|
is $api->{api_client}->select_header_content_type('application/xml', 'Application/JSON'), 'application/json', 'get the proper content type application/json but not application/xml';
|
||||||
|
is $api->{api_client}->select_header_content_type('application/xml'), 'application/xml', 'get the proper content type application/json';
|
||||||
|
is $api->{api_client}->select_header_content_type(''), 'application/json', 'get the proper content type application/json (default)';
|
||||||
|
|
||||||
|
# test select_header_accept
|
||||||
|
is $api->{api_client}->select_header_accept('application/xml', 'Application/JSON'), 'application/json', 'get the proper accept application/json but not application/xml';
|
||||||
|
is $api->{api_client}->select_header_content_type('application/xml'), 'application/xml', 'get the proper accept application/json';
|
||||||
|
is $api->{api_client}->select_header_accept(''), undef, 'get the proper accept "undef" (default)';
|
||||||
|
|
||||||
|
my $pet_id = 10008;
|
||||||
|
|
||||||
|
my $category = Something::Deep::Object::Category->new('id' => '22', 'name' => 'perl');
|
||||||
|
my $tag = Something::Deep::Object::Tag->new('id' => '11', 'name' => 'just kidding');
|
||||||
|
my $pet = Something::Deep::Object::Pet->new('id' => $pet_id, 'name' => 'perl test',
|
||||||
|
"photoUrls" => ['123', 'oop'], 'tags' => [$tag], 'status' => 'pending', 'category' => $category);
|
||||||
|
|
||||||
|
isa_ok($api, 'Something::Deep::PetApi');
|
||||||
|
isa_ok($category, 'Something::Deep::Object::Category');
|
||||||
|
isa_ok($tag, 'Something::Deep::Object::Tag');
|
||||||
|
isa_ok($pet, 'Something::Deep::Object::Pet');
|
||||||
|
|
||||||
|
my $pet_hash = $pet->to_hash;
|
||||||
|
|
||||||
|
is $pet_hash->{category}->{id}, '22', 'get the proper category id';
|
||||||
|
is $pet_hash->{category}->{name}, 'perl', 'get the proper category name';
|
||||||
|
is $pet_hash->{tags}[0]->{name}, 'just kidding', 'get the proper tag name';
|
||||||
|
is $pet_hash->{tags}[0]->{id}, '11', 'get the proper tag id';
|
||||||
|
|
||||||
|
my $add_pet = $api->add_pet(body => $pet);
|
||||||
|
|
||||||
|
my $get_pet = $api->get_pet_by_id(pet_id => $pet_id);
|
||||||
|
my $get_pet_hash = $get_pet->to_hash;
|
||||||
|
is $get_pet_hash->{name}, 'perl test', 'get the proper pet name from get_pet_by_id';
|
||||||
|
is $get_pet_hash->{id}, '10008', 'get the proper pet id from get_pet_by_id';
|
||||||
|
is $get_pet_hash->{category}->{name}, 'perl', 'get the proper category name from get_pet_by_id';
|
||||||
|
is $get_pet_hash->{category}->{id}, '22', 'get the proper category id from get_pet_by_id';
|
||||||
|
is $get_pet_hash->{category}->{name}, 'perl', 'get the proper category from get_pet_by_id';
|
||||||
|
is $get_pet_hash->{tags}[0]->{name}, 'just kidding', 'get the proper tag from get_pet_by_id';
|
||||||
|
is $get_pet_hash->{tags}[0]->{id}, '11', 'get the proper tag id from get_pet_by_id';
|
||||||
|
is $get_pet_hash->{photoUrls}->[0], '123', 'get the proper photoUrl from get_pet_by_id';
|
||||||
|
is $get_pet_hash->{photoUrls}->[1], 'oop', 'get the proper photoUrl from get_pet_by_id';
|
||||||
|
|
||||||
|
|
||||||
|
my $update_pet_with_form = $api->update_pet_with_form(pet_id => $pet_id, name => 'test_name', status => 'sold');
|
||||||
|
is $update_pet_with_form, undef, 'get the null response from update_pet_wth_form';
|
||||||
|
|
||||||
|
my $get_pet_after_update = $api->get_pet_by_id(pet_id => $pet_id);
|
||||||
|
is $get_pet_after_update->{status}, 'sold', 'get the updated status after update_pet_with_form';
|
||||||
|
|
||||||
|
my $upload_pet = $api->upload_file(pet_id => $pet_id, additional_metadata => 'testabc', file => 'test.pl');
|
||||||
|
is $upload_pet, undef, 'get the null response from upload_pet';
|
||||||
|
|
||||||
|
my $delete_pet = $api->delete_pet(pet_id => $pet_id);
|
||||||
|
is $delete_pet, undef, 'get the null response from delete_pet';
|
||||||
|
throws_ok{$api->get_pet_by_id(pet_id => $pet_id)} qr/API Exception\(404\): Not Found/, "throw 404 error about pet not found after delete";
|
||||||
|
#is $get_pet_after_delete->{status}, undef, 'get the updated status after update_pet_with_form';
|
||||||
|
|
||||||
|
my $pets;
|
||||||
|
lives_ok {$pets = $api->find_pets_by_status(status => [qw(sold available)])} 'array query param processed correctly';
|
||||||
|
isa_ok($pets->[0], 'Something::Deep::Object::Pet');
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user