From e93d262aabcf66e9c103dccb5a4a3eeb00316aee Mon Sep 17 00:00:00 2001 From: franck cuny Date: Tue, 8 Jun 2010 17:30:55 +0200 Subject: add dispatcher for viewing content; update help --- lib/Net/HTTP/Console/Dispatcher/HTTP.pm | 8 +--- lib/Net/HTTP/Console/Dispatcher/Help.pm | 75 ++++++++++++++++++++++++--------- lib/Net/HTTP/Console/Dispatcher/Set.pm | 34 +++++++-------- lib/Net/HTTP/Console/Dispatcher/View.pm | 26 ++++++++++++ 4 files changed, 100 insertions(+), 43 deletions(-) create mode 100644 lib/Net/HTTP/Console/Dispatcher/View.pm (limited to 'lib/Net/HTTP/Console/Dispatcher') diff --git a/lib/Net/HTTP/Console/Dispatcher/HTTP.pm b/lib/Net/HTTP/Console/Dispatcher/HTTP.pm index 5dc5719..c0e24ae 100644 --- a/lib/Net/HTTP/Console/Dispatcher/HTTP.pm +++ b/lib/Net/HTTP/Console/Dispatcher/HTTP.pm @@ -7,7 +7,7 @@ class Net::HTTP::Console::Dispatcher::HTTP with Net::HTTP::Console::Dispatcher { use Try::Tiny; method pattern($input) { - $input =~ /^(?:GET|POST|PUT|DELETE|HEAD|show)\s/ ? return $input : return 0; + $input =~ /^(?:GET|POST|PUT|DELETE|HEAD)\s/ ? return $input : return 0; } method dispatch($input) { @@ -20,10 +20,6 @@ class Net::HTTP::Console::Dispatcher::HTTP with Net::HTTP::Console::Dispatcher { elsif (($method, $path, $body) = $input =~ /^(POST|PUT)\s(.*)(?:\s(.*))$/) { $self->_do_request_with_body($method, $path, $body); } - elsif ($input =~ /^show\s(headers|content)$/) { - my $method = "_show_last_$1"; - $self->application->$method; - } else { # XXX unsupporter method } @@ -36,7 +32,7 @@ class Net::HTTP::Console::Dispatcher::HTTP with Net::HTTP::Console::Dispatcher { my ($content, $result) = $self->application->api_object->anonymous; $self->application->_set_and_show($content, $result); }catch{ - warn $_; + # XXX error }; } diff --git a/lib/Net/HTTP/Console/Dispatcher/Help.pm b/lib/Net/HTTP/Console/Dispatcher/Help.pm index a7a774b..6218676 100644 --- a/lib/Net/HTTP/Console/Dispatcher/Help.pm +++ b/lib/Net/HTTP/Console/Dispatcher/Help.pm @@ -13,6 +13,14 @@ class Net::HTTP::Console::Dispatcher::Help with Net::HTTP::Console::Dispatcher { } elsif ($cmd eq 'command') { $self->_list_commands(); + }elsif($cmd eq 'view') { + $self->_help_about_view(); + }elsif($cmd eq 'set') { + $self->_help_about_set(); + }elsif($cmd eq 'request') { + $self->_help_about_request(); + }elsif($cmd eq 'load') { + $self->_help_about_load(); } } else { @@ -29,33 +37,62 @@ class Net::HTTP::Console::Dispatcher::Help with Net::HTTP::Console::Dispatcher { print <application->api_object->meta->get_all_net_api_methods(); + method _list_commands { + my @methods = + $self->application->api_object->meta->get_all_net_api_methods(); - if (!@methods) { - print "no method available\n"; - return; - } + if (!@methods) { + print "no method available\n"; + return; + } + + print "available commands:\n"; + map { print "- " . $_ . "\n" } @methods; + } + + method _get_help_for_command($cmd_name) { + my $method = + $self->application->api_object->meta->find_net_api_method_by_name($cmd_name); + + if (!$method) { + print "unknown method " . $cmd_name . "\n"; + return; + } + + print $method->documentation; + } - print "available commands:\n"; - map { print "- " . $_ . "\n" } @methods; - } + method _help_about_view { + print <application->api_object->meta->find_net_api_method_by_name($cmd_name); + method _help_about_set { + print <documentation; - } + method _help_about_load { + print <_unset_header($header); - } - elsif ($command eq 'set_header') { - $self->_set_header($header, $value); - } - elsif ($command eq 'show_defined_headers') { - $self->_show_defined_headers(); + if ($command eq 'set') { + $self->_set_header($key, $value) if $type eq 'header'; + }elsif($command eq 'unset') { + $self->_unset_header($key) if $type eq 'header'; } + + # elsif ($command eq 'show_defined_headers') { + # $self->_show_defined_headers(); + # } } method pattern($input) { - $input =~ /(un)?set_header|show_defined_headers/ - ? return $input - : return 0; + $input =~ /^(un)?set/ ? return $input : return 0; } method _set_header($header, $value) { @@ -35,11 +33,11 @@ class Net::HTTP::Console::Dispatcher::Set with Net::HTTP::Console::Dispatcher { print "header $header unset\n"; } - method _show_defined_headers { - foreach ($self->application->all_headers) { - print $_->[0].": ".$_->[1]."\n"; - } - } + # method _show_defined_headers { + # foreach ($self->application->all_headers) { + # print $_->[0].": ".$_->[1]."\n"; + # } + # } } 1; diff --git a/lib/Net/HTTP/Console/Dispatcher/View.pm b/lib/Net/HTTP/Console/Dispatcher/View.pm new file mode 100644 index 0000000..9d623d7 --- /dev/null +++ b/lib/Net/HTTP/Console/Dispatcher/View.pm @@ -0,0 +1,26 @@ +package Net::HTTP::Console::Dispatcher::View; + +use MooseX::Declare; + +class Net::HTTP::Console::Dispatcher::View with Net::HTTP::Console::Dispatcher { + + method pattern ($input) { + $input =~ /^show/ ? return $input : return 0; + } + + method dispatch ($input) { + (my $key) = $input =~ /^show ([\w]+)/; + + if ($key eq 'headers') { + $self->application->_show_last_headers + }elsif ($key eq 'content') { + $self->application->_show_last_content + }elsif ($key eq 'defined_headers') { + foreach ($self->application->all_headers) { + print $_->[0].': '.$_->[1]."\n"; + } + } + } +} + +1; -- cgit 1.4.1