at backyard

Color my life with the chaos of trouble.

GoでTodoistに登録しているプロジェクト一覧を取得する

夏休みの朝のラジオ体操よろしく、朝にGoで頭の準備体操をした。

Todoist APIを利用して、現在設定しているプロジェクトの一覧を取得するだけのスクリプト

Todoist APIについてはこちらにも以前書いていた。

shinshin86.hateblo.jp

プロジェクト一覧を取得するスクリプトのサンプル

参照したドキュメントは以下。

https://developer.todoist.com/rest/v1/?shell#getting-started

package main

import (
    "flag"
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

func main() {
    flag.Parse()

    if len(flag.Args()) == 0 {
        fmt.Println("ERROR: API token must be specified.")
        os.Exit(1)
    }

    token := flag.Args()[0]

    url := "https://api.todoist.com/rest/v1/projects"
    req, _ := http.NewRequest("GET", url, nil)
    bearer := "Bearer " + token
    req.Header.Add("Authorization", bearer)

    client := new(http.Client)
    resp, err := client.Do(req)

    if err != nil {
        fmt.Println("ERROR: http request error.")
        os.Exit(1)
    }

    defer resp.Body.Close()

    byteArray, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("ERROR: fetch data read error.")
        os.Exit(1)
    }

    fmt.Println(string(byteArray))
}

実行は以下のように引数にAPIトークンをしている方法で行う。

go run main.go <取得しているAPIトークン>