diff options
Diffstat (limited to '')
-rw-r--r-- | lib/Net/HTTP/Console/Role/API.pm | 35 | ||||
-rw-r--r-- | lib/Net/HTTP/Console/Role/APILib.pm | 26 | ||||
-rw-r--r-- | lib/Net/HTTP/Console/Role/HTTP.pm | 41 | ||||
-rw-r--r-- | lib/Net/HTTP/Console/Role/HTTP/Response.pm | 44 | ||||
-rw-r--r-- | lib/Net/HTTP/Console/Role/Headers.pm | 31 | ||||
-rw-r--r-- | lib/Net/HTTP/Console/Role/Plugins.pm | 38 | ||||
-rw-r--r-- | lib/Net/HTTP/Console/Role/Prompt.pm | 20 |
7 files changed, 154 insertions, 81 deletions
diff --git a/lib/Net/HTTP/Console/Role/API.pm b/lib/Net/HTTP/Console/Role/API.pm new file mode 100644 index 0000000..f9abc30 --- /dev/null +++ b/lib/Net/HTTP/Console/Role/API.pm @@ -0,0 +1,35 @@ +package Net::HTTP::Console::Role::API; + +use MooseX::Declare; + +role Net::HTTP::Console::Role::API { + + has api_lib => ( + isa => 'Str', + is => 'rw', + default => 'Net::HTTP::Console::Dummy' + ); + + has api_object => ( + isa => 'Object', + is => 'rw', + lazy => 1, + default => sub { + my $self = shift; + $self->load_api_lib($self->api_lib); + }, + ); + + method load_api_lib($lib) { + Class::MOP::load_class($lib); + $self->api_lib($lib); + my $o = $lib->new(); + $o->api_base_url($self->url) if $self->has_url; + $o->api_format($self->format) if $self->has_format; + $o->api_format_mode($self->format_mode) if $self->has_format_mode; + $o; + } + +} + +1; diff --git a/lib/Net/HTTP/Console/Role/APILib.pm b/lib/Net/HTTP/Console/Role/APILib.pm deleted file mode 100644 index 5f5aff1..0000000 --- a/lib/Net/HTTP/Console/Role/APILib.pm +++ /dev/null @@ -1,26 +0,0 @@ -package Net::HTTP::Console::Role::APILib; - -use Moose::Role; - -has lib => (isa => 'Str', is => 'rw', default => 'Net::HTTP::Console::Dummy'); -has api_object => ( - isa => 'Object', - is => 'rw', - lazy => 1, - default => sub { - my $self = shift; - $self->load_api_lib($self->lib); - }, -); - -sub load_api_lib { - my ($self, $lib) = @_; - Class::MOP::load_class($lib); - my $o = $lib->new(); - $o->api_base_url($self->url) if $self->has_url; - $o->api_format($self->format) if $self->has_format; - $o->api_format_mode($self->format_mode) if $self->has_format_mode; - $o; -} - -1; diff --git a/lib/Net/HTTP/Console/Role/HTTP.pm b/lib/Net/HTTP/Console/Role/HTTP.pm deleted file mode 100644 index 292de40..0000000 --- a/lib/Net/HTTP/Console/Role/HTTP.pm +++ /dev/null @@ -1,41 +0,0 @@ -package Net::HTTP::Console::Role::HTTP; - -use Moose::Role; - -has _last_http_response => ( - is => 'rw', - isa => 'Object', - clearer => '_clear_last_http_response', -); -has _last_http_content => ( - is => 'rw', - isa => 'Str', - clearer => '_clear_last_http_content', -); -has _json => ( - is => 'rw', - isa => 'Object', - lazy => 1, - default => sub { JSON->new; }, -); - -sub _show_last_content { - my $self = shift; - print $self->_last_http_content; -} - -sub _show_last_headers { - my $self = shift; - foreach my $k (keys %{$self->_last_http_response->headers}) { - print "$k: ".$self->_last_http_response->header($k)."\n"; - } -} - -sub _set_and_show { - my ($self, $content, $response) = @_; - $self->_last_http_content($self->_json->pretty->encode($content)); - $self->_last_http_response($response); - $self->_show_last_content; -} - -1; diff --git a/lib/Net/HTTP/Console/Role/HTTP/Response.pm b/lib/Net/HTTP/Console/Role/HTTP/Response.pm new file mode 100644 index 0000000..606c7de --- /dev/null +++ b/lib/Net/HTTP/Console/Role/HTTP/Response.pm @@ -0,0 +1,44 @@ +package Net::HTTP::Console::Role::HTTP::Response; + +use MooseX::Declare; + +role Net::HTTP::Console::Role::HTTP::Response { + + has _last_http_response => ( + is => 'rw', + isa => 'Object', + clearer => '_clear_last_http_response', + ); + + has _last_http_content => ( + is => 'rw', + isa => 'Str', + clearer => '_clear_last_http_content', + ); + + has _json => ( + is => 'rw', + isa => 'Object', + lazy => 1, + default => sub { JSON->new; }, + ); + + method _show_last_content { + print $self->_last_http_content; + } + + method _show_last_headers { + foreach my $k (keys %{$self->_last_http_response->headers}) { + print "$k: ".$self->_last_http_response->header($k)."\n"; + } + } + + method _set_and_show($content, $response) { + $self->_last_http_content($self->_json->pretty->encode($content)); + $self->_last_http_response($response); + $self->_show_last_content; + } + +} + +1; diff --git a/lib/Net/HTTP/Console/Role/Headers.pm b/lib/Net/HTTP/Console/Role/Headers.pm index d694d85..4d79a3b 100644 --- a/lib/Net/HTTP/Console/Role/Headers.pm +++ b/lib/Net/HTTP/Console/Role/Headers.pm @@ -1,19 +1,22 @@ package Net::HTTP::Console::Role::Headers; -use Moose::Role; +use MooseX::Declare; -has custom_headers => ( - traits => ['Hash'], - is => 'ro', - isa => 'HashRef[Str]', - default => sub { {} }, - handles => { - set_header => 'set', - get_header => 'get', - has_no_headers => 'is_empty', - delete_header => 'delete', - all_headers => 'kv', - }, -); +role Net::HTTP::Console::Role::Headers { + + has custom_headers => ( + traits => ['Hash'], + is => 'ro', + isa => 'HashRef[Str]', + default => sub { {} }, + handles => { + set_header => 'set', + get_header => 'get', + has_no_headers => 'is_empty', + delete_header => 'delete', + all_headers => 'kv', + }, + ); +} 1; diff --git a/lib/Net/HTTP/Console/Role/Plugins.pm b/lib/Net/HTTP/Console/Role/Plugins.pm new file mode 100644 index 0000000..a3136f2 --- /dev/null +++ b/lib/Net/HTTP/Console/Role/Plugins.pm @@ -0,0 +1,38 @@ +package Net::HTTP::Console::Role::Plugins; + +use MooseX::Declare; + +role Net::HTTP::Console::Role::Plugins { + + has dispatchers => ( + is => 'rw', + isa => 'ArrayRef[Str]', + traits => ['Array'], + lazy => 1, + auto_deref => 1, + default => sub { + [qw/Load HTTP Help Method Set/], + } + ); + + has plugins => ( + traits => ['Array'], + is => 'rw', + isa => 'ArrayRef[Object]', + lazy => 1, + handles => {all_plugins => 'elements', add_plugin => 'push'}, + default => sub { + my $self = shift; + my @p; + for ($self->dispatchers) { + my $p = "Net::HTTP::Console::Dispatcher::" . $_; + Class::MOP::load_class($p); + my $o = $p->new(application => $self); + push @p, $o; + } + \@p; + }, + ); +} + +1; diff --git a/lib/Net/HTTP/Console/Role/Prompt.pm b/lib/Net/HTTP/Console/Role/Prompt.pm new file mode 100644 index 0000000..b6a9599 --- /dev/null +++ b/lib/Net/HTTP/Console/Role/Prompt.pm @@ -0,0 +1,20 @@ +package Net::HTTP::Console::Role::Prompt; + +use MooseX::Declare; + +role Net::HTTP::Console::Role::Prompt { + + has prompt => ( + isa => 'Str', + is => 'rw', + lazy => 1, + default => sub { + my $self = shift; + my $url = $self->api_object->api_base_url; + return ($url || '[no url defined!]') . '> '; + } + ); + +} + +1; |