lib/vultr.rb in vultr-0.1.1 vs lib/vultr.rb in vultr-0.2.0
- old
+ new
@@ -1,61 +1,106 @@
-require "faraday"
-require "faraday_middleware"
-require "vultr/version"
+require 'faraday'
+require 'faraday_middleware'
+require 'vultr/version'
module Vultr
extend self
DEFINITIONS = {
- Snapshot: {
- list: [:get, "/v1/snapshot/list?api_key=[api_key]"],
- destroy: [:post, "/v1/snapshot/destroy?api_key=[api_key]", "SNAPSHOTID"],
- create: [:post, "/v1/snapshot/create?api_key=[api_key]", "SUBID"]
+ Account: {
+ info: [:get, '/v1/account/info?api_key=[api_key]']
},
+ App: {
+ list: [:get, '/v1/app/list']
+ },
+ Backup: {
+ list: [:get, '/v1/backup/list?api_key=[api_key]']
+ },
+ DNS: {
+ create_domain: [:post, '/v1/dns/create_domain?api_key=[api_key]', ['domain', 'serverip']],
+ delete_domain: [:post, '/v1/dns/delete_domain?api_key=[api_key]', ['domain']],
+ create_record: [:post, '/v1/dns/create_record?api_key=[api_key]', ['domain', 'name', 'type', 'data', 'ttl', 'priority']],
+ delete_record: [:post, '/v1/dns/delete_record?api_key=[api_key]', ['domain', 'RECORDID']],
+ list: [:get, '/v1/dns/list?api_key=[api_key]'],
+ records: [:get, '/v1/dns/records?api_key=[api_key]&domain=[domain]']
+ },
+ ISO: {
+ list: [:get, '/v1/iso/list?api_key=[api_key]']
+ },
+ OS: {
+ list: [:get, '/v1/os/list']
+ },
Plan: {
- list: [:get, "/v1/plans/list"]
+ list: [:get, '/v1/plans/list']
},
Region: {
- list: [:get, "/v1/regions/list"],
- availability: [:get, "/v1/regions/availability?DCID=[DCID]"]
+ list: [:get, '/v1/regions/list'],
+ availability: [:get, '/v1/regions/availability?DCID=[DCID]']
},
- StartupScript: {
- list: [:get, "/v1/startupscript/list?api_key=[api_key]"],
- destroy: [:post, "/v1/startupscript/destroy?api_key=[api_key]", "SCRIPTID"],
- create: [:post, "/v1/startupscript/create?api_key=[api_key]", ["name", "script"]]
- },
Server: {
- list: [:get, "/v1/server/list?api_key=[api_key]"],
- reboot: [:post, "/v1/server/reboot?api_key=[api_key]", "SUBID"],
- halt: [:post, "/v1/server/halt?api_key=[api_key]", "SUBID"],
- start: [:post, "/v1/server/start?api_key=[api_key]", "SUBID"],
- destroy: [:post, "/v1/server/destroy?api_key=[api_key]", "SUBID"],
- create: [:post, "/v1/server/create?api_key=[api_key]",
- ["DCID", "VPSPLANID", "OSID", "ipxe_chain_url", "SCRIPTID", "SNAPSHOTID"]]
+ list: [:get, '/v1/server/list?api_key=[api_key]'],
+ reboot: [:post, '/v1/server/reboot?api_key=[api_key]', ['SUBID']],
+ halt: [:post, '/v1/server/halt?api_key=[api_key]', ['SUBID']],
+ start: [:post, '/v1/server/start?api_key=[api_key]', ['SUBID']],
+ destroy: [:post, '/v1/server/destroy?api_key=[api_key]', ['SUBID']],
+ create: [:post, '/v1/server/create?api_key=[api_key]',
+ ['DCID', 'VPSPLANID', 'OSID', 'ipxe_chain_url', 'ISOID', 'SCRIPTID', 'SNAPSHOTID',
+ 'enable_ipv6', 'enable_private_network', 'label', 'SSHKEYID', 'auto_backups', 'APPID']],
+ list_ipv4: [:get, '/v1/server/list_ipv4?api_key=[api_key]&SUBID=[SUBID]'],
+ create_ipv4: [:post, '/v1/server/create_ipv4?api_key=[api_key]', ['SUBID']],
+ destroy_ipv4: [:post, '/v1/server/destroy_ipv4?api_key=[api_key]', ['SUBID']],
+ list_ipv6: [:get, '/v1/server/list_ipv6?api_key=[api_key]&SUBID=[SUBID]'],
+ label_set: [:post, '/v1/server/label_set?api_key=[api_key]', ['SUBID', 'label']],
+ os_change: [:post, '/v1/server/os_change?api_key=[api_key]', ['SUBID', 'OSID']],
+ os_change_list: [:get, '/v1/server/os_change_list?api_key=[api_key]&SUBID=[SUBID]'],
+ reinstall: [:post, '/v1/server/reinstall?api_key=[api_key]', ['SUBID']],
+ restore_backup: [:post, '/v1/server/restore_backup?api_key=[api_key]', ['SUBID', 'BACKUPID']],
+ restore_snapshot: [:post, '/v1/server/restore_snapshot?api_key=[api_key]', ['SUBID', 'SNAPSHOTID']],
+ reverse_default_ipv4: [:post, '/v1/server/reverse_default_ipv4?api_key=[api_key]', ['SUBID', 'ip']],
+ reverse_delete_ipv6: [:post, '/v1/server/reverse_delete_ipv6?api_key=[api_key]', ['SUBID']],
+ reverse_list_ipv6: [:get, '/v1/server/reverse_list_ipv6?api_key=[api_key]&SUBID=[SUBID]'],
+ reverse_set_ipv4: [:post, '/v1/server/reverse_set_ipv4?api_key=[api_key]', ['SUBID', 'ip']],
+ reverse_set_ipv6: [:post, '/v1/server/reverse_set_ipv6?api_key=[api_key]', ['SUBID', 'ip']],
+ upgrade_plan: [:post, '/v1/server/upgrade_plan?api_key=[api_key]', ['SUBID', 'VPSPLANID']],
+ upgrade_plan_list: [:get, '/v1/server/upgrade_plan_list?api_key=[api_key]&SUBID=[SUBID]']
},
- OS: {
- list: [:get, "/v1/os/list"]
- }
+ Snapshot: {
+ list: [:get, '/v1/snapshot/list?api_key=[api_key]'],
+ destroy: [:post, '/v1/snapshot/destroy?api_key=[api_key]', ['SNAPSHOTID']],
+ create: [:post, '/v1/snapshot/create?api_key=[api_key]', ['SUBID']]
+ },
+ SSHKey: {
+ list: [:get, '/v1/sshkey/list?api_key=[api_key]'],
+ create: [:post, '/v1/sshkey/create?api_key=[api_key]', ['name', 'ssh_key']],
+ destroy: [:post, '/v1/sshkey/destroy?api_key=[api_key]', ['SSHKEYID']],
+ update: [:post, '/v1/sshkey/update?api_key=[api_key]', ['SSHKEYID', 'name', 'ssh_key']]
+ },
+ StartupScript: {
+ list: [:get, '/v1/startupscript/list?api_key=[api_key]'],
+ create: [:post, '/v1/startupscript/create?api_key=[api_key]', ['name', 'script', 'type']],
+ destroy: [:post, '/v1/startupscript/destroy?api_key=[api_key]', ['SCRIPTID']],
+ update: [:post, '/v1/startupscript/update?api_key=[api_key]', ['SCRIPTID', 'name', 'script']]
+ },
}
DEFINITIONS.each do |resource|
resource_name = resource[0]
resource_class = Class.new(Object) do
DEFINITIONS[resource_name].each do |action, array|
method_name = array[0]
- path, query = array[1].split("?")
+ path, query = array[1].split('?')
params = array[2]
define_singleton_method "_#{action}" do |*args|
query_for_method = Vultr.process_query_args_from_path(query, args)
- url = [Vultr.api_endpoint, path].join("")
+ url = [Vultr.api_endpoint, path].join('')
if query_for_method.nil?
url
else
- [url, query_for_method].join("?")
+ [url, query_for_method].join('?')
end
end
define_singleton_method action do |*args|
post_for_method = Vultr.process_params_args_from_keys(params, args)
@@ -82,15 +127,15 @@
@api_key
end
def api_key
return @api_key if @api_key
- "api_key_required"
+ 'api_key_required'
end
def api_endpoint
- "https://api.vultr.com"
+ 'https://api.vultr.com'
end
def request_and_respond(method_name, url, body = nil)
if body.nil?
resp = Vultr.request.send method_name, url
@@ -99,12 +144,12 @@
end
{status: resp.status, result: resp.body}
end
def process_api_key(parts)
- api_key_index = parts.index "api_key="
- api_key_index = parts.index "&api_key=" if !api_key_index
+ api_key_index = parts.index 'api_key='
+ api_key_index = parts.index '&api_key=' unless api_key_index
parts[api_key_index + 1] = api_key if api_key_index
parts
end
@@ -117,45 +162,45 @@
hash = args[-1]
if hash.is_a?(Hash)
hash.each do |key, value|
query_setter = "#{key}="
query_arg_index = parts.index query_setter
- query_arg_index = parts.index "&#{query_setter}" if !query_arg_index
+ query_arg_index = parts.index "&#{query_setter}" unless query_arg_index
unless query_arg_index.nil?
parts[query_arg_index+1] = value
end
end
end
- parts.join("")
+ parts.join('')
end
def process_params_args_from_keys(params, args)
return if params.nil?
body = Hash.new
hash = args[-1]
if hash.is_a?(Hash)
hash.each do |key, value|
- body[key] = value unless params.include? key
+ body[key] = value if params.include? key.to_s
end
end
body unless body.empty?
end
private
def setup_request!
options = {
- headers: {"Accept" => "application/json"},
+ headers: {:Accept => 'application/json'},
ssl: {verify: false}
}
Vultr.request = Faraday.new(options) do |faraday|
faraday.request :url_encoded
- faraday.response :json, :content_type => "application/json"
+ faraday.response :json, :content_type => 'application/json'
faraday.response :follow_redirects
faraday.adapter Faraday.default_adapter
end
end
end