defmodule Maxwell do
@moduledoc """
The maxwell specification.
There are two kind of usages: basic usage and advanced middleware usage.
### Basic Usage
## Returns Origin IP, for example %{"origin" => "127.0.0.1"}
"http://httpbin.org/ip"
|> Maxwell.Conn.new()
|> Maxwell.get!()
|> Maxwell.Conn.get_resp_body()
|> Poison.decode!()
Find all `get_*&put_*` helper functions by `h Maxwell.Conn.xxx`
### Advanced Middleware Usage(Create API Client).
defmodule Client do
use Maxwell.Builder, ~w(get)a
adapter Maxwell.Adapter.Ibrowse
middleware Maxwell.Middleware.BaseUrl, "http://httpbin.org"
middleware Maxwell.Middleware.Opts, [connect_timeout: 5000]
middleware Maxwell.Middleware.Headers, %{"User-Agent" => "zhongwencool"}
middleware Maxwell.Middleware.Json
## Returns origin IP, for example "127.0.0.1"
def ip() do
"/ip"
|> new()
|> get!()
|> get_resp_body("origin")
end
## Generates n random bytes of binary data, accepts optional seed integer parameter
def get_random_bytes(size) do
"/bytes/\#\{size\}"
|> new()
|> get!()
|> get_resp_body(&to_string/1)
end
end
"""
use Maxwell.Builder
end