Sha256: 7fd3a0c8d25b78921ae0684fa88511761d199ada76b8d04c3f9790e1070813d7

Contents?: true

Size: 892 Bytes

Versions: 1

Compression:

Stored size: 892 Bytes

Contents

require "sqlite3"

module Ziptastic
  class NotZipCode < StandardError; end
  
  DATABASE_PATH = File.expand_path(File.dirname(__FILE__) + "/ziptastic/data/zipcodes.db")  
  ZIP_DATABASE = SQLite3::Database.open(DATABASE_PATH, :readonly => true, :results_as_hash => true)
  
  def self.search(zip_code)
    search_results = []
    
    search_results = search_for_zip_code(zip_code).collect do |row|
      {:city => row['city'], :state => row['state'], :country => row['country']}
    end
        
    search_results
  end
  
  private
  def self.search_for_zip_code(zip_code)
    validate_zip_code(zip_code)
    ZIP_DATABASE.execute('select City, State, Country from zipcodes where ZipCode=?', zip_code)
  end
  
  def self.validate_zip_code(zip_code)
    raise NotZipCode, "#{zip_code} is not a zip code!" if zip_code =~ /\D/
  end
end
require "ziptastic/app"
require "ziptastic/version"


Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ziptastic-0.1.0 lib/ziptastic.rb