summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2015-05-10 20:36:29 -0400
committerJesse Luehrs <doy@tozt.net>2015-05-10 20:36:29 -0400
commita5a98d36557214999f35d5d809cf35aa03b91a59 (patch)
tree1c16f8058634cf322a4c5335a1f88e58a479eaf3
parentc1d369a2dd57f1589d465c45deb3be58175bca94 (diff)
downloadwww-pocket-a5a98d36557214999f35d5d809cf35aa03b91a59.tar.gz
www-pocket-a5a98d36557214999f35d5d809cf35aa03b91a59.zip
generate the oauth url in the module, not the script
-rw-r--r--lib/WWW/Pocket.pm35
-rw-r--r--lib/WWW/Pocket/Script.pm4
2 files changed, 32 insertions, 7 deletions
diff --git a/lib/WWW/Pocket.pm b/lib/WWW/Pocket.pm
index 6a3669c..2b032f0 100644
--- a/lib/WWW/Pocket.pm
+++ b/lib/WWW/Pocket.pm
@@ -29,7 +29,29 @@ has username => (
has base_uri => (
is => 'ro',
isa => 'Str',
- default => 'https://getpocket.com/v3/',
+ default => 'https://getpocket.com/',
+);
+
+has api_base_uri => (
+ is => 'ro',
+ isa => 'Str',
+ lazy => 1,
+ default => sub {
+ my $base = $_[0]->base_uri;
+ $base =~ s{/$}{};
+ return "$base/v3/"
+ },
+);
+
+has auth_base_uri => (
+ is => 'ro',
+ isa => 'Str',
+ lazy => 1,
+ default => sub {
+ my $base = $_[0]->base_uri;
+ $base =~ s{/$}{};
+ return "$base/auth/"
+ },
);
has ua => (
@@ -46,13 +68,16 @@ sub start_authentication {
return if $self->has_access_token;
my $response = $self->_request(
- $self->base_uri . 'oauth/request',
+ $self->api_base_uri . 'oauth/request',
{
consumer_key => $self->consumer_key,
redirect_uri => $redirect_uri,
},
);
- return $response->{code};
+ return (
+ $self->auth_base_uri . "authorize?request_token=$response->{code}&redirect_uri=$redirect_uri",
+ $response->{code},
+ );
}
sub finish_authentication {
@@ -60,7 +85,7 @@ sub finish_authentication {
my ($code) = @_;
my $response = $self->_request(
- $self->base_uri . 'oauth/authorize',
+ $self->api_base_uri . 'oauth/authorize',
{
consumer_key => $self->consumer_key,
code => $code,
@@ -96,7 +121,7 @@ sub _endpoint_request {
my ($endpoint, $params) = @_;
$params->{consumer_key} = $self->consumer_key;
$params->{access_token} = $self->access_token;
- return $self->_request($self->base_uri . $endpoint, $params);
+ return $self->_request($self->api_base_uri . $endpoint, $params);
}
sub _request {
diff --git a/lib/WWW/Pocket/Script.pm b/lib/WWW/Pocket/Script.pm
index dfae0fe..d529ac9 100644
--- a/lib/WWW/Pocket/Script.pm
+++ b/lib/WWW/Pocket/Script.pm
@@ -99,9 +99,9 @@ sub _authenticate {
my $pocket = WWW::Pocket->new(consumer_key => $consumer_key);
my $redirect_uri = $self->redirect_uri;
- my $code = $pocket->start_authentication($redirect_uri);
+ my ($url, $code) = $pocket->start_authentication($redirect_uri);
- print "Visit https://getpocket.com/auth/authorize?request_token=${code}&redirect_uri=${redirect_uri} and log in. When you're done, press enter to continue.\n";
+ print "Visit $url and log in. When you're done, press enter to continue.\n";
<STDIN>;
$pocket->finish_authentication($code);