diff options
author | franck cuny <franck@lumberjaph.net> | 2010-08-31 15:50:10 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-08-31 15:50:10 +0200 |
commit | d651409dab0a448725e4fb338bf341438b54626f (patch) | |
tree | 1d9eff1dfa97a31c9f181acebd9eee7d2e6b2cdc /lib/Net/HTTP/Console/Role | |
parent | remove dummy class, use Core instead (diff) | |
download | net-http-console-d651409dab0a448725e4fb338bf341438b54626f.tar.gz |
can load api from a spec file
Diffstat (limited to 'lib/Net/HTTP/Console/Role')
-rw-r--r-- | lib/Net/HTTP/Console/Role/API.pm | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/lib/Net/HTTP/Console/Role/API.pm b/lib/Net/HTTP/Console/Role/API.pm index cd3ba75..bc1dbe3 100644 --- a/lib/Net/HTTP/Console/Role/API.pm +++ b/lib/Net/HTTP/Console/Role/API.pm @@ -5,11 +5,12 @@ use MooseX::Declare; role Net::HTTP::Console::Role::API { use Try::Tiny; + use Net::HTTP::API::Spec; has api_lib => ( isa => 'Str', is => 'rw', - default => 'Net::HTTP::Console::Dummy' + default => 'Net::HTTP::API::Core' ); has api_object => ( @@ -23,19 +24,37 @@ role Net::HTTP::Console::Role::API { ); method _load_api_lib($lib) { + my $api; - try { - Class::MOP::load_class($lib); - $self->api_lib($lib); - $api = $lib->new(); - $api->api_base_url($self->url) if $self->has_url; - $api->api_format($self->format) if $self->has_format; - $api->api_format_mode($self->format_mode) - if $self->has_format_mode; - }catch { - $self->logger('error', "failed to load $lib: $_"); - }; - return $api if $api; + + if ($self->has_specification) { + $api = Net::HTTP::API::Spec->load_from_spec($self->spec); + }else{ + try { + Class::MOP::load_class($lib); + $self->api_lib($lib); + $api = $lib->new(); + } catch { + $self->logger('error', "failed to load $lib: $_"); + }; + } + + if (!$api) { + $self->logger('error', "unable to load an API!"); + } + + $api->api_base_url($self->url) if $self->has_url; + $api->api_format($self->format) if $self->has_format; + $api->api_format_mode($self->format_mode) + if $self->has_format_mode; + + return $api; + } + + method load_api_spec($path) { + my $object = Net::HTTP::API::Spec->new_from_spec($path); + $self->api_object($object); + $self->message("successfully loaded $path"); } method load_api_lib($lib) { |