Current section

Files

Jump to
maxwell lib test.ex
Raw

lib/test.ex

defmodule Client do
#generate 4 function get/1, get!/1 post/1 post!/1 function
use Maxwell.Builder, ~w(get post)a
middleware Maxwell.Middleware.BaseUrl, "http://httpbin.org"
middleware Maxwell.Middleware.Headers, %{"Content-Type" => "application/json"}
middleware Maxwell.Middleware.Opts, [connect_timeout: 10000, recv_timeout: 20000]
middleware Maxwell.Middleware.Json
middleware Maxwell.Middleware.Logger
adapter Maxwell.Adapter.Hackney
@doc """
Simple get request
get origin ip
"""
def get_ip() do
new
|> put_path("/ip")
|> get!
|> get_resp_body("origin")
end
@doc """
Post whole file once
###Example
Client.post_file_once("./mix.exs")
"""
def post_file_once(filepath) do
new
|> put_path("/post")
|> put_req_body({:file, filepath})
|> post!
|> get_resp_body("data")
end
@doc """
Post whole file by chunked
###Example
Client.post_file_chunked("./mix.exs")
"""
def post_file_chunked(filepath) do
new
|> put_path("/post")
|> put_req_header("transfer_encoding", "chunked")
|> put_req_body({:file, filepath})
|> post!
|> get_resp_body("data")
end
@doc """
Post by stream
###Example
["1", "2", "3"] |> Stream.map(fn(x) -> List.duplicate(x, 2) end) |> Client.post_stream
"""
def post_stream(stream) do
new
|> put_path("/post")
|> put_req_body(stream)
|> post!
|> get_resp_body("data")
end
@doc """
Post multipart form
###Example
Client.post_multipart_form({:multipart, [{:file, "./mix.exs"}]})
"""
def post_multipart_form(multipart) do
new
|> put_path("/post")
|> put_req_body(multipart)
|> post!
|> get_resp_body("data")
end
end