class NtaRuby::Connection

Attributes

conn[R]
id[R]
version[R]

Public Class Methods

new(id:, version:) click to toggle source
# File lib/nta_ruby/connection.rb, line 8
def initialize(id:, version:)
  @conn = Faraday.new(:url => 'https://api.houjin-bangou.nta.go.jp') do |builder|
    builder.request  :url_encoded
    builder.response :logger
    builder.adapter  :net_http
  end
  @id = id
  @version = version
end

Public Instance Methods

throw_request(type:, divide:, **option) click to toggle source
# File lib/nta_ruby/connection.rb, line 18
def throw_request(type:, divide:, **option)
  raise ConnectionNotFoundError.new unless conn

  search_condition = Options.new(type: type, **option).to_h
  search_condition.merge!({ id: id })

  response = []
  case type
  when :number
    raw_resp = conn.get "#{version}/num", search_condition
    result, _ = NtaRuby::Response.parse(raw_resp)

    response.concat result
  when :diff
    raw_resp = conn.get "#{version}/diff", search_condition
    result, divide_size = NtaRuby::Response.parse(raw_resp)

    response.concat result

    return response if divide.is_a? Integer

    (1..divide_size).each do |divide_number|
      next if divide_number == 1

      raw_resp = conn.get "#{version}/diff", search_condition.merge({ divide: divide_number })
      result, _ = NtaRuby::Response.parse(raw_resp)

      response.concat result
    end
  when :name
    raw_resp = conn.get "#{version}/name", search_condition
    result, divide_size = NtaRuby::Response.parse(raw_resp)

    response.concat result

    return response if divide.is_a? Integer

    (1..divide_size).each do |divide_number|
      next if divide_number == 1

      raw_resp = conn.get "#{version}/name", search_condition.merge({ divide: divide_number })
      result, _ = NtaRuby::Response.parse(raw_resp)

      response.concat result
    end
  else
    raise InvalidRequestTypeError.new
  end

  response
end