summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2015-03-29 22:54:42 -0400
committerJesse Luehrs <doy@tozt.net>2015-03-29 22:54:42 -0400
commite47a3e131aeed469a1d74a4ce9f1c3a48fef3e82 (patch)
tree28beb42f31c7fb29e8f2727d37e916347f14de4f
parentd81d37fab6261afa94a170a0cff003b20d1b9421 (diff)
downloadwww-pocket-e47a3e131aeed469a1d74a4ce9f1c3a48fef3e82.tar.gz
www-pocket-e47a3e131aeed469a1d74a4ce9f1c3a48fef3e82.zip
refactor, add a few more commands
-rw-r--r--bin/pocket2
-rw-r--r--lib/WWW/Pocket/Script.pm81
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 {