0.0
No commit activity in last 3 years
No release in over 3 years
A ruby wrapper for the street easy API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.6
>= 0

Runtime

>= 0
 Project Readme

StreetEasy API Gem Gem Version

Description

A little gem that integrates with the Street Easy API (beta).

API Documentation available here.

Installation

Add this line to your application's Gemfile:

gem 'street_easy'

And then execute:

$ bundle

Or install it yourself as:

$ gem install street_easy

Set Up

First, register for an API key here.

Then, place this code somewhere in your ruby environment.

require 'street_easy'

add your API key to the client:

StreetEasy::Client.api_key = 'your_api_key'

Property

The StreatEasy::Property object has the following methods:

  • .rentals
  • .sales
  • .order(order_type)
  • .neighborhoods(list_of_neighborhoods)
  • .options(list_of_options)
  • .limit(int)
  • .all

Examples

  • return the 200 :most_expensive rentals in all of 'nyc' (note, the API maxes out at 200)
properties = StreetEasy::Property.all
# or
properties = StreetEasy::Property.rentals.all
# or
properties = StreetEasy::Property.rentals.order(:most_expensive).all
  • return the 200 :most_expensive sales in all of 'nyc' (note, the API maxes out at 200)
properties = StreetEasy::Property.sales.all
#or
properties = StreetEasy::Property.sales.order(:most_expensive).all
  • return the 12 :least_expensive rentals in all of 'nyc'.
properties = StreetEasy::Property.order(:least_expensive).limit(12)
  • return the 30 :least_expensive rentals in 'soho'.
properties = StreetEasy::Property.neighborhoods('soho').order(:least_expensive).limit(30)
  • return the newest rentals in both 'soho' AND 'murray-hill' (limit 200)
properties = StreetEasy::Property.neighborhoods('soho', 'murray-hill').order(:newest).all
# or
properties = StreetEasy::Property.neighborhoods(['soho', 'murray-hill']).order(:newest).all
  • return the 30 :least_expensive sales in 'soho', 'murray hill', and the 'lower-east-side', but only return their :price, :area_name, :description, and :floorplan
properties = StreetEasy::Property.sales
  .neighborhoods('soho', 'murray-hill', 'lower-east-side')
  .options(:price, :area_name, :description_excerpt, :floorplan)
  .order(:least_expensive)
  .limit(30)

full list of neighborhoods:

  'battery-park-city'
  'chelsea'
  'west-chelsea'
  'chinatown'
  'two-bridges'
  'civic-center'
  'east-village'
  'financial-district'
  'fulton/seaport'
  'flatiron'
  'nomad'
  'gramercy-park'
  'greenwich-village'
  'noho'
  'little-italy'
  'lower-east-side'
  'nolita'
  'soho'
  'stuyvesant-town/pcv'
  'tribeca'
  'west-village'
  'all-midtown'
  'central-park-south'
  'midtown'
  'midtown-east'
  'kips-bay'
  'murray-hill'
  'sutton-place'
  'turtle-bay'
  'beekman'
  'midtown-south'
  'midtown-west'
  'roosevelt-island'
  'all-upper-east-side'
  'carnegie-hill'
  'lenox-hill'
  'upper-carnegie-hill'
  'upper-east-side'
  'yorkville'
  'all-upper-west-side'
  'lincoln-square'
  'manhattan-valley'
  'morningside-heights'
  'upper-west-side'
  'all-upper-manhattan'
  'central-harlem'
  'east-harlem'
  'hamilton-heights'
  'inwood'
  'manhattanville'
  'washington-heights'
  'fort-george'
  'hudson-heights'
  'west-harlem'

list of .order options

  :most_expensive  # default
  :least_expensive
  :newest

list of .option parameters

      
  # default attributes
  :title
  :area_name
  :price
  :bedrooms
  :bathrooms
  :size_sqft
  :url
  :medium_image_uri

  # additional attributes
  :source_label
  :clean_address
  :description_excerpt
  :half_baths
  :rooms_description
  :addr_street
  :addr_unit
  :normalized_addr_unit
  :addr_city
  :addr_lat
  :addr_lon
  :size_sqft_num
  :lot_size
  :size_description
  :ppsf
  :ppsf_num
  :ppsf_description
  :created_at
  :unit_type
  :unit_type_label
  :status
  :price_cur
  :floorplan
  :open_house_start
  :open_house_end
  :sourceid

Contributing

PLEASE CONTRIBUTE! This is my first ruby gem, and my first contribution to the open source movement! Therefore, there's a lot of room for improvement :)

TODO:

  • tests (oh the travis-ci!)
  • error handling
  • refactor
  • add other classes like StreetEasy::NeighborhoodData, StreetEasy::Geo, and others.

THOUGHTS:

  • extract StreetEasy::Property into StreetEasy::Property::Rental and StreetEasy::Property::Sale?
  • return objects instead of hashes?
  • add a .first method? Other methods?
  • don't implement method chaining?
  1. Fork it ( https://github.com/cblokker/street_easy/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request