Moves API のための Perl モジュールを作りました


この日はよく歩いたなあ……

この日はよく歩いたなあ……

Moves は iPhone 用のライフログアプリです。バックグラウンドで起動しておくだけで自分の歩いた軌跡、速度、時刻が記録されていきます。ご飯食べたりしてしばらくいた記録があれば、Foursquare と連携して詳細な場所を記録することも出来ます。

Moves App
カテゴリ: ヘルスケア/フィットネス
価格: 無料

詳しいことはレビュー記事を参照してください。

Moves: 1日の行動を自動で記録。ポッケに入れて放置するだけでライフログがとれます。無料。 – たのしいiPhone! AppBank
http://www.appbank.net/2013/02/08/iphone-application/542263.php

大変便利なこのアプリですが、アプリ内の情報を外部に保存したり、他のアプリから利用することが出来なかったことが欠点でした。

それがいつの間にやら API が公開されアプリの紹介ページまで出来ています。見たところ、Perl モジュールは誰も作ってなさそうなので作っちゃいました。

delphinus35/p5-Net-Moves
https://github.com/delphinus35/p5-Net-Moves

まだテストとか余り書いていないのでβバージョンです。ある程度まとまったら CPAN に置いてみます。

使い方

基本的には次のようにして使います。

my $moves = Net::Moves::V1->new(
    client_id => 'abcde12345',
    client_secret => '12345abcde'
);

get '/' => sub { my $c = shift;
    return $c->render('index.tt', +{
        authorize_uri => $moves->authorize,
    });
};

get '/auth/moves/callback' => sub { my $c = shift;
    my $access_token = $moves->access_token(
        code => $c->req->param('code'),
        redirect_uri => 'http://0:5000/auth/moves/callback',
    );
    # save access_token to a session variable.
    $c->session->set(access_token => $access_token->session_freeze);

    return $c->redirect('/');
};

get '/moves/profile' => sub { my $c = shift;
    # get access_token from a session variable.
    my $user = $moves->user($c->session->get('access_token'));

    return $c->render('profile.tt', +{
        user_id => $user->id,
        profile => $user->profile,
    });
};

sample/app.psgi にサンプルアプリを置いていますので詳しくはそちらを見てください。

コメントを残す