BottleでTogglのAPIにアクセスしてみる。

TogglのAPIにアクセスするコード

ToggleのAPIを使って、正しくAPIに接続できているかを確認するコードです。

def check_status_code(email, password):
    """
    メールアドレスとパスワードからステータスコードを出す。
    ステータスコードによって認証が正しく行われているかを判別する。
    """

    # メールアドレスとパスワードからTogglのAPIに接続する。
    r = requests.get('https://www.toggl.com/api/v8/me',
    auth = requests.auth.HTTPBasicAuth(email, password))

    # TogglのAPIに接続できているかの確認(200が出ればOK!)
    status = r.status_code
    if status == 200:
        return True
    else:
        return False

Bottleでサクッと試したい場合は、以下のコードをコピペすれば動くと思います。
以下のページを参考にしました。
Pythonで一番小さいWEBフレームワークbottle.py その3(GET,POST)

# coding:utf-8
from bottle import route, run, template, post, request
import requests
from requests.auth import HTTPBasicAuth
import json
from json import loads

def check_status_code(email, password):
    """
    メールアドレスとパスワードからステータスコードを出す。
    ステータスコードによって認証が正しく行われているかを判別する。
    """

    # メールアドレスとパスワードからTogglのAPIに接続する。
    r = requests.get('https://www.toggl.com/api/v8/me',
    auth = requests.auth.HTTPBasicAuth(email, password))

    # TogglのAPIに接続できているかの確認(200が出ればOK!)
    status = r.status_code
    if status == 200:
        return True
    else:
        return False

@get('/') # or @route('/')
def login():
    """
    GETで/にアクセスした際の処理
    """
    return '''
        <form action="/" method="post">
            Email: <input name="email" type="text" /><br>
            Password: <input name="password" type="password" />
            <input value="登録" type="submit" />
        </form>
    '''

@post('/') # or @route('/', method='POST')
def do_login():
    """
    POSTで/にアクセスした際の処理
    """
    # フォームからPOSTされたデータを取得する
    email = request.forms.get('email')
    password = request.forms.get('password')
    # ログイン判定を行う
    if check_status_code(email, password):
        return template("<p>ログインに成功しました。あなたのメールアドレスは {{email}}です。</p>", email=email)
    else:
        return  "<p>メールアドレスまたはパスワードが間違っています。</p>"

if __name__ == "__main__":
    # テスト用のサーバをlocalhost:8080で起動する
    # reloader=Trueにより、ソースを書き換えると自動的に再起動される
    run(host='localhost', port=8080)

実行結果

Emailとパスワードを入力するフォームが表示される。

メールアドレスとパスワードが正しければ、メールアドレスが表示されます。

メールアドレスとパスワードが間違っていれば、以下のように表示されます。

今後やること

  • メールアドレスとパスワードが間違っている場合、フォームの下に「メールアドレスまたはパスワードが間違っています」と表示されるようにしたい。
  • データをエクスポートしたい日を入力できるようにする。できれば、カレンダーから日付を選択できるようにする(JavaScript使えばいけるだろう…)。
  • 認証に成功した場合、入力した日のTogglのデータをエクスポートする。

コメント

タイトルとURLをコピーしました