Sha256: bcf1080a845a1ca4398a1802bf75f3a36fce556a56574f3a66e070228a9344d9

Contents?: true

Size: 1.76 KB

Versions: 2

Compression:

Stored size: 1.76 KB

Contents

module Daywalker
  # Represents a Congressional district.
  #
  # They have the following attributes:
  # * number
  # * state (as a two-letter abbreviation)
  class District < Base
    include HappyMapper

    tag     'district'
    element 'number', Integer
    element 'state', String

    # Find the district for a specific latitude and longitude.
    #
    # Returns a District. Raises ArgumentError if you omit latitude or longitude.
    def self.unique_by_latitude_and_longitude(latitude, longitude)
      raise(ArgumentError, 'missing required parameter latitude') if latitude.nil?
      raise(ArgumentError, 'missing required parameter longitude') if longitude.nil?

      query = {
        :latitude => latitude,
        :longitude => longitude,
        :apikey => Daywalker.api_key
      }
      response = get('/districts.getDistrictFromLatLong.xml', :query => query)
      handle_response(response).first
    end

    # Finds all districts for a specific zip code.
    #
    # Returns an Array of Districts. Raises ArgumentError if you omit the zip.
    def self.all_by_zipcode(zip)
      raise(ArgumentError, 'missing required parameter zip') if zip.nil?

      query = {
        :zip => zip,
        :apikey => Daywalker.api_key
      }
      response = get('/districts.getDistrictsFromZip.xml', :query => query)

      handle_response(response)
    end

    # Find the district for a specific address.
    #
    # Returns a District.
    #
    # Raises Daywalker::AddressError if the address can't be geocoded.
    def self.unique_by_address(address)
      raise(ArgumentError, 'missing required parameter address') if address.nil?
      location = Daywalker.geocoder.locate(address)

      unique_by_latitude_and_longitude(location[:latitude], location[:longitude])
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
technicalpickles-daywalker-0.2.0 lib/daywalker/district.rb
technicalpickles-daywalker-0.2.1 lib/daywalker/district.rb