ElixirのHTTP ClientライブラリReqでベーシック認証を楽しんでみる


わびぬれば今はた同じなにはなるみをつくしてもあはむとぞ思ふ

ReqはヤングなHTTP Clientライブラリです。
この記事の内容はすでに古くなっているかもしれません。
https://hexdocs.pm/req/Req.html
をご確認ください。


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


はじめに

Elixirを楽しんでいますか

ElixirのHTTP ClientライブラリReqでベーシック認証の楽しみ方がわかりましたので書いておきます。

題材

Bitbucketからアクセストークンを取得するAPIをReqで使ってみます。

curl

サンプルとしてcurlを使用した例を示します。

$ curl -X POST -u "client_id:secret" \
  https://bitbucket.org/site/oauth2/access_token \
  -d grant_type=client_credentials

これをElixirで書いてみるわけです。

参考記事

client_id:secretについては上記の記事を参考にしてください。

プログラム

この記事のハイライトです。
ElixirのHTTP ClientライブラリReqでベーシック認証を楽しんでみます。

Mix.install([
  {:req, "~> 0.2.1"}
])

client_id = "client id"
secret = "secret"

%{body: body, status: 200} =
  Req.post!(
    "https://bitbucket.org/site/oauth2/access_token",
    {:form, [grant_type: "client_credentials"]},
    auth: {client_id, secret}
  )

access_token = Map.get(body, "access_token")

Req.post!/3の第3引数にauth: {client_id, secret}というふうに指定をします。

どうでしょうか?
楽しんでいただけましたでしょうか!

公式ドキュメントの記述

公式ドキュメントは、こちらにベーシック認証に関して書かれています。

ぼーっとなんとな〜く眺めていてみつけました。


Wrapping up

この記事は、ElixirのHTTP ClientライブラリReqでベーシック認証の楽しみ方がわかりましたので書いておきました。

やコメントは、励みになりますし、私はちょっぴりハゲています。

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

以上です。

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