class DocodocoJp

Constants

DEFAULT_API_HOST
VERSION

Attributes

apikey[R]
config[R]
user_valid[R]

Public Class Methods

api_host() click to toggle source
# File lib/docodoco_jp.rb, line 27
def api_host
  @api_host = DEFAULT_API_HOST if @api_host.nil?
  return @api_host
end
api_host=(host) click to toggle source
# File lib/docodoco_jp.rb, line 23
def api_host=(host)
  @api_host = host
end
default_config() click to toggle source
# File lib/docodoco_jp.rb, line 32
def default_config
  return {
    ssl: true,
    faraday_log: false,
    charset: "utf_8",
    response_type: :hashie
  }
end
new(apikey1, apikey2, options ={}) click to toggle source
# File lib/docodoco_jp.rb, line 42
def initialize(apikey1, apikey2, options ={})
  @apikey = [apikey1, apikey2]
  @user_valid = false
  @config = self.class.default_config
  @config = @config.merge({
    ssl: options[:ssl],
    faraday_log: options[:faraday_log],
    charset: options[:charset],
    response_type: options[:response_type]
  }) do |k, n, o|
    result = n
    result = o unless o.nil?

    result
  end
end

Public Instance Methods

check_user() click to toggle source
# File lib/docodoco_jp.rb, line 67
def check_user()
  xmldoc = REXML::Document.new(check_user_api().body)
  status  = xmldoc.elements['/docodoco/user_status'].get_text.to_s.to_i
  message = xmldoc.elements['/docodoco/user_status_message'].get_text.to_s
  result = [200, 201].include?(status)
  @user_valid = true
  return result, {status: status, message: message}
end
check_user!() click to toggle source
# File lib/docodoco_jp.rb, line 76
def check_user!()
  result, json = check_user
  raise DocodocoJp::ApiKeyInvalid unless result
  return result, json
end

Private Instance Methods

api_params(h = {}) click to toggle source
# File lib/docodoco_jp.rb, line 92
def api_params(h = {})
  return {
    key1: @apikey[0],
    key2: @apikey[1],
  }.merge(h)
end
api_request(path, params) click to toggle source
# File lib/docodoco_jp.rb, line 111
def api_request(path, params)
  response = connection.get path, params
  return response
end
check_user_api() click to toggle source
# File lib/docodoco_jp.rb, line 83
def check_user_api()
  return api_request "/v4/user_info", api_params
end
connection() click to toggle source
# File lib/docodoco_jp.rb, line 99
def connection
  return @connection ||= ->() {
    protocol = config[:ssl] ? "https" : "http"
    options  = config[:ssl] ? { ssl: { verify: true } } : {}
    Faraday.new("#{protocol}://#{DocodocoJp::api_host}", options) do |builder|
      builder.request  :url_encoded
      builder.response :logger if config[:faraday_log]
      builder.adapter  :net_http
    end
  }.call()
end
hash_nomalize(obj) click to toggle source
# File lib/docodoco_jp.rb, line 116
def hash_nomalize(obj)
  snakecase = ->(str) do
    return str.downcase if str =~ /^[A-Z]+$/xom
    return str.scan(/[A-Z][a-z]*/xom).join("_").downcase
  end
  return obj.inject({}){|memo,(k,v)| memo[snakecase.(k.to_s).intern] = hash_nomalize(v); memo} if obj.is_a? Hash
  return obj.inject([]){|memo,v| memo << hash_nomalize(v); memo} if obj.is_a? Array
  return obj
end
search_api(ipadr = nil) click to toggle source
# File lib/docodoco_jp.rb, line 87
def search_api(ipadr = nil)
  raise DocodocoJp::IPv4ValidationError unless ipadr.nil? || Resolv::IPv4::Regex =~ ipadr
  return api_request "/v4/search", api_params(format: :json, charset: config[:charset], ipadr: ipadr)
end