basyura's blog

あしたになったらほんきだす。

vim から pocket

呼ばれた気がしたので調査してみる。

認証

function! s:auth()
  " https://getpocket.com/developer/ から取得
  let consumer_key = 'YOUR CONSUMER KEY'

  " code を取得する
  let res = webapi#http#post('https://getpocket.com/v3/oauth/request', {
            \ 'consumer_key' : consumer_key,
            \ 'redirect_uri' : 'YOUR SITE'
            \ })
  let code = split(res.content, '=')[1]
  " ブラウザからアプリケーションを認証(許可)する
  let url = 'https://getpocket.com/auth/authorize?' . 
               \ 'request_token=' . code .
               \ '&redirect_uri=YOUR SITE'
  execute 'OpenBrowser ' . url
  " ブラウザで認証したら Enter
  let ret = input("please enter key after authorize in browser")
  " access_token を取得する 
  let res = webapi#http#post('https://getpocket.com/v3/oauth/authorize', {
            \ 'consumer_key' : consumer_key,
            \ 'code'         : code,
            \ })
  " レスポンスをパース
  let param  = {}
  for value in split(res.content, '&')
    let pair = split(value, '=')
    let param[pair[0]] = pair[1]
  endfor
  " アクセストークン
  echo param.access_token
  " ユーザ名
  echo param.username

endfunction

call s:auth()

追加してみる

function! s:add()
  let consumer_key = 'YOUR CONSUMER KEY'
  let access_token = 'ACCESS TOKEN'

  echo webapi#http#post('https://getpocket.com/v3/add', {
                        \ 'url'          : 'https://github.com/basyura/TweetVim',
                        \ 'consumer_key' : consumer_key,
                        \ 'access_token' : access_token,
                        \ })
endfunction

call s:add()

まとめ

CONSUMER KEY を基本的に各自に用意してもらうという方針にすれば割と楽にいけそう。
これなら pocket.vim つくっちゃおうかなぁと思ったらすでにあったわーわーわー 。

とはいえ、ちまちまやってみるか・・・な?

いつか何かを作るために勉強するよりも、最初に作りたい目的があると捗るので作りたい物ドリブンでいろいろ手を動かしたいと思い直した今日このごろ。