class Dozenscli::API

Public Class Methods

new() click to toggle source
# File lib/dozenscli/api.rb, line 7
def initialize
  @base_url = 'http://dozens.jp'
  home = File.expand_path('~')
  conf = IniFile.load("#{home}/.dozenscli.conf")

  dozens_id = conf['profile']['dozens_id']
  api_key   = conf['profile']['api_key']

  if dozens_id.nil? || api_key.nil?
    abort("\x1b[31;01m[ERROR]\x1b[39;49;00m Configuration file is missing some required information")
  end

  @headers = {
    'X-Auth-User'  => dozens_id,
    'X-Auth-Key'   => api_key,
    'Host'         => 'dozens.jp',
    'Content-Type' => 'application/json'
  }

  uri = URI.parse("#{@base_url}/api/authorize.json")
  res = Net::HTTP.start(uri.host, uri.port) do |http|
    http.get(uri.path, @headers)
  end

  @auth_token = JSON.parse(res.body)['auth_token']
end

Public Instance Methods

create_record(params) click to toggle source
# File lib/dozenscli/api.rb, line 80
def create_record(params)
  uri = URI.parse("#{@base_url}/api/record/create.json")
  begin
    JSON.parse(params)
  rescue JSON::ParserError => e
    abort("\x1b[31;01m[ERROR]\x1b[39;49;00m #{e.message}")
  else
    post_data(uri, params)
  end
end
create_zone(zone_name) click to toggle source
# File lib/dozenscli/api.rb, line 64
def create_zone(zone_name)
  uri = URI.parse("#{@base_url}/api/zone/create.json")
  data = JSON.generate({"name" => zone_name})
  post_data(uri, data)
end
delete_data(uri) click to toggle source
# File lib/dozenscli/api.rb, line 51
def delete_data(uri)
  @headers['X-Auth-Token'] = @auth_token

  http = Net::HTTP.new(uri.host, uri.port)
  res = http.delete(uri.request_uri, @headers)
  JSON.parse res.body
end
delete_record(record_id) click to toggle source
# File lib/dozenscli/api.rb, line 91
def delete_record(record_id)
  uri = URI.parse("#{@base_url}/api/record/delete/#{record_id}.json")
  delete_data(uri)
end
delete_zone(zone_id) click to toggle source
# File lib/dozenscli/api.rb, line 70
def delete_zone(zone_id)
  uri = URI.parse("#{@base_url}/api/zone/delete/#{zone_id}.json")
  delete_data(uri)
end
get_data(uri) click to toggle source
# File lib/dozenscli/api.rb, line 34
def get_data(uri)
  @headers['X-Auth-Token'] = @auth_token

  res = Net::HTTP.start(uri.host, uri.port) do |http|
    http.get(uri.path, @headers)
  end
  JSON.parse res.body
end
get_record(zone_name) click to toggle source
# File lib/dozenscli/api.rb, line 75
def get_record(zone_name)
  uri = URI.parse("#{@base_url}/api/record/#{zone_name}.json")
  get_data(uri)
end
get_zone() click to toggle source
# File lib/dozenscli/api.rb, line 59
def get_zone
  uri = URI.parse("#{@base_url}/api/zone.json")
  get_data(uri)
end
post_data(uri, data) click to toggle source
# File lib/dozenscli/api.rb, line 43
def post_data(uri, data)
  @headers['X-Auth-Token'] = @auth_token

  http = Net::HTTP.new(uri.host, uri.port)
  res = http.post(uri.request_uri, data, @headers)
  JSON.parse res.body
end
update_record(record_id, params) click to toggle source
# File lib/dozenscli/api.rb, line 96
def update_record(record_id, params)
  uri = URI.parse("#{@base_url}/api/record/update/#{record_id}.json")
  begin
    JSON.parse(params)
  rescue JSON::ParserError => e
    abort("\x1b[31;01m[ERROR]\x1b[39;49;00m #{e.message}")
  else
    post_data(uri, params)
  end
end