Class: ImportExport::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/import_export/query.rb

Constant Summary collapse

PARAMETERS =
{
  :q          => nil,
  :sources    => Source.keys,
  :countries  => Query.countries,
  :address    => nil,
  :name       => nil,
  :fuzzy_name => false,
  :type       => nil,
  :size       => 100,
  :offset     => 0,
  :api_key    => nil,
}
TYPES =
%w[
  Individual
  Entity
  Vessel
]

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Query

Returns a new instance of Query.



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/import_export/query.rb', line 33

def initialize(params)
  params = { :q => params } if params.is_a? String
  @params = PARAMETERS.merge(params)

  if invalid = @params.find { |key,value| !PARAMETERS.keys.include?(key) }
    raise ArgumentError, "Invalid parameter: #{invalid[0]}"
  end

  if invalid = @params[:sources].find { |source| !Source.find_by_key(source) }
    raise ArgumentError, "Invalid source: #{invalid}"
  end

  if invalid = @params[:countries].find { |country| !Query.countries.include?(country) }
    raise ArgumentError, "Invalid country: #{invalid}"
  end
end

Class Method Details

.countriesObject



5
6
7
# File 'lib/import_export/query.rb', line 5

def countries
  @countries ||= IsoCountryCodes.all.map { |c| c.alpha2 }
end

.endpointObject



9
10
11
# File 'lib/import_export/query.rb', line 9

def endpoint
  @endpoint ||= URI.join(ImportExport::API_BASE, "search").to_s
end

Instance Method Details

#callObject



50
51
52
53
54
55
# File 'lib/import_export/query.rb', line 50

def call
  RestClient.get Query.endpoint, {
    :params => params,
    "User-Agent" => ImportExport.user_agent
  }
end