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