class Dnsmadeeasyapi
Attributes
base_uri[RW]
Public Class Methods
new(api_key, api_secret, sandbox = false)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 11 def initialize (api_key, api_secret, sandbox = false) raise "api_key is undefined" unless api_key raise "api_secret is undefined" unless api_secret @api_key = api_key @api_secret = api_secret if sandbox self.base_uri = 'https://api.sandbox.dnsmadeeasy.com/V2.0' else self.base_uri = 'https://api.dnsmadeeasy.com/V2.0' end end
Public Instance Methods
create_a_record(domain_name, name, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 83 def create_a_record(domain_name, name, value, options = {}) # todo: match IPv4 for value create_record domain_name, name, "A", value, options end
create_aaaa_record(domain_name, name, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 88 def create_aaaa_record(domain_name, name, value, options = {}) # todo: match IPv6 for value create_record domain_name, name, "AAAA", value, options end
create_cname_record(domain_name, name, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 103 def create_cname_record(domain_name, name, value, options = {}) # todo: match CNAME value create_record domain_name, name, "CNAME", value, options end
create_domain(domain_name)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 49 def create_domain(domain_name) create_domains([domain_name]) end
create_domains(names)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 45 def create_domains(names) post('/dns/managed/', names: names) end
create_httpred_record(domain_name, name, value, redirectType = "STANDARD - 302", description = "", keywords = "", title = "", options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 128 def create_httpred_record(domain_name, name, value, redirectType = "STANDARD - 302", description = "", keywords = "", title = "", options = {}) options.merge!({"redirectType" => redirectType, "description" => description, "keywords" => keywords, "title" => title}) create_record domain_name, name, "HTTPRED", value, options end
create_mx_record(domain_name, name, priority, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 117 def create_mx_record(domain_name, name, priority, value, options = {}) options.merge!({"mxLevel" => priority}) create_record domain_name, name, "MX", value, options end
create_ns_record(domain_name, name, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 108 def create_ns_record(domain_name, name, value, options = {}) # todo: match domainname for value create_record domain_name, name, "NS", value, options end
create_ptr_record(domain_name, name, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 93 def create_ptr_record(domain_name, name, value, options = {}) # todo: match PTR value create_record domain_name, name, "PTR", value, options end
create_record(domain_name, name, type, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 78 def create_record(domain_name, name, type, value, options = {}) body = {"name" => name, "type" => type, "value" => value, "ttl" => 3600, "gtdLocation" => "DEFAULT"} post "/dns/managed/#{get_id_by_domain(domain_name)}/records/", body.merge(options) end
create_spf_record(domain_name, name, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 113 def create_spf_record(domain_name, name, value, options = {}) create_record domain_name, name, "SPF", value, options end
create_srv_record(domain_name, name, priority, weight, port, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 123 def create_srv_record(domain_name, name, priority, weight, port, value, options = {}) options.merge!({"priority" => priority, "weight" => weight, "port" => port}) create_record domain_name, name, "SRV", value, options end
create_txt_record(domain_name, name, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 98 def create_txt_record(domain_name, name, value, options = {}) # todo: match TXT value create_record domain_name, name, "TXT", value, options end
delete_domain(domain_name)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 41 def delete_domain(domain_name) delete "/dns/managed/#{get_id_by_domain(domain_name)}" end
delete_record(domain_name, record_id)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 74 def delete_record(domain_name, record_id) delete "/dns/managed/#{get_id_by_domain(domain_name)}/records/#{record_id}/" end
delete_records(domain_name, ids = [])
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 68 def delete_records(domain_name, ids = []) id = get_id_by_domain(domain_name) delete "/dns/managed/#{id}/records/", ids end
domain(domain_name)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 37 def domain(domain_name) get "/dns/managed/#{get_id_by_domain(domain_name)}" end
domains()
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 33 def domains get '/dns/managed/' end
find_record_id(domain_name, name, type)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 61 def find_record_id(domain_name, name, type) records = records_for(domain_name) records['data'].select { |r| r['name'] == name && r['type'] == type } .map { |r| r['id'] } end
get_id_by_domain(domain_name)
click to toggle source
————- DOMAINS ————-
# File lib/dnsmadeeasyapi-good.rb, line 29 def get_id_by_domain(domain_name) get("/dns/managed/id/#{domain_name}")['id'] end
records_for(domain_name)
click to toggle source
————- RECORDS ————-
# File lib/dnsmadeeasyapi-good.rb, line 57 def records_for(domain_name) get "/dns/managed/#{get_id_by_domain(domain_name)}/records" end
update_record(domain, record_id, name, type, value, options = {})
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 133 def update_record(domain, record_id, name, type, value, options = {}) body = { "name" => name, "type" => type, "value" => value, "ttl" => 3600, "gtdLocation" => "DEFAULT", "id" => record_id} put "/dns/managed/#{get_id_by_domain(domain)}/records/#{record_id}/", body.merge(options) end
Private Instance Methods
delete(path, body = nil)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 146 def delete(path, body = nil) request(path) do |uri| req = Net::HTTP::Delete.new(uri.path) req.body = body.to_json if body req end end
get(path)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 140 def get(path) request(path) do |uri| Net::HTTP::Get.new(uri.path) end end
post(path, body)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 162 def post(path, body) request(path) do |uri| req = Net::HTTP::Post.new(uri.path) req.body = body.to_json req end end
put(path, body = nil)
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 154 def put(path, body = nil) request(path) do |uri| req = Net::HTTP::Put.new(uri.path) req.body = body.to_json if body req end end
request(path) { |uri| ... }
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 170 def request(path) uri = URI("#{base_uri}#{path}") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = yield(uri) request_headers.each do |key, value| request[key] = value end response = http.request(request) JSON.parse(response.body) end
request_headers()
click to toggle source
# File lib/dnsmadeeasyapi-good.rb, line 187 def request_headers request_date = Time.now.httpdate hmac = OpenSSL::HMAC.hexdigest('sha1', @api_secret, request_date) { 'Accept' => 'application/json', 'x-dnsme-apiKey' => @api_key, 'x-dnsme-requestDate' => request_date, 'x-dnsme-hmac' => hmac } end