delika API Version 1 をElixirのReqで呼び出すことを楽しむ


山川に風のかけたるしがらみは流れもあへぬもみぢなりけり

Advent Calendar 2022 82日目1の記事です。
I'm looking forward to 12/25,2022
私のAdvent Calendar 2022 一覧


はじめに

データに関する記事を書こう!」と銘打たれたイベントが開催中です。

この記事は、 テーマ1 『delikaを使った記事を書こう!』 の参加記事です。
delika API Version 1を使用してみます。
Elixirで楽しんでみます。

自分自身で書きました「delika API Version 1 をcurlで呼び出してみる」の後続記事です。

前提

以下を前提とします。

  • delikaのSign upを済ませておいてください
  • delika API Version 1の基本的な使い方を理解しておいてください

delika API Version 1ドキュメントを読んでいただくか、私が書いた「delika API Version 1 をcurlで呼び出してみる」を参考にしてください。

Elixirのプログラム

Refresh Tokenは、 https://api.delika.io/v1/auth にブラウザでアクセスしSign inすることで得てください。
HTTPクライアントはReqを使用しています。
JSONのライブラリJasonが漏れなく付いてきます。

delika_api.exs
Mix.install([:req])

body =
  %{
    "RefreshToken" => "あなたが得たRefresh Token"
  }
  |> Jason.encode!()

%{body: %{"Data" => %{"AccessToken" => access_token}, "Status" => %{"Code" => 200}}, status: 200} =
  Req.post!("https://api.delika.io/v1/auth/token", body,
    headers: ["Content-Type": "application/json"], # この指定は必須です
    finch_options: [pool_timeout: 50000, receive_timeout: 50000]
  )

Req.get!("https://api.delika.io/v1/account/connecto-data/datasets",
  headers: [Authorization: "bearer #{access_token}"],
  finch_options: [pool_timeout: 50000, receive_timeout: 50000]
)
|> Map.get(:body)
|> IO.inspect()

実行

Mix.install/2を使っています。
そのため、Elixir1.12 or laterを使用してください。
さきほど示したプログラムのファイル名は、delika_api.exsとします。

elixir delika_api.exs

結果(2022-03-22 22:42JST)

実行結果は以下のようになりました

%{
  "Data" => %{
    "DatasetCount" => 2,
    "DatasetList" => [
      %{"AccountName" => "connecto-data", "DatasetName" => "ds-skills"},
      %{"AccountName" => "connecto-data", "DatasetName" => "survey"}
    ]
  },
  "Status" => %{"Code" => 200, "Message" => "Found 2 datasets."}
}

Wrapping up

この記事では、 delika API Version 1Elixirでコールする方法を示しました。
私は楽しみました。

Enjoy Elixir
$\huge{Enjoy\ Elixir🚀}$

以上です。


尚々書

delikaElixirで楽しむ準備は着々と進んでいます。


I organize autoracex.
And I take part in NervesJP, fukuoka.ex, EDI, tokyo.ex, Pelemay.
I hope someday you'll join us.

We Are The Alchemists, my friends!

  1. @kaizen_nagoya さんの「「@e99h2121 アドベントカレンダーではありますまいか Advent Calendar 2020」の改訂版ではありますまいか Advent Calendar 2022 1日目 Most Breakthrough Generator」から着想を得て、模倣いたしました。