Pocket の API の version.3 がいつのまにか出ていて、予想通り oauth2 だったので、リクエストトークン取得する殴り書きスクリプト書いた。
スクリプト書く必要ないとおもう。curl あたり使ったらすぐに取得できるとおもう。HTTP::Body 使う必要もないとおもう。
ひさしぶりに Perl 書いたら、思いの外モジュール名わすれててよくない。POST リクエスト送った後、BAD REQUEST とか言われてアレ、アレ、とかおもってたら、HTTP::UserAgent の使い方まちがってるとかそういうのだった。がんばりたい。
#!/usr/bin/env perl use strict; use warnings; use LWP::UserAgent; use YAML qw(LoadFile); use FindBin qw/$Bin/; use Path::Class; use Log::Minimal; use HTTP::Body; $Log::Minimal::COLOR = 1; my $REQUEST_URL = 'https://getpocket.com/v3/oauth/request'; my $agent = LWP::UserAgent->new; my $file = file($Bin)->parent->subdir('01.info')->file('app-info.yaml'); my $dat = LoadFile($file); my $consumer_key = $dat->{'ConsumerKey'}; debugf("sending request with consumer key: $consumer_key"); my $res = $agent->post( $REQUEST_URL, { consumer_key => $consumer_key, redirect_uri => 'http://www.google.com', state => '' } ); debugf("http statusline: [", $res->status_line, "]"); if ( $res->is_success ) { my $content = $res->content; my $body = HTTP::Body->new( $res->header('Content-Type'), $res->header('Content-Length')); $body->add($content); print $body->param->{'code'}, "\n"; } else { croakf "failed. " . $res->status_line; }