Class: CensusApi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/census_api/client.rb

Constant Summary collapse

DATASETS =

can add more datasets as support becomes available

%w( sf1 acs5 )

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key, options = {}) ⇒ Client

Returns a new instance of Client.

Raises:

  • (ArgumentError)


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/census_api/client.rb', line 8

def initialize(api_key, options = {})
  raise ArgumentError, "You must set an api_key." unless api_key

  # Use RestClient directly to determine the validity of the API Key
  path = "http://api.census.gov/data/2010/sf1?key=#{api_key}&get=P0010001&for=state:01"
  response = RestClient.get(path)

  if response.body.include? "Invalid Key"
    raise "'#{api_key}' is not a valid API key. Check your key for errors, or request a new one at census.gov."
  end

  @api_key = api_key
  if options[:dataset]
    @dataset = options[:dataset].downcase if DATASETS.include? options[:dataset].downcase
  end
end

Instance Attribute Details

#api_keyObject (readonly)

Returns the value of attribute api_key.



3
4
5
# File 'lib/census_api/client.rb', line 3

def api_key
  @api_key
end

#datasetObject

Returns the value of attribute dataset.



4
5
6
# File 'lib/census_api/client.rb', line 4

def dataset
  @dataset
end

#optionsObject (readonly)

Returns the value of attribute options.



3
4
5
# File 'lib/census_api/client.rb', line 3

def options
  @options
end

Instance Method Details

#find(fields, level, *within) ⇒ Object



25
26
27
28
# File 'lib/census_api/client.rb', line 25

def find(fields, level, *within)
  raise "Client has not been assigned a dataset to query. Try @client.dataset = 'SF1' or anything from #{DATASETS}" if self.dataset.nil?
  Request.find(dataset, {key: @api_key, fields: fields, level: level, within: within})
end