class NdsApi::Client

Public Class Methods

new(options = {}) click to toggle source

Create a new client instance

@param [Hash] options @option options [String] :user NDS User @option options [String] :password NDS Password @option options [String] :agency_key NDS Agency Key @option options [Boolean] :debug

@return [NdsApi::Client] new client instance

# File lib/nds_api.rb, line 20
def initialize(options = {})
  @options = options.dup
  @http = NdsApi::Http.new(options)
  @url = NdsApi::Url.new(options)
end

Public Instance Methods

method_missing(method, *args, &block) click to toggle source
# File lib/nds_api.rb, line 26
def method_missing(method, *args, &block)
  @method = NdsApi::Method.new(method)
  @args = *args

  validate_search_providers_params!

  console_debug(step: 1)
  @response = http_action(method, *args, &block)
  console_debug(step: 2)
  NdsApi::Utils.hash_keys_str_to_sym(@response)
end

Private Instance Methods

console_debug(params) click to toggle source
# File lib/nds_api.rb, line 73
def console_debug(params)
  return unless @options[:debug]
  if params[:step] == 1
    params_to_display = @options.dup
    params_to_display[:password] = 'XXXXXXXXXXXXXXX'
    puts "NDS API GEM PARAMS: #{params_to_display}"
    if @method.is_create? || @method.is_search? || @method.is_update?
      puts "NDS API DEBUG: #{@method.is_update? ? 'PUT' : 'POST'}"
      puts "NDS API DEBUG: URL: #{url.inspect}"
    else
      puts 'NDS API DEBUG: METHOD GET'
    end
  end
  puts "NDS API DEBUG: RESPONSE: #{@response.inspect}" if params[:step] == 2
  puts "NDS API DEBUG: URL: #{params[:url]}" if params[:url]
  puts "NDS API DEBUG: ACTION: #{params[:action]}" if params[:action]
end
data() click to toggle source
# File lib/nds_api.rb, line 51
def data
  @args.include?(:data) ? @args[:data] : @args.first
end
http_action(method, *args) click to toggle source
# File lib/nds_api.rb, line 40
def http_action(method, *args)
  if @method.is_create? || @method.is_search?
    @http.post(url, data)
  elsif @method.is_update?
    @http.put(url, data)
  else
    console_debug(url: @url.send(method, *args))
    @http.get(@url.send(method, *args))
  end
end
query_params() click to toggle source
# File lib/nds_api.rb, line 63
def query_params
  @args.count > 1 ? @args[1] : nil
end
url() click to toggle source
# File lib/nds_api.rb, line 55
def url
  if @method.is_search? && query_params
    @url.send(@method.action, query_params)
  else
    @url.send(@method.action)
  end
end
validate_search_providers_params!() click to toggle source
# File lib/nds_api.rb, line 67
def validate_search_providers_params!
  return unless @method.is_search_providers?
  console_debug(action: 'search_providers - validating params')
  NdsApi::Validator.validate_search_providers_params!(data)
end