class DnsMadeEasy::Api
Public Class Methods
new(api_key, api_secret)
click to toggle source
# File lib/dns_made_easy/api.rb, line 3 def initialize(api_key, api_secret) @api_key = api_key @api_secret = api_secret @endpoint = 'https://api.dnsmadeeasy.com/V2.0' end
Public Instance Methods
get_domain(domain_name_or_id)
click to toggle source
# File lib/dns_made_easy/api.rb, line 13 def get_domain(domain_name_or_id) if is_numeric?(domain_name_or_id) get_request("/dns/managed/#{domain_name_or_id}")[:body] else get_domains.find { |d| d['name'] == domain_name_or_id } end end
get_domain_record(domain_name_or_id, filters={})
click to toggle source
# File lib/dns_made_easy/api.rb, line 30 def get_domain_record(domain_name_or_id, filters={}) get_domain_records(domain_name_or_id, filters).first end
get_domain_records(domain_name_or_id, filters={})
click to toggle source
# File lib/dns_made_easy/api.rb, line 21 def get_domain_records(domain_name_or_id, filters={}) domain = get_domain(domain_name_or_id) response = get_request("/dns/managed/#{domain['id']}/records")[:body]['data'] response.find_all { |x| filters.all? { |k,v| x[k.to_s] == v } } end
get_domains()
click to toggle source
# File lib/dns_made_easy/api.rb, line 9 def get_domains get_request('/dns/managed/')[:body]['data'] end
update_domain_record(domain_name_or_id, filters={}, new_values={})
click to toggle source
# File lib/dns_made_easy/api.rb, line 34 def update_domain_record(domain_name_or_id, filters={}, new_values={}) domain = get_domain(domain_name_or_id) record = get_domain_record(domain_name_or_id, filters) attributes = record.merge(new_values).to_json response = put_request("/dns/managed/#{domain['id']}/records/#{record['id']}", attributes) response[:status_code] == 200 end
Private Instance Methods
build_headers()
click to toggle source
# File lib/dns_made_easy/api.rb, line 77 def build_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
delete_request(action, params={})
click to toggle source
# File lib/dns_made_easy/api.rb, line 69 def delete_request(action, params={}) begin parse_response(RestClient.delete("#{@endpoint_url}#{action}", params, build_headers)) rescue => e parse_response(e.response) end end
get_request(action, params={})
click to toggle source
# File lib/dns_made_easy/api.rb, line 45 def get_request(action, params={}) begin parse_response(RestClient.get("#{@endpoint}#{action}", {params: params}.merge(build_headers))) rescue => e parse_response(e.response) end end
is_numeric?(obj)
click to toggle source
# File lib/dns_made_easy/api.rb, line 97 def is_numeric?(obj) obj.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true end
parse_response(response)
click to toggle source
# File lib/dns_made_easy/api.rb, line 89 def parse_response(response) { headers: response.headers, body: (JSON.parse(response.body) rescue response.body), status_code: response.code } end
post_request(action, params={})
click to toggle source
# File lib/dns_made_easy/api.rb, line 53 def post_request(action, params={}) begin parse_response(RestClient.post("#{@endpoint}#{action}", params, build_headers)) rescue => e parse_response(e.response) end end
put_request(action, params={})
click to toggle source
# File lib/dns_made_easy/api.rb, line 61 def put_request(action, params={}) begin parse_response(RestClient.put("#{@endpoint}#{action}", params, build_headers)) rescue => e parse_response(e.response) end end