Current section
Files
Jump to
Current section
Files
lib/voodoo/order.ex
defmodule Voodoo.Order do
@moduledoc """
Handle orders for Voodoo Mfg
(https://github.com/oortlieb/voodoo-api#api-endpoints)
"""
alias Voodoo.Util
@endpoint "/order"
@doc """
Get a direct print redirect url
## Examples
params = %{
file_url: "http://website.com/file.stl",
material_id: 7,
quantity: 1
}
{:ok, result} = Voodoo.Order.direct_print(params)
"""
def direct_print(params) do
url = @endpoint <> "/direct-print"
opts = Util.prepare_params(params)
Voodoo.make_request(:get, url, %{}, opts)
|> Util.handle_voodoo_response
end
@doc """
Get shipping rates
## Examples
params = %{models: [
%{material_id: 7,
model_id: 1696,
qty: 1,
units: "mm"}
],
shipping_info: %{
city: "foo",
name: "bar",
zip: "12345",
street1: "123 foo st",
street2: "#1",
state: "CA",
country: "USA"
}
}
{:ok, result} = Voodoo.Order.shipping_rates(params)
"""
def shipping_rates(params) do
url = @endpoint <> "/shipping"
body = params
Voodoo.make_request(:post, url, body)
|> Util.handle_voodoo_response
end
@doc """
Create an order
## Examples
params = %{models: [
%{material_id: 44,
model_id: 1693,
qty: 1,
units: "mm"}
],
shipment_id: "rate_0b011e90eb824e8ab72cbae2e4b7dda9"
}
{:ok, result} = Voodoo.Order.create(params)
"""
def create(params) do
url = @endpoint <> "/create"
body = params
Voodoo.make_request(:post, url, body)
|> Util.handle_voodoo_response
end
@doc """
Get confirmation of order
## Examples
params = %{quote_id: "f02af79251d5018ac7afeba4e3bc1dd34ee1fdc6f12a883a23a6f317eff77ddf"}
{:ok, result} = Voodoo.Order.confirm(params)
"""
def confirm(params) do
url = @endpoint <> "/confirm"
body = params
Voodoo.make_request(:post, url, body)
|> Util.handle_voodoo_response
end
end