Current section

Files

Jump to
maxwell lib maxwell.ex
Raw

lib/maxwell.ex

defmodule Maxwell do
@moduledoc """
defmodule Client do
use Maxwell.Builder, ~w(get post put)a
adapter Maxwell.Adapter.Ibrowse
middleware Maxwell.Middleware.BaseUrl, "http://example.com"
middleware Maxwell.Middleware.Opts, [connect_timeout: 1000]
middleware Maxwell.Middleware.Headers, %{'User-Agent' => "zhongwencool"}
middleware Maxwell.Middleware.EncodeJson
middleware Maxwell.Middleware.DecodeJson
# get home page
# curl --header "User-Agent: zhongwencool" http://example.com
def home do
get!
end
# get help info with path
# curl --header "User-Agent: zhongwencool" http://example.com/help
def get_help do
url("/help) |> get!
end
# get user info with query
# curl --header "User-Agent: zhongwencool" http://example.com/user?name=username
def get_user_info(username) do
url("/user") |> query(%{name: username}) |> get!
end
# post user login with json
# curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' http://example.com/login
def login(username, password) do
url("/login") |> body(%{username: username, password: password}) |> post!
end
# upload put multipart form
# curl --form "file=@filepath" https://example.com/upload
def upload(filepath, username) do
url("/upload") |> query(%{username: username}) |> multipart([{:file, filepath}]) |> put!
end
# cover adapter(ibrowse) connect_timeout from 1000 to 6000
def delete(username) do
url("/delete") |> query(%{username: username}) |> opts([connect_timeout: 6000]) |> delete!
end
end
"""
defstruct url: "",
method: nil,
headers: %{},
body: nil,
opts: [],
status: nil
use Maxwell.Builder
end