citibikenyc 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ module Citibikenyc
2
+ # Custom error class for rescuing from all Citibikenyc errors
3
+ class Error < StandardError; end
4
+
5
+ # Raised when Sinlgy returns the HTTP status code 404
6
+ class NotFound < Error; end
7
+ end
@@ -0,0 +1,45 @@
1
+ module Citibikenyc
2
+ # Defines HTTP request methods
3
+ module Request
4
+ # Perform an HTTP GET request
5
+ def get(path, options={}, raw=false, unformatted=true)
6
+ request(:get, path, options, raw, unformatted)
7
+ end
8
+
9
+ # Perform an HTTP POST request
10
+ def post(path, options={}, raw=false, unformatted=true)
11
+ request(:post, path, options, raw, unformatted)
12
+ end
13
+
14
+ # Perform an HTTP PUT request
15
+ def put(path, options={}, raw=false, unformatted=true)
16
+ request(:put, path, options, raw, unformatted)
17
+ end
18
+
19
+ # Perform an HTTP DELETE request
20
+ def delete(path, options={}, raw=false, unformatted=true)
21
+ request(:delete, path, options, raw, unformatted)
22
+ end
23
+
24
+ private
25
+
26
+ # Perform an HTTP request
27
+ def request(method, path, options, raw=false, unformatted=true)
28
+ response = connection(raw).send(method) do |request|
29
+ path = formatted_path(path) unless unformatted
30
+ case method
31
+ when :get, :delete
32
+ request.url(path, options)
33
+ when :post, :put
34
+ request.path = path
35
+ request.body = options unless options.empty?
36
+ end
37
+ end
38
+ raw ? response : response.body
39
+ end
40
+
41
+ def formatted_path(path)
42
+ [path, format].compact.join('.')
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,3 @@
1
+ module Citibikenyc
2
+ VERSION = "0.0.1".freeze unless defined?(::Citibikenyc::VERSION)
3
+ end
@@ -0,0 +1,27 @@
1
+ require 'faraday'
2
+
3
+ # @private
4
+ module FaradayMiddleware
5
+ # @private
6
+ class RaiseHttpException < Faraday::Middleware
7
+ def call(env)
8
+ @app.call(env).on_complete do |response|
9
+ case response[:status].to_i
10
+ when 404
11
+ raise Citibikenyc::NotFound, error_message(response)
12
+ end
13
+ end
14
+ end
15
+
16
+ def initialize(app)
17
+ super app
18
+ @parser = nil
19
+ end
20
+
21
+ private
22
+
23
+ def error_message(response, body=nil)
24
+ "#{response[:method].to_s.upcase} #{response[:url].to_s}: #{[response[:status].to_s, body ? body : response[:body]].compact.join(': ')}"
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe Citibikenyc::Client do
4
+ before do
5
+ @client = Citibikenyc::Client.new
6
+ end
7
+
8
+ describe ".branches" do
9
+ before do
10
+ stub_get('v1/branch/list').
11
+ to_return(:body => fixture("branches.json"), :headers => {:content_type => "application/json; charset=utf-8"})
12
+ end
13
+
14
+ it "should get the correct resource" do
15
+ @client.branches
16
+ a_get('v1/branch/list').should have_been_made
17
+ end
18
+
19
+ it "should return the branches info" do
20
+ data = @client.branches
21
+ data.keys.should be == ["ok", "meta", "results", "lastUpdate"]
22
+ data.results.should be_a Array
23
+ data.lastUpdate.should be_a Fixnum
24
+ data.results.each do |station|
25
+ station.keys.should be == ["id", "latitude", "longitude", "label"]
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe Citibikenyc::Client do
4
+ before do
5
+ @client = Citibikenyc::Client.new
6
+ end
7
+
8
+ describe ".helmets" do
9
+ before do
10
+ stub_get('v1/helmet/list').
11
+ to_return(:body => fixture("helmets.json"), :headers => {:content_type => "application/json; charset=utf-8"})
12
+ end
13
+
14
+ it "should get the correct resource" do
15
+ @client.helmets
16
+ a_get('v1/helmet/list').should have_been_made
17
+ end
18
+
19
+ it "should return the helmets info" do
20
+ data = @client.helmets
21
+ data.keys.should be == ["ok", "meta", "results", "lastUpdate"]
22
+ data.results.should be_a Array
23
+ data.lastUpdate.should be_a Fixnum
24
+ data.results.each do |station|
25
+ station.keys.should be == ["id", "address", "latitude", "longitude", "label"]
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,53 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe Citibikenyc::Client do
4
+ before do
5
+ @client = Citibikenyc::Client.new
6
+ end
7
+
8
+ describe ".stations" do
9
+ before do
10
+ stub_get('data2/stations.php').
11
+ to_return(:body => fixture("stations.json"), :headers => {:content_type => "application/json; charset=utf-8"})
12
+ end
13
+
14
+ it "should get the correct resource" do
15
+ @client.stations
16
+ a_get('data2/stations.php').should have_been_made
17
+ end
18
+
19
+ it "should return the stations info" do
20
+ data = @client.stations
21
+ data.keys.should be == ["ok", "meta", "results", "activeStations", "totalStations", "lastUpdate"]
22
+ data.results.should be_a Array
23
+ data.activeStations.should be_a Fixnum
24
+ data.totalStations.should be_a Fixnum
25
+ data.lastUpdate.should be_a Fixnum
26
+ data.results.each do |station|
27
+ station.keys.should be == ["id", "status", "latitude", "longitude", "label", "stationAddress", "availableBikes", "availableDocks", "nearbyStations"]
28
+ end
29
+ end
30
+ end
31
+
32
+ describe ".stations_status" do
33
+ before do
34
+ stub_get('data2/stations.php?updateOnly=true').
35
+ to_return(:body => fixture("stations_update_only.json"), :headers => {:content_type => "application/json; charset=utf-8"})
36
+ end
37
+
38
+ it "should get the correct resource" do
39
+ @client.stations_status
40
+ a_get('data2/stations.php?updateOnly=true').should have_been_made
41
+ end
42
+
43
+ it "should return the stations status" do
44
+ data = @client.stations_status
45
+ data.keys.should be == ["ok", "meta", "results", "lastUpdate"]
46
+ data.results.should be_a Array
47
+ data.lastUpdate.should be_a Fixnum
48
+ data.results.each do |station|
49
+ station.keys.should be == ["id", "status", "availableBikes", "availableDocks"]
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,93 @@
1
+ require 'spec_helper'
2
+
3
+ describe Citibikenyc do
4
+ after do
5
+ Citibikenyc.reset
6
+ end
7
+
8
+ context "when delegating to a client" do
9
+ before do
10
+ stub_get("data2/stations.php").
11
+ to_return(:body => fixture("stations.json"), :headers => {:content_type => "application/json; charset=utf-8"})
12
+ end
13
+
14
+ it "should get the correct resource" do
15
+ Citibikenyc.stations()
16
+ a_get("data2/stations.php").should have_been_made
17
+ end
18
+
19
+ it "should return the same results as a client" do
20
+ Citibikenyc.stations().should == Citibikenyc::Client.new.stations()
21
+ end
22
+ end
23
+
24
+ describe ".client" do
25
+ it "should be a Citibikenyc::Client" do
26
+ Citibikenyc.client.should be_a Citibikenyc::Client
27
+ end
28
+
29
+ describe ".adapter" do
30
+ it "should return the default adapter" do
31
+ Citibikenyc.adapter.should == Citibikenyc::Configuration::DEFAULT_ADAPTER
32
+ end
33
+ end
34
+
35
+ describe ".adapter=" do
36
+ it "should set the adapter" do
37
+ Citibikenyc.adapter = :typhoeus
38
+ Citibikenyc.adapter.should == :typhoeus
39
+ end
40
+ end
41
+
42
+ describe ".endpoint" do
43
+ it "should return the default endpoint" do
44
+ Citibikenyc.endpoint.should == Citibikenyc::Configuration::DEFAULT_ENDPOINT
45
+ end
46
+ end
47
+
48
+ describe ".endpoint=" do
49
+ it "should set the endpoint" do
50
+ Citibikenyc.endpoint = 'http://edgar.com.ve'
51
+ Citibikenyc.endpoint.should == 'http://edgar.com.ve'
52
+ end
53
+ end
54
+
55
+ describe ".format" do
56
+ it "should return the default format" do
57
+ Citibikenyc.format.should == Citibikenyc::Configuration::DEFAULT_FORMAT
58
+ end
59
+ end
60
+
61
+ describe ".format=" do
62
+ it "should set the format" do
63
+ Citibikenyc.format = 'xml'
64
+ Citibikenyc.format.should == 'xml'
65
+ end
66
+ end
67
+
68
+ describe ".user_agent" do
69
+ it "should return the default user agent" do
70
+ Citibikenyc.user_agent.should == Citibikenyc::Configuration::DEFAULT_USER_AGENT
71
+ end
72
+ end
73
+
74
+ describe ".user_agent=" do
75
+ it "should set the user_agent" do
76
+ Citibikenyc.user_agent = 'Custom User Agent'
77
+ Citibikenyc.user_agent.should == 'Custom User Agent'
78
+ end
79
+ end
80
+
81
+ describe ".configure" do
82
+ Citibikenyc::Configuration::VALID_OPTIONS_KEYS.each do |key|
83
+ it "should set the #{key}" do
84
+ Citibikenyc.configure do |config|
85
+ config.send("#{key}=", key)
86
+ Citibikenyc.send(key).should == key
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ end
93
+ end
@@ -0,0 +1,253 @@
1
+ {"ok": true, "meta": [], "results":[
2
+ { "id":1, "latitude":40.7086647301912, "longitude":-74.0108752995729, "label":"120 Broadway" },
3
+ { "id":2, "latitude":40.7533264160156, "longitude":-73.9794006347656, "label":"330 Madison Ave" },
4
+ { "id":3, "latitude":40.7042541503906, "longitude":-74.0070037841797, "label":"111 Wall St" },
5
+ { "id":6, "latitude":40.7781944274902, "longitude":-73.9814147949219, "label":"170 West 72nd St" },
6
+ { "id":7, "latitude":40.7620277404785, "longitude":-73.9709930419922, "label":"460 Park Ave" },
7
+ { "id":8, "latitude":40.7458648681641, "longitude":-73.9814529418945, "label":"One Park Ave" },
8
+ { "id":11, "latitude":40.8499298095703, "longitude":-73.9363708496094, "label":"4249 Broadway" },
9
+ { "id":12, "latitude":40.7606687396765, "longitude":-73.8306080549955, "label":"38-17 Main St" },
10
+ { "id":15, "latitude":40.7591018676758, "longitude":-73.9716873168945, "label":"399 Park Ave" },
11
+ { "id":16, "latitude":40.764370188117, "longitude":-73.9645924419165, "label":"1078 Third Ave" },
12
+ { "id":17, "latitude":40.7369537353516, "longitude":-73.9923782348633, "label":"79 Fifth Ave" },
13
+ { "id":18, "latitude":40.7510966062546, "longitude":-73.9907480031252, "label":"201 W. 34th St" },
14
+ { "id":21, "latitude":40.7720336914063, "longitude":-73.9524993896484, "label":"1512 1st Ave" },
15
+ { "id":22, "latitude":40.7431371510029, "longitude":-73.9927040040493, "label":"717 Ave of The Americas" },
16
+ { "id":23, "latitude":40.8123200386763, "longitude":-73.9571050554514, "label":"1310 Amsterdam Ave" },
17
+ { "id":24, "latitude":40.7531350851059, "longitude":-73.9727926254272, "label":"734 3rd Ave" },
18
+ { "id":27, "latitude":40.704963684082, "longitude":-74.0144500732422, "label":"One Broadway" },
19
+ { "id":28, "latitude":40.7202813774347, "longitude":-74.0085786581039, "label":"127 Hudson St" },
20
+ { "id":29, "latitude":40.6277257204056, "longitude":-74.0761998295784, "label":"577 Bay St" },
21
+ { "id":33, "latitude":40.6931059062481, "longitude":-73.9683984965086, "label":"430 Myrtle Ave" },
22
+ { "id":34, "latitude":40.6431083679199, "longitude":-74.0127792358398, "label":"5324 5th Ave" },
23
+ { "id":37, "latitude":40.6090660095215, "longitude":-73.9581451416016, "label":"1501 Kings Hwy" },
24
+ { "id":39, "latitude":40.7062547653914, "longitude":-73.7964548170567, "label":"89-50 164th St" },
25
+ { "id":38, "latitude":41.3265342712402, "longitude":-73.6860885620117, "label":"332 Route 100 N." },
26
+ { "id":43, "latitude":40.7475118339062, "longitude":-73.8855108618736, "label":"80-19 Roosevelt Ave" },
27
+ { "id":44, "latitude":40.7288131713867, "longitude":-73.9532775878906, "label":"836 Manhattan Ave" },
28
+ { "id":45, "latitude":40.7522184401751, "longitude":-73.7019310891628, "label":"272-06 Union Tpke" },
29
+ { "id":51, "latitude":40.6124420166016, "longitude":-74.1274795532227, "label":"1910 Victory Blvd" },
30
+ { "id":49, "latitude":40.7169418334961, "longitude":-73.8270568847656, "label":"176-50 Union Tpke" },
31
+ { "id":50, "latitude":40.7753799855709, "longitude":-73.8244503736496, "label":"25-47 Parsons Blvd" },
32
+ { "id":55, "latitude":40.7566604614258, "longitude":-73.9833602905273, "label":"1155 Avenue of The Americas" },
33
+ { "id":56, "latitude":40.7672309875488, "longitude":-73.9560623168945, "label":"1330 First Ave" },
34
+ { "id":57, "latitude":40.7675553113222, "longitude":-73.9684447646141, "label":"757 Madison Ave" },
35
+ { "id":60, "latitude":40.8817745000124, "longitude":-73.8823994994164, "label":"3475 Jerome Ave" },
36
+ { "id":62, "latitude":40.8626289367676, "longitude":-73.8985137939453, "label":"2481 Creston Ave" },
37
+ { "id":61, "latitude":40.8168678283691, "longitude":-73.919677734375, "label":"349 E. 149th St" },
38
+ { "id":66, "latitude":40.8117713928223, "longitude":-73.8823699951172, "label":"550 Hunts Point Ave" },
39
+ { "id":68, "latitude":40.8654049783945, "longitude":-73.8669238239527, "label":"704 Allerton Ave" },
40
+ { "id":67, "latitude":40.9061128646135, "longitude":-73.9043661206961, "label":"5671 Riverdale Ave" },
41
+ { "id":71, "latitude":40.8217697143555, "longitude":-73.8193283081055, "label":"3924 E. Tremont Ave" },
42
+ { "id":73, "latitude":40.7158349454403, "longitude":-73.9864826202393, "label":"411 Grand St" },
43
+ { "id":72, "latitude":40.7290253788233, "longitude":-73.9980590343475, "label":"555 Laguardia Pl" },
44
+ { "id":76, "latitude":40.6248570978642, "longitude":-73.9638662338257, "label":"1220 Ave J" },
45
+ { "id":78, "latitude":40.6559066772461, "longitude":-73.9311828613281, "label":"702 Utica Ave" },
46
+ { "id":77, "latitude":40.7652298361063, "longitude":-73.7717865407467, "label":"39-01 Bell Blvd" },
47
+ { "id":81, "latitude":40.7758091390133, "longitude":-73.9111708849669, "label":"22-16 31st St" },
48
+ { "id":83, "latitude":40.7341772317886, "longitude":-73.7835835665464, "label":"69-80 188th St" },
49
+ { "id":82, "latitude":40.6871239095926, "longitude":-73.8220202922821, "label":"121-11 Liberty Ave" },
50
+ { "id":87, "latitude":40.9719581604004, "longitude":-73.805534362793, "label":"725 White Plains Rd" },
51
+ { "id":89, "latitude":40.9396337717772, "longitude":-73.8329080492258, "label":"95 Pondfield Rd" },
52
+ { "id":88, "latitude":40.9942398071289, "longitude":-73.8798141479492, "label":"65 Main St" },
53
+ { "id":95, "latitude":41.0303611755371, "longitude":-73.7407684326172, "label":"220 Westchester Ave" },
54
+ { "id":93, "latitude":41.2744820863009, "longitude":-73.7831758707762, "label":"360 Downing Dr" },
55
+ { "id":94, "latitude":40.9523735046387, "longitude":-73.72607421875, "label":"711 E. Boston Post Rd" },
56
+ { "id":99, "latitude":40.7766694575548, "longitude":-73.5292330384254, "label":"255 North Broadway" },
57
+ { "id":100, "latitude":41.0331115722656, "longitude":-73.7645492553711, "label":"244 Main St" },
58
+ { "id":101, "latitude":40.6810646057129, "longitude":-73.9954528808594, "label":"375 Court St" },
59
+ { "id":104, "latitude":40.7852592468262, "longitude":-73.7296447753906, "label":"111 Great Neck Rd" },
60
+ { "id":105, "latitude":40.6737861633301, "longitude":-73.9762496948242, "label":"114 7th Ave" },
61
+ { "id":106, "latitude":40.5889472961426, "longitude":-73.6598663330078, "label":"135 E. Park Ave" },
62
+ { "id":108, "latitude":40.6397842615843, "longitude":-73.7000642716885, "label":"1316 Broadway" },
63
+ { "id":109, "latitude":40.6533317565918, "longitude":-73.5880126953125, "label":"180 W. Merrick Rd" },
64
+ { "id":110, "latitude":40.7762993127108, "longitude":-73.4660596400499, "label":"1125 Old Country Rd" },
65
+ { "id":114, "latitude":40.7080726623535, "longitude":-73.6794586181641, "label":"1060 Hempstead Tpke" },
66
+ { "id":4, "latitude":40.76526068151, "longitude":-73.9819691330194, "label":"1748 Broadway" },
67
+ { "id":115, "latitude":40.6562957763672, "longitude":-73.6442489624023, "label":"297 Merrick Rd" },
68
+ { "id":5, "latitude":40.7947311401367, "longitude":-73.9712219238281, "label":"2560 Broadway" },
69
+ { "id":116, "latitude":40.771354675293, "longitude":-73.6479034423828, "label":"1000 Willis Ave" },
70
+ { "id":9, "latitude":40.7877807617188, "longitude":-73.9763946533203, "label":"2350 Broadway" },
71
+ { "id":10, "latitude":40.7799644470215, "longitude":-73.9559631347656, "label":"123 E. 86th St" },
72
+ { "id":13, "latitude":40.7701148092747, "longitude":-73.9613543450832, "label":"171 E. 72nd St" },
73
+ { "id":14, "latitude":40.776741027832, "longitude":-73.9621124267578, "label":"1042 Madison Ave" },
74
+ { "id":119, "latitude":40.7051773071289, "longitude":-73.5695571899414, "label":"670 Merrick Ave" },
75
+ { "id":122, "latitude":40.5824828892946, "longitude":-73.8356211036444, "label":"113-01 Beach Channel Dr" },
76
+ { "id":20, "latitude":40.805103302002, "longitude":-73.9664764404297, "label":"2861 Broadway" },
77
+ { "id":120, "latitude":40.6725234985352, "longitude":-73.5079803466797, "label":"3295 Sunrise Hwy" },
78
+ { "id":25, "latitude":40.7962875366211, "longitude":-73.9355697631836, "label":"2261 1st Ave" },
79
+ { "id":26, "latitude":40.7129821777344, "longitude":-74.0078201293945, "label":"250 Broadway" },
80
+ { "id":121, "latitude":40.7411516457796, "longitude":-73.6628794670105, "label":"2301 Jericho Turnpike" },
81
+ { "id":126, "latitude":40.6787452697754, "longitude":-73.8647613525391, "label":"1200 Liberty Ave" },
82
+ { "id":125, "latitude":40.6476907432079, "longitude":-73.8817819207907, "label":"1388 Pennsylvania Ave" },
83
+ { "id":30, "latitude":40.7596168518066, "longitude":-73.9770278930664, "label":"640 5th Ave" },
84
+ { "id":127, "latitude":40.7467393577099, "longitude":-73.9434874802828, "label":"One Court Square" },
85
+ { "id":31, "latitude":40.6944847106934, "longitude":-73.9918975830078, "label":"181 Montague St" },
86
+ { "id":32, "latitude":40.6800851225853, "longitude":-73.9448621124029, "label":"1398 Fulton St" },
87
+ { "id":35, "latitude":40.6502075195313, "longitude":-73.9582672119141, "label":"885 Flatbush Ave" },
88
+ { "id":128, "latitude":41.1274453997612, "longitude":-73.7791559100151, "label":"1022 Broadway" },
89
+ { "id":131, "latitude":40.7455880194902, "longitude":-73.9993216842413, "label":"322 W. 23rd St" },
90
+ { "id":36, "latitude":40.6988792419434, "longitude":-73.9176177978516, "label":"1455 Myrtle Ave" },
91
+ { "id":132, "latitude":40.842227935791, "longitude":-73.3041915893555, "label":"6105 Jericho Turnpike" },
92
+ { "id":40, "latitude":40.7177346199751, "longitude":-73.7376876175404, "label":"217-10 Jamaica Ave" },
93
+ { "id":134, "latitude":41.1651306152344, "longitude":-73.8484268188477, "label":"22 Pleasantville Rd" },
94
+ { "id":137, "latitude":40.7702255249023, "longitude":-73.0636596679688, "label":"5801 Sunrise Hwy" },
95
+ { "id":133, "latitude":40.8551616221666, "longitude":-73.1936605274677, "label":"18 East Main St" },
96
+ { "id":138, "latitude":41.1127624511719, "longitude":-74.1069412231445, "label":"250 Route 59" },
97
+ { "id":139, "latitude":40.713614076376, "longitude":-73.9985720068216, "label":"Two Mott St" },
98
+ { "id":41, "latitude":40.730324909091, "longitude":-73.8619845360518, "label":"95-12 63rd Rd" },
99
+ { "id":140, "latitude":40.7369177788496, "longitude":-73.320547118783, "label":"1198 Deer Park Ave" },
100
+ { "id":42, "latitude":40.7199125736952, "longitude":-73.8436536490917, "label":"107-01 71st Ave" },
101
+ { "id":46, "latitude":40.7530143857002, "longitude":-73.9100550860167, "label":"51-31 Northern Blvd" },
102
+ { "id":47, "latitude":40.7134283334017, "longitude":-73.9153256267309, "label":"51-10 Metropolitan Ave" },
103
+ { "id":143, "latitude":40.7320334762335, "longitude":-73.9817672967911, "label":"262 First Ave" },
104
+ { "id":48, "latitude":40.6317946314812, "longitude":-73.9955243468285, "label":"5420 13th Ave" },
105
+ { "id":146, "latitude":40.6022420525551, "longitude":-73.9942543208599, "label":"2173 86th St" },
106
+ { "id":144, "latitude":40.7534103393555, "longitude":-73.9771881103516, "label":"200 Park Ave." },
107
+ { "id":149, "latitude":40.5773860216141, "longitude":-74.1695165634155, "label":"2825 Richmond Ave" },
108
+ { "id":145, "latitude":40.6726191937923, "longitude":-73.7709054350853, "label":"169-21 137th Ave" },
109
+ { "id":152, "latitude":40.828239440918, "longitude":-73.6841812133789, "label":"830 Port Washington Blvd" },
110
+ { "id":150, "latitude":40.678092956543, "longitude":-73.896858215332, "label":"80 Jamaica Ave" },
111
+ { "id":151, "latitude":40.674713999033, "longitude":-73.8050613552332, "label":"133-07 Rockaway Blvd" },
112
+ { "id":155, "latitude":40.7251515984535, "longitude":-73.4861279278994, "label":"4060 Hempstead Tpke" },
113
+ { "id":156, "latitude":40.7532386779785, "longitude":-73.4210891723633, "label":"2261 Broadhollow Rd" },
114
+ { "id":158, "latitude":40.7553977966309, "longitude":-73.5559158325195, "label":"1150 Old Country Rd" },
115
+ { "id":157, "latitude":40.7803077697754, "longitude":-73.248420715332, "label":"710 Suffolk Ave" },
116
+ { "id":64, "latitude":40.7585357129574, "longitude":-73.9927589893341, "label":"401 W. 42nd St" },
117
+ { "id":65, "latitude":40.8812561035156, "longitude":-73.9031219482422, "label":"5660 Broadway" },
118
+ { "id":161, "latitude":40.7384184747934, "longitude":-73.4948779642582, "label":"500 Hicksville Rd" },
119
+ { "id":162, "latitude":40.7944602966309, "longitude":-73.470832824707, "label":"100 Sunnyside Blvd" },
120
+ { "id":163, "latitude":40.7103981077671, "longitude":-73.7936559319496, "label":"168-48 Hillside Ave" },
121
+ { "id":167, "latitude":40.7881050109863, "longitude":-73.7285842895508, "label":"51 Middle Neck Rd" },
122
+ { "id":168, "latitude":40.7989883422852, "longitude":-73.6610946655273, "label":"1075 Northern Blvd" },
123
+ { "id":169, "latitude":40.7976150512695, "longitude":-73.7022323608398, "label":"66 Bayview Ave" },
124
+ { "id":172, "latitude":40.6700706481934, "longitude":-73.5282135009766, "label":"2160 Bedford Ave" },
125
+ { "id":173, "latitude":40.7876243591309, "longitude":-73.2007064819336, "label":"78 Carleton Ave" },
126
+ { "id":174, "latitude":40.7608871459961, "longitude":-73.3138275146484, "label":"400 Commack Rd" },
127
+ { "id":84, "latitude":40.9800071716309, "longitude":-73.6836471557617, "label":"1040 Boston Post Rd" },
128
+ { "id":85, "latitude":41.127025604248, "longitude":-73.7142028808594, "label":"435 Main St" },
129
+ { "id":175, "latitude":40.7027549743652, "longitude":-73.3772430419922, "label":"120 E. Sunrise Highway" },
130
+ { "id":19, "latitude":40.7841856777668, "longitude":-73.9563211798668, "label":"1275 Madison Ave" },
131
+ { "id":90, "latitude":41.3103294372559, "longitude":-73.8673400878906, "label":"3131 East Main St." },
132
+ { "id":180, "latitude":40.8508186340332, "longitude":-73.8513641357422, "label":"1800 Williamsbridge Rd" },
133
+ { "id":178, "latitude":40.6678733825684, "longitude":-73.4758071899414, "label":"10 Hicksville Rd" },
134
+ { "id":179, "latitude":40.6901735812426, "longitude":-73.6852953583002, "label":"670 Franklin Ave" },
135
+ { "id":183, "latitude":40.7476539611816, "longitude":-73.0503311157227, "label":"835 Montauk Highway" },
136
+ { "id":96, "latitude":40.9322090148926, "longitude":-73.759033203125, "label":"1920 Palmer Ave" },
137
+ { "id":185, "latitude":40.7424806803465, "longitude":-73.989225178957, "label":"1107 Broadway" },
138
+ { "id":184, "latitude":40.8563613891601, "longitude":-73.3904418945313, "label":"260 E. Pulaski Rd" },
139
+ { "id":97, "latitude":41.0431355237961, "longitude":-73.7978830933571, "label":"407 Tarrytown Rd" },
140
+ { "id":191, "latitude":40.7645492553711, "longitude":-73.9723358154297, "label":"785 5th Ave" },
141
+ { "id":189, "latitude":40.7507438659668, "longitude":-73.979362487793, "label":"90 Park Ave" },
142
+ { "id":190, "latitude":40.7541596889496, "longitude":-73.6921074986458, "label":"1524 Union Turnpike" },
143
+ { "id":197, "latitude":40.776782989502, "longitude":-73.4192199707031, "label":"425 Broad Hollow Rd Ste 105" },
144
+ { "id":195, "latitude":40.7579174637794, "longitude":-73.9792989939451, "label":"1 Rockefeller Plaza" },
145
+ { "id":196, "latitude":40.7525749206543, "longitude":-73.965934753418, "label":"866 United Nations Plaza - 1st Floor" },
146
+ { "id":107, "latitude":40.8454284667969, "longitude":-73.6156997680664, "label":"Two-One Park Plaza" },
147
+ { "id":111, "latitude":40.8101186156273, "longitude":-73.5103060305119, "label":"177 Jericho Tpke" },
148
+ { "id":112, "latitude":40.6667175292969, "longitude":-73.4552612304688, "label":"4881 Merrick Rd" },
149
+ { "id":113, "latitude":41.1577147990465, "longitude":-73.7730210274458, "label":"80 S. Greeley Ave" },
150
+ { "id":117, "latitude":40.7323801517487, "longitude":-73.4490410238504, "label":"250 Conklin St" },
151
+ { "id":118, "latitude":40.7898297160864, "longitude":-73.7040466815233, "label":"1110 Northern Blvd" },
152
+ { "id":201, "latitude":40.7292137145996, "longitude":-73.7026672363281, "label":"215 Jericho Tpke" },
153
+ { "id":203, "latitude":40.8075523376465, "longitude":-73.2593612670898, "label":"150 Vanderbilt Motor Pkwy" },
154
+ { "id":202, "latitude":40.9177469462156, "longitude":-73.0540079623461, "label":"4800 Nesconset Highway" },
155
+ { "id":209, "latitude":40.809116140008, "longitude":-73.9485394209623, "label":"201 W. 125th St" },
156
+ { "id":123, "latitude":40.5872498452663, "longitude":-73.9538917690516, "label":"1528 Sheepshead Bay Rd" },
157
+ { "id":206, "latitude":40.7238388061523, "longitude":-73.98486328125, "label":"50 Ave A" },
158
+ { "id":207, "latitude":40.7397723197937, "longitude":-73.6349342018366, "label":"114 Old Country Rd" },
159
+ { "id":208, "latitude":40.8054847717285, "longitude":-73.1802825927734, "label":"1727 Route 454" },
160
+ { "id":212, "latitude":40.7657814025879, "longitude":-73.9134521484375, "label":"25-91 Steinway St" },
161
+ { "id":213, "latitude":40.657752379775, "longitude":-73.5468222945929, "label":"2085 Merrick Rd" },
162
+ { "id":214, "latitude":40.7614170759916, "longitude":-73.6896894872189, "label":"5 Dakota Dr" },
163
+ { "id":217, "latitude":40.8804321289063, "longitude":-73.4268646240234, "label":"15 Southdown Rd" },
164
+ { "id":218, "latitude":40.5749664306641, "longitude":-73.9968948364258, "label":"3002 Mermaid Ave" },
165
+ { "id":219, "latitude":40.74752189219, "longitude":-73.8914962112904, "label":"37-57 74th St" },
166
+ { "id":222, "latitude":40.7282447814941, "longitude":-74.0047836303711, "label":"200 Varick St." },
167
+ { "id":129, "latitude":40.663828253746, "longitude":-73.8408648222685, "label":"156-19 Cross Bay Blvd" },
168
+ { "id":52, "latitude":42.9037895202637, "longitude":-75.5704879760742, "label":"442 Old Post Rd" },
169
+ { "id":53, "latitude":40.652172088623, "longitude":-73.7861938476563, "label":"Jfk International Airport" },
170
+ { "id":223, "latitude":40.7403302192688, "longitude":-73.9760964363813, "label":"485 1st Ave" },
171
+ { "id":54, "latitude":40.7439042627811, "longitude":-73.9268034696579, "label":"38-18 Queens Blvd" },
172
+ { "id":224, "latitude":40.6588478088379, "longitude":-73.6455307006836, "label":"41 Front Street" },
173
+ { "id":225, "latitude":40.7673645019531, "longitude":-73.98291015625, "label":"4 Columbus Circle" },
174
+ { "id":228, "latitude":40.7475128173828, "longitude":-73.986946105957, "label":"22 W. 32nd St" },
175
+ { "id":130, "latitude":40.6307411193848, "longitude":-74.1043090820313, "label":"445 Forest Ave" },
176
+ { "id":231, "latitude":40.7611562311649, "longitude":-73.9669400453568, "label":"974 Third Ave" },
177
+ { "id":229, "latitude":40.9348030090332, "longitude":-73.9020385742188, "label":"86 Main St - Station Plaza Bldg" },
178
+ { "id":58, "latitude":40.7756052911282, "longitude":-73.9839030057192, "label":"162 Amsterdam Ave" },
179
+ { "id":230, "latitude":40.7401237487793, "longitude":-73.9854354858398, "label":"115 E 23rd Street" },
180
+ { "id":59, "latitude":40.7503547668457, "longitude":-73.9827041625977, "label":"411 5th Ave" },
181
+ { "id":63, "latitude":40.8335296064615, "longitude":-73.8514769822359, "label":"1265 Castle Hill Ave" },
182
+ { "id":234, "latitude":40.7307434082031, "longitude":-73.6364593505859, "label":"1050 Franklin Ave" },
183
+ { "id":235, "latitude":40.7212753295898, "longitude":-74.0000228881836, "label":"476 Broadway" },
184
+ { "id":135, "latitude":40.8656577765942, "longitude":-73.1347598880529, "label":"131 Alexander Ave" },
185
+ { "id":136, "latitude":41.1545295715332, "longitude":-73.9879608154297, "label":"170 North Main St." },
186
+ { "id":237, "latitude":40.8758964538574, "longitude":-72.5367279052734, "label":"180 West Montauk Hwy" },
187
+ { "id":141, "latitude":40.631315857172, "longitude":-74.0277859568596, "label":"7501 3rd Ave" },
188
+ { "id":236, "latitude":40.9108516573906, "longitude":-73.781708702445, "label":"238 North Avenue" },
189
+ { "id":69, "latitude":40.8691558837891, "longitude":-73.8898010253906, "label":"234 E. 198th St" },
190
+ { "id":142, "latitude":40.6195335388184, "longitude":-73.9901351928711, "label":"6414 18th Ave" },
191
+ { "id":70, "latitude":40.846398845315, "longitude":-73.8318693637848, "label":"1766 Crosby Ave" },
192
+ { "id":241, "latitude":40.7563743591309, "longitude":-73.9769287109375, "label":"400 Madison" },
193
+ { "id":240, "latitude":40.7347116619349, "longitude":-73.990620598197, "label":"52 East 14th St" },
194
+ { "id":74, "latitude":40.5918426513672, "longitude":-74.0871353149414, "label":"1492 Hylan Blvd" },
195
+ { "id":75, "latitude":40.5265092104673, "longitude":-74.2012424021959, "label":"5810 Amboy Rd" },
196
+ { "id":147, "latitude":40.7083358764648, "longitude":-74.007194519043, "label":"100 William St" },
197
+ { "id":243, "latitude":40.6699101626873, "longitude":-73.9857544004917, "label":"424 5th Avenue" },
198
+ { "id":246, "latitude":40.7714780420065, "longitude":-73.9819858968258, "label":"1900 Broadway" },
199
+ { "id":247, "latitude":40.7335898280144, "longitude":-74.0032631903887, "label":"75 Christopher St." },
200
+ { "id":79, "latitude":40.6289843469858, "longitude":-73.9183685928583, "label":"1992 Ralph Ave" },
201
+ { "id":242, "latitude":41.0760650634766, "longitude":-73.8580856323242, "label":"2 South Broadway" },
202
+ { "id":249, "latitude":40.5775871276855, "longitude":-73.9600524902344, "label":"702 Brighton Beach Avenue" },
203
+ { "id":80, "latitude":40.7356712222099, "longitude":-73.8756497204304, "label":"87-11 Queens Blvd" },
204
+ { "id":248, "latitude":40.7324860990047, "longitude":-73.8494431972504, "label":"64-20 108th Street" },
205
+ { "id":153, "latitude":40.7232093811035, "longitude":-73.2460784912109, "label":"77 E. Main St" },
206
+ { "id":86, "latitude":41.2064337730408, "longitude":-73.7298367917538, "label":"66 S. Moger Ave" },
207
+ { "id":91, "latitude":41.0230699181557, "longitude":-73.7608310580254, "label":"444 Mamaroneck Ave" },
208
+ { "id":92, "latitude":40.9944111853838, "longitude":-73.8196264207363, "label":"845 Central Park Ave" },
209
+ { "id":98, "latitude":40.8925247937441, "longitude":-73.8194252550602, "label":"895 Pelham Pkwy" },
210
+ { "id":102, "latitude":40.793356820941, "longitude":-73.8083732128143, "label":"153-16 Tenth Ave" },
211
+ { "id":103, "latitude":40.8707734197378, "longitude":-73.4305988252163, "label":"349 Main St" },
212
+ { "id":164, "latitude":40.6153411865234, "longitude":-73.7462615966797, "label":"140 Doughty Blvd" },
213
+ { "id":124, "latitude":40.7163429260254, "longitude":-73.9973602294922, "label":"164 Canal St" },
214
+ { "id":148, "latitude":40.7206300646067, "longitude":-74.0101524442434, "label":"388 Greenwich St" },
215
+ { "id":165, "latitude":40.7415378838778, "longitude":-73.6399599909782, "label":"199 2nd St" },
216
+ { "id":154, "latitude":40.7789205014706, "longitude":-73.558821156621, "label":"8001 Brush Hollow Rd" },
217
+ { "id":166, "latitude":40.7057228088379, "longitude":-73.5930328369141, "label":"410 Uniondale Ave" },
218
+ { "id":159, "latitude":40.9168319702148, "longitude":-72.6653442382813, "label":"209 W. Main St" },
219
+ { "id":160, "latitude":40.7069244384766, "longitude":-73.5437545776367, "label":"651 Newbridge Rd" },
220
+ { "id":170, "latitude":40.8027647743507, "longitude":-73.5282595484525, "label":"Robbins Lane & Jericho Turnpike" },
221
+ { "id":171, "latitude":40.8624076843262, "longitude":-73.6327209472656, "label":"23 Glen Cove Ave" },
222
+ { "id":181, "latitude":40.8490447998047, "longitude":-73.6461791992188, "label":"263 Sea Cliff Ave" },
223
+ { "id":182, "latitude":40.8439979553223, "longitude":-73.3145751953125, "label":"710 Larkfield Rd" },
224
+ { "id":186, "latitude":40.7543907165527, "longitude":-73.9862289428711, "label":"1440 Broadway" },
225
+ { "id":176, "latitude":40.6571311950684, "longitude":-73.6726837158203, "label":"320 Merrick Rd" },
226
+ { "id":177, "latitude":40.8898582458496, "longitude":-73.8429183959961, "label":"3955 Baychester Ave" },
227
+ { "id":188, "latitude":40.7429949939251, "longitude":-73.616102412343, "label":"600 Old Country Rd" },
228
+ { "id":192, "latitude":40.8251094818115, "longitude":-73.2348787039518, "label":"730 Veterans Memorial Highway" },
229
+ { "id":193, "latitude":40.7556343078613, "longitude":-73.9713439941406, "label":"800 3rd Ave" },
230
+ { "id":194, "latitude":40.6402397155762, "longitude":-73.948127746582, "label":"1871 Nostrand Ave" },
231
+ { "id":200, "latitude":40.7832450866699, "longitude":-73.0987319946289, "label":"4175 Veterans Memorial Highway" },
232
+ { "id":220, "latitude":40.7581682503223, "longitude":-73.9629556238651, "label":"1044 1st Ave" },
233
+ { "id":221, "latitude":40.8209228515625, "longitude":-73.939079284668, "label":"2481 Adam Clayton Powell Blvd" },
234
+ { "id":226, "latitude":40.7513427734375, "longitude":-73.9751586914063, "label":"145 East 42nd Street" },
235
+ { "id":187, "latitude":40.7626415044069, "longitude":-73.9784923195839, "label":"1345 Avenue of The Americas" },
236
+ { "id":227, "latitude":40.7759486138821, "longitude":-73.9560160785913, "label":"1445 Third Ave" },
237
+ { "id":232, "latitude":40.7833290100098, "longitude":-73.9740600585938, "label":"441 Columbus Ave" },
238
+ { "id":198, "latitude":40.8191301673651, "longitude":-73.4115444123745, "label":"300 Walt Whitman Rd" },
239
+ { "id":239, "latitude":40.7616806030273, "longitude":-73.9817962646484, "label":"787 7th Avenue" },
240
+ { "id":244, "latitude":40.6451950073242, "longitude":-73.9494018554688, "label":"139 Flatbush Avenue, Atlantic Terminal" },
241
+ { "id":199, "latitude":40.6223983764648, "longitude":-73.7234497070313, "label":"530 Central Ave" },
242
+ { "id":245, "latitude":40.7303591072559, "longitude":-73.9926651120186, "label":"749 Broadway" },
243
+ { "id":250, "latitude":40.7131990045309, "longitude":-73.8750375062227, "label":"78-09 Metropolitan Ave" },
244
+ { "id":204, "latitude":40.8327674865723, "longitude":-73.8908843994141, "label":"1463 Southern Blvd" },
245
+ { "id":205, "latitude":40.6795272827148, "longitude":-73.4168472290039, "label":"241 Broadway" },
246
+ { "id":210, "latitude":40.7257410138845, "longitude":-73.5081421583891, "label":"3375 Hempstead Turnpike" },
247
+ { "id":211, "latitude":40.866304859519, "longitude":-73.0366621166468, "label":"684 Middle Country Rd" },
248
+ { "id":215, "latitude":40.6230316162109, "longitude":-74.0291366577148, "label":"502-512 86th St" },
249
+ { "id":216, "latitude":40.6989860534668, "longitude":-73.4092712402344, "label":"455 Albany Ave" },
250
+ { "id":233, "latitude":40.7200622558594, "longitude":-74.0022430419922, "label":"309 Canal St" },
251
+ { "id":238, "latitude":40.6338357925415, "longitude":-73.6406131088734, "label":"3195 Long Beach Rd" }
252
+ ]
253
+ ,"lastUpdate": 1367853735}