1
0
mirror of https://github.com/avitex/elixir-vultr synced 2024-12-21 16:19:58 +00:00

Remove tesla dependency

This commit is contained in:
avitex 2017-10-13 21:18:43 +11:00
parent 621359349a
commit a1f08f09f0
4 changed files with 173 additions and 165 deletions

View File

@ -1,26 +1,12 @@
defmodule Vultr do
use Tesla, docs: false
use Vultr.Request
plug Tesla.Middleware.BaseUrl, "https://api.vultr.com/v1"
plug Tesla.Middleware.FormUrlencoded
plug Tesla.Middleware.DecodeJson
adapter :ibrowse
@doc """
Create a Vultr client with an API-Key for authenticated methods
"""
def client(api_key) do
Tesla.build_client [
{Tesla.Middleware.Headers, %{ "API-Key" => api_key }}
]
end
use Vultr.Request, [
base_url: "https://api.vultr.com/",
]
##################################################
# Account
request :get, "account/info", [
request :get, "v1", "account/info", [
desc: """
Retrieve information about the current account.
""",
@ -31,7 +17,7 @@ defmodule Vultr do
##################################################
# Application
request :get, "app/list", [
request :get, "v1", "app/list", [
desc: """
Retrieve a list of available applications.
@ -42,7 +28,7 @@ defmodule Vultr do
##################################################
# API Key
request :get, "auth/info", [
request :get, "v1", "auth/info", [
desc: """
Retrieve information about the current API key.
""",
@ -52,7 +38,7 @@ defmodule Vultr do
##################################################
# Backup
request :get, "backup/list", [
request :get, "v1", "backup/list", [
desc: """
List all backups on the current account.
""",
@ -73,7 +59,7 @@ defmodule Vultr do
##################################################
# Block Storage
request :post, "block/attach", [
request :post, "v1", "block/attach", [
desc: """
Attach a block storage subscription to a VPS subscription.
@ -97,7 +83,7 @@ defmodule Vultr do
},
]
request :post, "block/create", [
request :post, "v1", "block/create", [
desc: """
Create a block storage subscription.
""",
@ -127,7 +113,7 @@ defmodule Vultr do
},
]
request :post, "block/delete", [
request :post, "v1", "block/delete", [
desc: """
Delete a block storage subscription.
@ -146,7 +132,7 @@ defmodule Vultr do
},
]
request :post, "block/detach", [
request :post, "v1", "block/detach", [
desc: """
Detach a block storage subscription from the currently attached instance.
""",
@ -162,7 +148,7 @@ defmodule Vultr do
},
]
request :post, "block/label_set", [
request :post, "v1", "block/label_set", [
desc: """
Set the label of a block storage subscription.
""",
@ -184,7 +170,7 @@ defmodule Vultr do
},
]
request :get, "block/list", [
request :get, "v1", "block/list", [
desc: """
Retrieve a list of any active block storage subscriptions on this account.
""",
@ -202,7 +188,7 @@ defmodule Vultr do
},
]
request :post, "block/resize", [
request :post, "v1", "block/resize", [
desc: """
Resize the block storage volume to a new size.
@ -229,7 +215,7 @@ defmodule Vultr do
##################################################
# DNS
request :post, "dns/create_domain", [
request :post, "v1", "dns/create_domain", [
desc: """
Create a domain name in DNS.
""",
@ -251,7 +237,7 @@ defmodule Vultr do
},
]
request :post, "dns/create_record", [
request :post, "v1", "dns/create_record", [
desc: """
Add a DNS record.
""",
@ -298,7 +284,7 @@ defmodule Vultr do
},
]
request :post, "dns/delete_domain", [
request :post, "v1", "dns/delete_domain", [
desc: """
Delete a domain name and all associated records.
""",
@ -314,7 +300,7 @@ defmodule Vultr do
},
]
request :post, "dns/delete_record", [
request :post, "v1", "dns/delete_record", [
desc: """
Delete an individual DNS record.
""",
@ -337,7 +323,7 @@ defmodule Vultr do
},
]
request :get, "dns/list", [
request :get, "v1", "dns/list", [
desc: """
List all domains associated with the current account.
""",
@ -345,7 +331,7 @@ defmodule Vultr do
required_access: :dns,
]
request :get, "dns/records", [
request :get, "v1", "dns/records", [
desc: """
List all the records associated with a particular domain.
""",
@ -361,7 +347,7 @@ defmodule Vultr do
},
]
request :post, "dns/update_record", [
request :post, "v1", "dns/update_record", [
desc: """
Update a DNS record.
""",
@ -415,7 +401,7 @@ defmodule Vultr do
##################################################
# ISO Image
request :get, "iso/list", [
request :get, "v1", "iso/list", [
desc: """
List all ISOs currently available on this account.
""",
@ -426,7 +412,7 @@ defmodule Vultr do
##################################################
# Operating System
request :get, "os/list", [
request :get, "v1", "os/list", [
desc: """
Retrieve a list of available operating systems.
@ -437,7 +423,7 @@ defmodule Vultr do
##################################################
# Plans
request :get, "plans/list", [
request :get, "v1", "plans/list", [
desc: """
Retrieve a list of all active plans. Plans that are no longer available will not be shown.
@ -460,7 +446,7 @@ defmodule Vultr do
},
]
request :get, "plans/list_vc2", [
request :get, "v1", "plans/list_vc2", [
desc: """
Retrieve a list of all active vc2 plans. Plans that are no longer available will not be shown.
@ -470,7 +456,7 @@ defmodule Vultr do
""",
]
request :get, "plans/list_vdc2", [
request :get, "v1", "plans/list_vdc2", [
desc: """
Retrieve a list of all active vdc2 plans. Plans that are no longer available will not be shown.
@ -483,7 +469,7 @@ defmodule Vultr do
##################################################
# Regions
request :get, "regions/availability", [
request :get, "v1", "regions/availability", [
desc: """
Retrieve a list of the `VPSPLANID`s currently available in this location.
@ -501,7 +487,7 @@ defmodule Vultr do
},
]
request :get, "regions/list", [
request :get, "v1", "regions/list", [
desc: """
Retrieve a list of all active regions.
@ -512,7 +498,7 @@ defmodule Vultr do
##################################################
# Reserved IP
request :post, "reservedip/attach", [
request :post, "v1", "reservedip/attach", [
desc: """
Attach a reserved IP to an existing subscription.
""",
@ -534,7 +520,7 @@ defmodule Vultr do
},
]
request :post, "reservedip/convert", [
request :post, "v1", "reservedip/convert", [
desc: """
Convert an existing IP on a subscription to a reserved IP.
@ -565,7 +551,7 @@ defmodule Vultr do
},
]
request :post, "reservedip/create", [
request :post, "v1", "reservedip/create", [
desc: """
Create a new reserved IP.
@ -598,7 +584,7 @@ defmodule Vultr do
},
]
request :post, "reservedip/destroy", [
request :post, "v1", "reservedip/destroy", [
desc: """
Remove a reserved IP from your account.
@ -616,7 +602,7 @@ defmodule Vultr do
},
]
request :post, "reservedip/detach", [
request :post, "v1", "reservedip/detach", [
desc: """
Detach a reserved IP from an existing subscription.
""",
@ -638,7 +624,7 @@ defmodule Vultr do
},
]
request :get, "reservedip/list", [
request :get, "v1", "reservedip/list", [
desc: """
List all the active reserved IPs on this account.
@ -652,7 +638,7 @@ defmodule Vultr do
##################################################
# Server
request :post, "server/app_change", [
request :post, "v1", "server/app_change", [
desc: """
Changes the virtual machine to a different application.
@ -678,7 +664,7 @@ defmodule Vultr do
},
]
request :get, "server/app_change_list", [
request :get, "v1", "server/app_change_list", [
desc: """
Retrieves a list of applications to which a virtual machine can be changed.
@ -697,7 +683,7 @@ defmodule Vultr do
},
]
request :post, "server/backup_disable", [
request :post, "v1", "server/backup_disable", [
desc: """
Disables automatic backups on a server.
@ -716,7 +702,7 @@ defmodule Vultr do
},
]
request :post, "server/backup_enable", [
request :post, "v1", "server/backup_enable", [
desc: """
Enables automatic backups on a server.
""",
@ -733,7 +719,7 @@ defmodule Vultr do
},
]
request :post, "server/backup_get_schedule", [
request :post, "v1", "server/backup_get_schedule", [
desc: """
Retrieves the backup schedule for a server.
@ -752,7 +738,7 @@ defmodule Vultr do
},
]
request :post, "server/backup_set_schedule", [
request :post, "v1", "server/backup_set_schedule", [
desc: """
Sets the backup schedule for a server.
@ -802,7 +788,7 @@ defmodule Vultr do
},
]
request :get, "server/bandwidth", [
request :get, "v1", "server/bandwidth", [
desc: """
Get the bandwidth used by a virtual machine.
""",
@ -819,7 +805,7 @@ defmodule Vultr do
},
]
request :post, "server/create", [
request :post, "v1", "server/create", [
desc: """
Create a new virtual machine.
@ -973,7 +959,7 @@ defmodule Vultr do
},
]
request :post, "server/create_ipv4", [
request :post, "v1", "server/create_ipv4", [
desc: """
Add a new IPv4 address to a server.
@ -1002,7 +988,7 @@ defmodule Vultr do
},
]
request :post, "server/destroy", [
request :post, "v1", "server/destroy", [
desc: """
Destroy (delete) a virtual machine.
@ -1022,7 +1008,7 @@ defmodule Vultr do
},
]
request :post, "server/destroy_ipv4", [
request :post, "v1", "server/destroy_ipv4", [
desc: """
Removes a secondary IPv4 address from a server.
@ -1042,7 +1028,7 @@ defmodule Vultr do
},
]
request :get, "server/get_app_info", [
request :get, "v1", "server/get_app_info", [
desc: """
Retrieves the application information for this subscription.
""",
@ -1059,7 +1045,7 @@ defmodule Vultr do
},
]
request :get, "server/get_user_data", [
request :get, "v1", "server/get_user_data", [
desc: """
Retrieves the (base64 encoded) user-data for this subscription.
""",
@ -1076,7 +1062,7 @@ defmodule Vultr do
},
]
request :post, "server/halt", [
request :post, "v1", "server/halt", [
desc: """
Halt a virtual machine. This is a hard power off (basically, unplugging the machine).
@ -1096,7 +1082,7 @@ defmodule Vultr do
},
]
request :post, "server/iso_attach", [
request :post, "v1", "server/iso_attach", [
desc: """
Attach an ISO and reboot the server.
""",
@ -1120,7 +1106,7 @@ defmodule Vultr do
},
]
request :post, "server/iso_detach", [
request :post, "v1", "server/iso_detach", [
desc: """
Detach the currently mounted ISO and reboot the server.
""",
@ -1137,7 +1123,7 @@ defmodule Vultr do
},
]
request :get, "server/iso_status", [
request :get, "v1", "server/iso_status", [
desc: """
Retrieve the current ISO state for a given subscription.
@ -1157,7 +1143,7 @@ defmodule Vultr do
},
]
request :post, "server/label_set", [
request :post, "v1", "server/label_set", [
desc: """
Set the label of a virtual machine.
""",
@ -1180,7 +1166,7 @@ defmodule Vultr do
},
]
request :get, "server/list", [
request :get, "v1", "server/list", [
desc: """
List all active or pending virtual machines on the current account.
@ -1232,7 +1218,7 @@ defmodule Vultr do
},
]
request :get, "server/list_ipv4", [
request :get, "v1", "server/list_ipv4", [
desc: """
List the IPv4 information of a virtual machine.
@ -1242,7 +1228,7 @@ defmodule Vultr do
required_access: :subscriptions,
]
request :get, "server/list_ipv6", [
request :get, "v1", "server/list_ipv6", [
desc: """
List the IPv6 information of a virtual machine.
@ -1253,7 +1239,7 @@ defmodule Vultr do
required_access: :subscriptions,
]
request :get, "server/neighbors", [
request :get, "v1", "server/neighbors", [
desc: """
Determine what other subscriptions are hosted on the same physical host as a given subscription.
""",
@ -1270,7 +1256,7 @@ defmodule Vultr do
},
]
request :post, "server/os_change", [
request :post, "v1", "server/os_change", [
desc: """
Changes the virtual machine to a different operating system.
@ -1296,7 +1282,7 @@ defmodule Vultr do
},
]
request :get, "server/os_change_list", [
request :get, "v1", "server/os_change_list", [
desc: """
Retrieves a list of operating systems to which a virtual machine can be changed.
@ -1316,7 +1302,7 @@ defmodule Vultr do
},
]
request :post, "server/reboot", [
request :post, "v1", "server/reboot", [
desc: """
Reboot a virtual machine.
@ -1335,7 +1321,7 @@ defmodule Vultr do
},
]
request :post, "server/reinstall", [
request :post, "v1", "server/reinstall", [
desc: """
Reinstall the operating system on a virtual machine.
@ -1362,7 +1348,7 @@ defmodule Vultr do
},
]
request :post, "server/restore_backup", [
request :post, "v1", "server/restore_backup", [
desc: """
Restore the specified backup to the virtual machine.
@ -1388,7 +1374,7 @@ defmodule Vultr do
},
]
request :post, "server/restore_snapshot", [
request :post, "v1", "server/restore_snapshot", [
desc: """
Restore the specified snapshot to the virtual machine.
@ -1414,7 +1400,7 @@ defmodule Vultr do
},
]
request :post, "server/reverse_default_ipv4", [
request :post, "v1", "server/reverse_default_ipv4", [
desc: """
Set a reverse DNS entry for an IPv4 address of a virtual machine to the original setting.
@ -1440,7 +1426,7 @@ defmodule Vultr do
},
]
request :post, "server/reverse_delete_ipv6", [
request :post, "v1", "server/reverse_delete_ipv6", [
desc: """
Remove a reverse DNS entry for an IPv6 address of a virtual machine.
@ -1466,7 +1452,7 @@ defmodule Vultr do
},
]
request :get, "server/reverse_list_ipv6", [
request :get, "v1", "server/reverse_list_ipv6", [
desc: """
List the IPv6 reverse DNS entries of a virtual machine.
@ -1486,7 +1472,7 @@ defmodule Vultr do
},
]
request :post, "server/reverse_set_ipv4", [
request :post, "v1", "server/reverse_set_ipv4", [
desc: """
Set a reverse DNS entry for an IPv4 address of a virtual machine.
@ -1518,7 +1504,7 @@ defmodule Vultr do
},
]
request :post, "server/reverse_set_ipv6", [
request :post, "v1", "server/reverse_set_ipv6", [
desc: """
Set a reverse DNS entry for an IPv6 address of a virtual machine.
@ -1550,7 +1536,7 @@ defmodule Vultr do
},
]
request :post, "server/set_user_data", [
request :post, "v1", "server/set_user_data", [
desc: """
Sets the cloud-init user-data for this subscription.
@ -1575,7 +1561,7 @@ defmodule Vultr do
},
]
request :post, "server/start", [
request :post, "v1", "server/start", [
desc: """
Start a virtual machine.
@ -1594,7 +1580,7 @@ defmodule Vultr do
},
]
request :post, "server/upgrade_plan", [
request :post, "v1", "server/upgrade_plan", [
desc: """
Upgrade the plan of a virtual machine.
@ -1620,7 +1606,7 @@ defmodule Vultr do
},
]
request :post, "server/upgrade_plan_list", [
request :post, "v1", "server/upgrade_plan_list", [
desc: """
Retrieve a list of the VPSPLANIDs for which a virtual machine can be upgraded.
@ -1642,7 +1628,7 @@ defmodule Vultr do
##################################################
# Snapshot
request :post, "snapshot/create", [
request :post, "v1", "snapshot/create", [
desc: """
Create a snapshot from an existing virtual machine.
@ -1668,7 +1654,7 @@ defmodule Vultr do
},
]
request :post, "snapshot/destroy", [
request :post, "v1", "snapshot/destroy", [
desc: """
Destroy (delete) a snapshot.
@ -1687,7 +1673,7 @@ defmodule Vultr do
},
]
request :get, "snapshot/list", [
request :get, "v1", "snapshot/list", [
desc: """
List all snapshots on the current account.
""",
@ -1698,7 +1684,7 @@ defmodule Vultr do
##################################################
# SSH Key
request :post, "sshkey/create", [
request :post, "v1", "sshkey/create", [
desc: """
Create a new SSH Key.
""",
@ -1720,7 +1706,7 @@ defmodule Vultr do
},
]
request :post, "sshkey/destroy", [
request :post, "v1", "sshkey/destroy", [
desc: """
Remove a SSH key.
@ -1739,7 +1725,7 @@ defmodule Vultr do
},
]
request :get, "sshkey/list", [
request :get, "v1", "sshkey/list", [
desc: """
List all the SSH keys on the current account.
""",
@ -1747,7 +1733,7 @@ defmodule Vultr do
required_access: :subscriptions,
]
request :post, "sshkey/update", [
request :post, "v1", "sshkey/update", [
desc: """
Update an existing SSH Key.
@ -1784,7 +1770,7 @@ defmodule Vultr do
##################################################
# Startup Script
request :post, "startupscript/create", [
request :post, "v1", "startupscript/create", [
desc: """
Create a startup script.
""",
@ -1814,7 +1800,7 @@ defmodule Vultr do
},
]
request :post, "startupscript/destroy", [
request :post, "v1", "startupscript/destroy", [
desc: """
Remove a startup script.
""",
@ -1830,7 +1816,7 @@ defmodule Vultr do
},
]
request :get, "startupscript/list", [
request :get, "v1", "startupscript/list", [
desc: """
List all startup scripts on the current account.
@ -1841,7 +1827,7 @@ defmodule Vultr do
required_access: :subscriptions,
]
request :post, "startupscript/update", [
request :post, "v1", "startupscript/update", [
desc: """
Update an existing startup script.
""",
@ -1875,7 +1861,7 @@ defmodule Vultr do
##################################################
# User Management
request :post, "user/create", [
request :post, "v1", "user/create", [
desc: """
Create a new user.
""",
@ -1916,7 +1902,7 @@ defmodule Vultr do
},
]
request :post, "user/delete", [
request :post, "v1", "user/delete", [
desc: """
Delete a user.
""",
@ -1932,7 +1918,7 @@ defmodule Vultr do
},
]
request :get, "user/list", [
request :get, "v1", "user/list", [
desc: """
Retrieve a list of any users associated with this account.
@ -1951,7 +1937,7 @@ defmodule Vultr do
required_access: :manage_users,
]
request :post, "user/update", [
request :post, "v1", "user/update", [
desc: """
Update the details for a user.
""",

View File

@ -6,22 +6,32 @@ defmodule Vultr.Request do
:isoid, :scriptid, :snapshotid, :sshkeyid, :backupid, :userid,
]
defmacro __using__(_) do
defmacro __using__(options) do
module = __CALLER__.module
Module.register_attribute(module, :__request_opts__, persist: true)
Module.put_attribute(module, :__request_opts__, options)
quote do
import Vultr.Request, only: [request: 3]
import Vultr.Request, only: [request: 4]
end
end
defmacro request(endpoint_method, endpoint_path, endpoint_opts) do
defmacro request(endpoint_method, endpoint_version, endpoint_path, endpoint_opts) do
request_opts = Module.get_attribute(__CALLER__.module, :__request_opts__)
base_url = Keyword.fetch!(request_opts, :base_url)
endpoint_params = Keyword.get(endpoint_opts, :params, {nil, nil, []}) |> normalize_params
endpoint_versioned_path = Path.join([endpoint_version, endpoint_path])
endpoint_url = URI.merge(base_url, endpoint_versioned_path) |> to_string
endpoint_description = Keyword.fetch!(endpoint_opts, :desc)
endpoint_requires_api_key = Keyword.get(endpoint_opts, :api_key, nil)
endpoint_required_access = Keyword.get(endpoint_opts, :required_access, nil)
endpoint_has_params = (length(endpoint_params) > 0)
common_args = [__CALLER__.module, endpoint_method, endpoint_path]
common_args = [endpoint_method, endpoint_url]
func = &__MODULE__.perform_request/5
func = &__MODULE__.perform_request/4
func_name =
endpoint_path
@ -29,7 +39,7 @@ defmodule Vultr.Request do
|> String.to_atom
func_doc = gen_doc(
endpoint_method, endpoint_path,
endpoint_method, endpoint_versioned_path,
endpoint_description, endpoint_params,
endpoint_required_access, endpoint_requires_api_key
)
@ -38,14 +48,14 @@ defmodule Vultr.Request do
cond do
endpoint_requires_api_key && endpoint_has_params ->
quote do
def unquote(func_name)(client, params \\ []) when is_list(params) do
unquote(func).(unquote_splicing(common_args), client, params)
def unquote(func_name)(api_key, params \\ []) when is_list(params) do
unquote(func).(unquote_splicing(common_args), api_key, params)
end
end
endpoint_requires_api_key ->
quote do
def unquote(func_name)(client) do
unquote(func).(unquote_splicing(common_args), client, [])
def unquote(func_name)(api_key) do
unquote(func).(unquote_splicing(common_args), api_key, [])
end
end
endpoint_has_params ->
@ -68,24 +78,43 @@ defmodule Vultr.Request do
end
end
def perform_request(caller, method, url, client, params) do
opts = [url: url, method: method] ++ prepare_params(method, params)
resp = Tesla.perform_request(caller, client, opts)
case resp.status do
200 -> {:ok, resp.body}
400 -> {:error, :invalid_api_location, resp.body}
403 -> {:error, :invalid_api_key, resp.body}
405 -> {:error, :invalid_http_method, resp.body}
412 -> {:error, :bad_request, resp.body}
500 -> {:error, :server_error, resp.body}
503 -> {:error, :rate_limit, resp.body}
def perform_request(method, url, api_key, params) do
headers = prepare_api_key_header(api_key)
opts = [headers: headers] ++ prepare_params(method, params)
resp = HTTPotion.request(method, url, opts)
parsed_body = parse_body(resp)
case resp.status_code do
200 -> {:ok, parsed_body}
400 -> {:error, :invalid_api_location, parsed_body}
403 -> {:error, :invalid_api_key, parsed_body}
405 -> {:error, :invalid_http_method, parsed_body}
412 -> {:error, :bad_request, parsed_body}
500 -> {:error, :server_error, parsed_body}
503 -> {:error, :rate_limit, parsed_body}
end
end
defp prepare_params(:get, nil), do: [query: []]
defp prepare_params(_, nil), do: [body: %{}]
defp prepare_params(:get, params), do: [query: capitalize_special_params(params)]
defp prepare_params(_, params), do: [body: Enum.into(capitalize_special_params(params), %{})]
defp parse_body(%HTTPotion.Response{ body: body, headers: headers }) do
case HTTPotion.Headers.fetch(headers, "content-type") do
{:ok, "application/json"} ->
Poison.decode!(body)
_ ->
body
end
end
defp prepare_api_key_header(nil), do: []
defp prepare_api_key_header(api_key), do: ["API-Key": api_key]
defp prepare_params(:get, params), do: [query: prepare_query(params)]
defp prepare_params(_, params), do: [body: prepare_body(params)]
defp prepare_body(nil), do: ""
defp prepare_body(params), do: capitalize_special_params(params) |> Enum.into(%{}) |> Poison.encode!
defp prepare_query(nil), do: false
defp prepare_query(params), do: capitalize_special_params(params)
defp capitalize_special_params(params) do
Enum.map(params, fn {k, v} ->
@ -122,36 +151,42 @@ defmodule Vultr.Request do
# Documentation helpers
defp gen_doc(method, path, desc, params, required_access, api_key) do
doc = """
#{desc}
"""
doc =
if length(params) > 0 do
doc <> ("""
### Params
| Name | Type | Optional | Description |
| ---- | ---- | -------- | ----------- |
#{doc_params(params)}
""")
else
doc
end
doc <> """
#{desc}
#{doc_params(params)}
### Backend
- Method: `#{doc_method(method)}`
- Path: `/v1/#{path}`
- Path: `#{path}`
- API Key: `#{doc_api_key(api_key)}`
- Required Access: `#{doc_required_access(required_access)}`
"""
end
defp doc_param(param), do: """
| `#{String.downcase(param.name)}` | #{param.type_string} | #{doc_optional_default(param.optional, param.default)} | #{param.desc |> String.replace("\n", "<br>")} |
"""
defp doc_params([]), do: ""
defp doc_params(params) do
param_rows =
params
|> Enum.map(&doc_param/1)
|> Enum.join("")
defp doc_params(params), do: params |> Enum.map(&doc_param/1) |> Enum.join("")
"""
### Params
| Name | Type | Optional | Description |
| ---- | ---- | -------- | ----------- |
#{param_rows}
"""
end
defp doc_param(param) do
columns = [
"`#{String.downcase(param.name)}`",
param.type_string,
doc_optional_default(param.optional, param.default),
String.replace(param.desc, "\n", "<br>"),
]
"| #{Enum.join(columns, " | ")} |"
end
defp doc_optional_default(optional, default) do
if optional do
@ -167,13 +202,7 @@ defmodule Vultr.Request do
end
end
defp doc_method(method) do
if !Enum.any?([:get, :post], fn supported -> method == supported end) do
raise ArgumentError, message: "Bad method"
end
method |> Atom.to_string |> String.upcase
end
defp doc_method(method), do: method |> Atom.to_string |> String.upcase
defp doc_api_key(nil), do: "No"
defp doc_api_key(atm), do: atom_to_word(atm)

View File

@ -16,14 +16,13 @@ defmodule Vultr.Mixfile do
# Configuration for the OTP application
def application, do: [
applications: [:tesla, :ibrowse],
applications: [:httpotion],
]
defp deps, do: [
{:inch_ex, "~> 0.5", only: :docs},
{:ex_doc, "~> 0.16", only: :dev, runtime: false},
{:tesla, "~> 0.7.2"},
{:ibrowse, "~> 4.2"},
{:httpotion, "~> 3.0.2"},
{:poison, "~> 3.1"},
]

View File

@ -1,12 +1,6 @@
%{"certifi": {:hex, :certifi, "1.0.0", "1c787a85b1855ba354f0b8920392c19aa1d06b0ee1362f9141279620a5be2039", [:rebar3], []},
"earmark": {:hex, :earmark, "1.2.3", "206eb2e2ac1a794aa5256f3982de7a76bf4579ff91cb28d0e17ea2c9491e46a4", [:mix], []},
%{"earmark": {:hex, :earmark, "1.2.3", "206eb2e2ac1a794aa5256f3982de7a76bf4579ff91cb28d0e17ea2c9491e46a4", [:mix], []},
"ex_doc": {:hex, :ex_doc, "0.16.3", "cd2a4cfe5d26e37502d3ec776702c72efa1adfa24ed9ce723bb565f4c30bd31a", [:mix], [{:earmark, "~> 1.1", [hex: :earmark, optional: false]}]},
"hackney": {:hex, :hackney, "1.6.6", "5564b4695d48fd87859e9df77a7fa4b4d284d24519f0cd7cc898f09e8fbdc8a3", [:rebar3], [{:certifi, "1.0.0", [hex: :certifi, optional: false]}, {:idna, "4.0.0", [hex: :idna, optional: false]}, {:metrics, "1.0.1", [hex: :metrics, optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, optional: false]}, {:ssl_verify_fun, "1.1.1", [hex: :ssl_verify_fun, optional: false]}]},
"httpotion": {:hex, :httpotion, "3.0.3", "17096ea1a7c0b2df74509e9c15a82b670d66fc4d66e6ef584189f63a9759428d", [], [{:ibrowse, "~> 4.4", [hex: :ibrowse, repo: "hexpm", optional: false]}], "hexpm"},
"ibrowse": {:hex, :ibrowse, "4.4.0", "2d923325efe0d2cb09b9c6a047b2835a5eda69d8a47ed6ff8bc03628b764e991", [:rebar3], []},
"idna": {:hex, :idna, "4.0.0", "10aaa9f79d0b12cf0def53038547855b91144f1bfcc0ec73494f38bb7b9c4961", [:rebar3], []},
"inch_ex": {:hex, :inch_ex, "0.5.6", "418357418a553baa6d04eccd1b44171936817db61f4c0840112b420b8e378e67", [:mix], [{:poison, "~> 1.5 or ~> 2.0 or ~> 3.0", [hex: :poison, optional: false]}]},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], []},
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], []},
"poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], []},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.1", "28a4d65b7f59893bc2c7de786dec1e1555bd742d336043fe644ae956c3497fbe", [:make, :rebar], []},
"tesla": {:hex, :tesla, "0.7.2", "29290de334f1064e98c32d0ba5e73674fdbe53c17f8af7bcc686bf5002a30bab", [:mix], [{:exjsx, ">= 0.1.0", [hex: :exjsx, optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, optional: true]}, {:ibrowse, "~> 4.2", [hex: :ibrowse, optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, optional: true]}]}}
"poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], []}}