From e47a3e131aeed469a1d74a4ce9f1c3a48fef3e82 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 29 Mar 2015 22:54:42 -0400 Subject: refactor, add a few more commands --- bin/pocket | 2 +- lib/WWW/Pocket/Script.pm | 81 ++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 66 insertions(+), 17 deletions(-) diff --git a/bin/pocket b/bin/pocket index c38d497..a73633c 100644 --- a/bin/pocket +++ b/bin/pocket @@ -3,4 +3,4 @@ use strict; use warnings; use WWW::Pocket::Script; -WWW::Pocket::Script->new_with_options->run; +WWW::Pocket::Script->new->run(@ARGV); diff --git a/lib/WWW/Pocket/Script.pm b/lib/WWW/Pocket/Script.pm index cf749b5..253a88e 100644 --- a/lib/WWW/Pocket/Script.pm +++ b/lib/WWW/Pocket/Script.pm @@ -1,8 +1,7 @@ package WWW::Pocket::Script; use Moose; -with 'MooseX::Getopt'; - +use Getopt::Long 'GetOptionsFromArray'; use JSON::PP; use Path::Class; @@ -29,7 +28,6 @@ has credentials_file => ( ); has pocket => ( - traits => ['NoGetopt'], is => 'ro', isa => 'WWW::Pocket', lazy => 1, @@ -48,14 +46,14 @@ has pocket => ( sub run { my $self = shift; - my @args = @{ $self->extra_argv }; + my @argv = @_; - my $method = shift @args; + my $method = shift @argv; if ($self->can($method)) { - return $self->$method(@args); + return $self->$method(@argv); } else { - $self->print_usage_text($self->usage); + die "insert usage here"; } } @@ -64,25 +62,76 @@ sub authenticate { $self->pocket; } -sub add { +sub list { + my $self = shift; + my @argv = @_; + + my ($params) = $self->_parse_retrieve_options(@argv); + + print "$_\n" for $self->_retrieve_urls(%$params); +} + +sub search { + my $self = shift; + my @argv = @_; + + my ($params, $extra_argv) = $self->_parse_retrieve_options(@argv); + my ($search) = @$extra_argv; + + print "$_\n" for $self->_retrieve_urls(%$params, search => $search); +} + +sub retrieve_raw { my $self = shift; - my @args = @_; + my @argv = @_; + + my ($params) = $self->_parse_retrieve_options(@argv); + + $self->_pretty_print($self->pocket->retrieve(%$params)); +} - $self->_pretty_print($self->pocket->add(@args)); +sub _parse_retrieve_options { + my $self = shift; + my @argv = @_; + + my ($archive); + GetOptionsFromArray( + \@argv, + "archive" => \$archive, + ) or die "???"; + + return ( + { + ($archive ? (state => $archive) : ()), + }, + [ @argv ], + ); } -sub modify { +sub _retrieve_urls { my $self = shift; - my @args = @_; + my %params = @_; + + my $response = $self->pocket->retrieve(%params); + my $list = $response->{list}; + return unless ref($list) && ref($list) eq 'HASH'; - $self->_pretty_print($self->pocket->modify(@args)); + return map { + $_->{resolved_url} + } sort { + $b->{sort_id} <=> $a->{sort_id} + } values %{ $response->{list} }; } -sub retrieve { +sub add { my $self = shift; - my @args = @_; + my ($url, $title) = @_; - $self->_pretty_print($self->pocket->retrieve(@args)); + $self->pocket->add( + url => $url, + title => $title, + ); + print "Page Saved!\n"; } sub _apply_credentials { -- cgit v1.2.3-54-g00ecf