LoginSignup
4
1

More than 1 year has passed since last update.

Hex探訪 HTTPoison

Last updated at Posted at 2022-01-12

ときは今 あめが下しる 五月かな

Advent Calendar 2022 12日目1の記事です。
I'm ready for 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
I'm looking forward to 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
私のAdvent Calendar 2022 一覧

はじめに

Elixirを楽しんでいますか:bangbang::bangbang::bangbang:

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

今回は、HTTPoisonを探訪してみたいとおもいます。

この記事は、2022/01/12(水) 開催の「SORACOM UG 夜のもくもく会 #26」の成果です。

Hex探訪とは?

Hexを探訪するんです。

まずはHexを説明します。

Hexとは、Elixirのライブラリの総称です」とドヤ顔で書きました。
ちょっと待てよ、それって本当なのかなあと定義を読みに行きました。
間違いじゃないけど、Elixirに限定するのは違うようです。

Hex is a package manager for the BEAM ecosystem, any language that compiles to run on the BEAM VM, such as Elixir and Erlang, can be used to build Hex packages.

記事を書くっていうのはこうやって自分の知識のあやふやなところと、否応無しに向き合わざるを得ないわけです。
捉え方は人それぞれだとおもいますが、私は自分の知識がアップデートされることに喜びを感じます:rocket:
そして書いたことは、一切合財忘れてしまうのです。
$\huge{Qiitaは私の外部記憶装置です。}$
ありがとうございます!!!

話を「探訪」に戻します。
どこかに知らないところを訪れて、美しい景色をみたり、美味しいものを食べたりして、魅了されたその土地をさらに深く探検する ーー そんなイメージでよく使うHexを奥深くまで味わってみたいとおもっています。
ですから、Hexの使い方は説明しませんし、網羅的な内容とはなっておりません。

風の吹くまま気の向くまま、筆を進めてみます。
どこに終着するのかは自分自身でもわかりません。

この記事が直接的に誰かの役に立つとはおもっていません。
けれども視点なり、なにかsomethingを感じてもらえる人がいるとおもいます。
格好つけて言うと、この記事がバタフライエフェクト2の起点となる可能性はゼロではないとおもっています。

SORACOMさんとこの記事はどう関係するの?

たとえば、SORACOM HarvestにHTTP POSTする際にHTTPoisonを使います。

以前、SORACOM HarvestにHTTP POSTする記事を書いたなあ〜 とおもって、探してみました。

すばらしい! あった:rocket: あった:rocket:
HTTPoison.post/4を使って、SORACOM Harvestにデータ送信しているところだけここに転記しておきます。

Mix.install([{:httpoison, "~> 1.8"}, {:jason, "~> 1.2"}])

device_id = "your deviceId"
url = "https://api.soracom.io/v1/devices/#{device_id}/publish"
json = %{temp: 21} |> Jason.encode!()
secret_key = "your secretKey"
headers = ["Content-Type": "application/json", "x-device-secret": secret_key]

HTTPoison.post(url, json, headers)

ちゃんといまでもイゴく3ことを確認しました!!!

  • elixir 1.13.1-otp-24
  • erlang 24.2

いよいよ探訪です!

今日は、Erlangがでてきたら終わります。
だって、怖え〜んだもん。Erlangは漢です。
ラオウですよ。ラオウ。

HTTPoison.post/4関数の実装をErlangがでてくるまで読み解いていきます。

GitHubのリンクを貼っておきます。
上から順にポチポチ押してみてください。
私と同じ体験、探検ができます。

hackney - HTTP client library in Erlangまでたどり着きました!!!

へ〜、HTTPoisonってhackney - HTTP client library in ErlangというErlangのライブラリをラップしていたものだったのね。

HTTPoison uses hackney to execute HTTP requests instead of ibrowse. I like hackney 👍

ばっちりREADMEのTOPにすでに書いてあるね!!!

ポチポチ上のリンクを踏んでみてください。
Elixirの書き方の新たな知見を得られることもあるでしょう。

楽しんでください:rocket::rocket::rocket:

Wrapping up :lgtm::lgtm::lgtm::lgtm::lgtm:

Enjoy Elixir:bangbang::bangbang::bangbang:
Enjoy Nerves:bangbang::bangbang::bangbang:

$\huge{I\ like\ HTTPoison\ 👍}$

2022年に流行る技術予想 ーー それは、Nerves Livebookです:rocket::rocket::rocket:


I organize autoracex.
And I belong to NervesJP.
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」から着想を得て、模倣いたしました。  

  2. https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%BF%E3%83%95%E3%83%A9%E3%82%A4%E5%8A%B9%E6%9E%9C 

  3. 「動く」の意。おそらく西日本の方言、たぶん。NervesJPではおなじみ。少し古いオートレースの映像ですが、実況アナウンサーが「針4イゴきます」とはっきり言っています。https://autorace.jp/netstadium/SearchMovie/Movie/iizuka?date=2017-01-04&p=5&race_number=11&pg= 

  4. 大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。 

4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1