nyc_geo_client 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.travis.yml +9 -0
  4. data/Gemfile +2 -0
  5. data/LICENSE +22 -0
  6. data/README.md +81 -0
  7. data/Rakefile +30 -0
  8. data/lib/faraday/raise_http_exception.rb +26 -0
  9. data/lib/nyc_geo_client.rb +26 -0
  10. data/lib/nyc_geo_client/api.rb +21 -0
  11. data/lib/nyc_geo_client/client.rb +13 -0
  12. data/lib/nyc_geo_client/client/address.rb +34 -0
  13. data/lib/nyc_geo_client/client/bbl.rb +31 -0
  14. data/lib/nyc_geo_client/client/bin.rb +27 -0
  15. data/lib/nyc_geo_client/client/blockface.rb +37 -0
  16. data/lib/nyc_geo_client/client/intersection.rb +34 -0
  17. data/lib/nyc_geo_client/client/place.rb +29 -0
  18. data/lib/nyc_geo_client/configuration.rb +84 -0
  19. data/lib/nyc_geo_client/connection.rb +30 -0
  20. data/lib/nyc_geo_client/error.rb +12 -0
  21. data/lib/nyc_geo_client/request.rb +59 -0
  22. data/lib/nyc_geo_client/version.rb +3 -0
  23. data/nyc_geo_client.gemspec +28 -0
  24. data/spec/faraday/response_spec.rb +43 -0
  25. data/spec/fixtures/address.json +142 -0
  26. data/spec/fixtures/address.xml +142 -0
  27. data/spec/fixtures/authentication_failed +1 -0
  28. data/spec/fixtures/bbl.json +45 -0
  29. data/spec/fixtures/bbl.xml +45 -0
  30. data/spec/fixtures/bin.json +43 -0
  31. data/spec/fixtures/bin.xml +43 -0
  32. data/spec/fixtures/blockface.json +99 -0
  33. data/spec/fixtures/blockface.xml +99 -0
  34. data/spec/fixtures/intersection.json +69 -0
  35. data/spec/fixtures/intersection.xml +69 -0
  36. data/spec/fixtures/place.json +177 -0
  37. data/spec/fixtures/place.xml +177 -0
  38. data/spec/nyc_geo_client/api_spec.rb +67 -0
  39. data/spec/nyc_geo_client/client/address_spec.rb +45 -0
  40. data/spec/nyc_geo_client/client/bbl_spec.rb +45 -0
  41. data/spec/nyc_geo_client/client/bin_spec.rb +41 -0
  42. data/spec/nyc_geo_client/client/blockface_spec.rb +49 -0
  43. data/spec/nyc_geo_client/client/intersection_spec.rb +47 -0
  44. data/spec/nyc_geo_client/client/place_spec.rb +43 -0
  45. data/spec/nyc_geo_client/client_spec.rb +11 -0
  46. data/spec/nyc_geo_client_spec.rb +108 -0
  47. data/spec/spec_helper.rb +51 -0
  48. metadata +254 -0
@@ -0,0 +1,84 @@
1
+ require 'faraday'
2
+ require File.expand_path('../version', __FILE__)
3
+
4
+ module NYCGeoClient
5
+ # Defines constants and methods related to configuration
6
+ module Configuration
7
+ # An array of valid keys in the options hash when configuring a {NYCGeoClient::API}
8
+ VALID_OPTIONS_KEYS = [
9
+ :adapter,
10
+ :app_id,
11
+ :app_key,
12
+ :endpoint,
13
+ :format,
14
+ :user_agent,
15
+ :proxy,
16
+ :debug
17
+ ].freeze
18
+
19
+ # An array of valid request/response formats
20
+ VALID_FORMATS = [:json, :xml].freeze
21
+
22
+ # The adapter that will be used to connect if none is set
23
+ #
24
+ # @note The default faraday adapter is Net::HTTP.
25
+ DEFAULT_ADAPTER = Faraday.default_adapter
26
+
27
+ # By default, don't set an application ID
28
+ DEFAULT_APP_ID = nil
29
+
30
+ # By default, don't set an application KEY
31
+ DEFAULT_APP_KEY = nil
32
+
33
+ # The endpoint that will be used to connect if none is set
34
+ #
35
+ # @note There is no reason to use any other endpoint at this time
36
+ DEFAULT_ENDPOINT = 'https://api.cityofnewyork.us/geoclient/v1/'.freeze
37
+
38
+ # The response format appended to the path and sent in the 'Accept' header if none is set
39
+ #
40
+ # @note JSON and XML are the available formats
41
+ DEFAULT_FORMAT = :json
42
+
43
+ # By default, don't use a proxy server
44
+ DEFAULT_PROXY = nil
45
+
46
+ # By default, dont' log the request/response
47
+ DEFAULT_DEBUG = false
48
+
49
+ # The user agent that will be sent to the API endpoint if none is set
50
+ DEFAULT_USER_AGENT = "NYCGeoClient #{NYCGeoClient::VERSION}".freeze
51
+
52
+ # @private
53
+ attr_accessor *VALID_OPTIONS_KEYS
54
+
55
+ # When this module is extended, set all configuration options to their default values
56
+ def self.extended(base)
57
+ base.reset
58
+ end
59
+
60
+ # Convenience method to allow configuration options to be set in a block
61
+ def configure
62
+ yield self
63
+ end
64
+
65
+ # Create a hash of options and their values
66
+ def options
67
+ VALID_OPTIONS_KEYS.inject({}) do |option, key|
68
+ option.merge!(key => send(key))
69
+ end
70
+ end
71
+
72
+ # Reset all configuration options to defaults
73
+ def reset
74
+ self.adapter = DEFAULT_ADAPTER
75
+ self.app_id = DEFAULT_APP_ID
76
+ self.app_key = DEFAULT_APP_KEY
77
+ self.endpoint = DEFAULT_ENDPOINT
78
+ self.format = DEFAULT_FORMAT
79
+ self.user_agent = DEFAULT_USER_AGENT
80
+ self.proxy = DEFAULT_PROXY
81
+ self.debug = DEFAULT_DEBUG
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,30 @@
1
+ require 'faraday_middleware'
2
+ Dir[File.expand_path('../../faraday/*.rb', __FILE__)].each{|f| require f}
3
+
4
+ module NYCGeoClient
5
+ # @private
6
+ module Connection
7
+ private
8
+
9
+ def connection(raw=false)
10
+ options = {
11
+ :headers => {'Accept' => "application/json; charset=utf-8", 'User-Agent' => user_agent},
12
+ :proxy => proxy,
13
+ :ssl => {:verify => false},
14
+ :url => endpoint,
15
+ }
16
+
17
+ Faraday::Connection.new(options) do |connection|
18
+ connection.use Faraday::Request::UrlEncoded
19
+ unless raw
20
+ connection.use FaradayMiddleware::Mashify
21
+ connection.use Faraday::Response::ParseJson if format == :json
22
+ connection.use Faraday::Response::ParseXml if format == :xml
23
+ end
24
+ connection.use FaradayMiddleware::RaiseHttpException
25
+ connection.use Faraday::Response::Logger if debug
26
+ connection.adapter(adapter)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,12 @@
1
+ module NYCGeoClient
2
+ # Custom error class for rescuing from all NYCGeoClient errors
3
+ class Error < StandardError
4
+ attr_reader :status
5
+
6
+ def initialize(message, status=nil)
7
+ super(message)
8
+ @status = status
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,59 @@
1
+ module NYCGeoClient
2
+ # Defines HTTP request methods
3
+ module Request
4
+ # Perform an HTTP GET request
5
+ def get(path, options={}, raw=false)
6
+ request(:get, path, options, raw)
7
+ end
8
+
9
+ # Perform an HTTP POST request
10
+ def post(path, options={}, raw=false)
11
+ request(:post, path, options, raw)
12
+ end
13
+
14
+ # Perform an HTTP PUT request
15
+ def put(path, options={}, raw=false)
16
+ request(:put, path, options, raw)
17
+ end
18
+
19
+ # Perform an HTTP DELETE request
20
+ def delete(path, options={}, raw=false)
21
+ request(:delete, path, options, raw)
22
+ end
23
+
24
+ private
25
+
26
+ # Perform an HTTP request
27
+ def request(method, path, options, raw=false)
28
+ new_options = access_params.merge(options)
29
+ response = connection(raw).send(method) do |request|
30
+ path = formatted_path(path)
31
+ case method
32
+ when :get, :delete
33
+ request.url(path, new_options)
34
+ when :post, :put
35
+ request.path = path
36
+ request.body = new_options unless new_options.empty?
37
+ end
38
+ end
39
+ if raw
40
+ response
41
+ elsif format == :xml
42
+ response.body.geosupportResponse # the xml response is wrapped in <geosupportResponse> tags
43
+ else
44
+ response.body
45
+ end
46
+ end
47
+
48
+ def formatted_path(path)
49
+ [path, format].compact.join('.')
50
+ end
51
+
52
+ def access_params
53
+ hash = {}
54
+ hash[:app_id] = app_id if app_id
55
+ hash[:app_key] = app_key if app_key
56
+ hash
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,3 @@
1
+ module NYCGeoClient
2
+ VERSION = "0.0.1".freeze unless defined?(::NYCGeoClient::VERSION)
3
+ end
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/nyc_geo_client/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.add_development_dependency 'rake'
6
+ gem.add_development_dependency('rspec', '~> 2.14.1')
7
+ gem.add_development_dependency('webmock', '~> 1.17.1')
8
+ gem.add_development_dependency('yard', '~> 0.8.7.3')
9
+ gem.add_development_dependency('bluecloth', '~> 2.2.0')
10
+
11
+ gem.add_runtime_dependency('faraday', '~> 0.8.8')
12
+ gem.add_runtime_dependency('faraday_middleware', '~> 0.9.0')
13
+ gem.add_runtime_dependency('multi_json', '~> 1.8.4')
14
+ gem.add_runtime_dependency('multi_xml', '~> 0.5.5')
15
+ gem.add_runtime_dependency('hashie', '~> 2.0.5')
16
+ gem.authors = ["Edgar Gonzalez"]
17
+ gem.email = ["edgargonzalez@gmail.com"]
18
+ gem.description = %q{A ruby wrapper for NYCGeoClient API}
19
+ gem.homepage = "http://github.com/edgar/NYCGeoClient"
20
+
21
+ gem.files = `git ls-files`.split($\)
22
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
23
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
24
+ gem.summary = %q{A ruby wrapper for NYCGeoClient API}
25
+ gem.name = "nyc_geo_client"
26
+ gem.require_paths = ["lib"]
27
+ gem.version = NYCGeoClient::VERSION.dup
28
+ end
@@ -0,0 +1,43 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe Faraday::Response do
4
+ before do
5
+ @client = NYCGeoClient::Client.new(app_id: 'foo', app_key: 'bar')
6
+ end
7
+
8
+ [403, 500, 503].each do |status|
9
+ context "when HTTP status is #{status}" do
10
+ before do
11
+ stub_get("address.json").
12
+ with(
13
+ query: {
14
+ app_id: @client.app_id,
15
+ app_key: @client.app_key,
16
+ houseNumber: '13',
17
+ street: 'crosby',
18
+ borough: 'manhattan'
19
+ }).
20
+ to_return(body: 'some message', status: status)
21
+ end
22
+
23
+ it "should raise a NYCGeoClient error" do
24
+ lambda do
25
+ @client.address('13','crosby','manhattan')
26
+ end.should raise_error(NYCGeoClient::Error)
27
+ end
28
+
29
+ it "should return the status and body" do
30
+ begin
31
+ @client.address('13','crosby','manhattan')
32
+ rescue NYCGeoClient::Error => ex
33
+ ex.status.should be == status
34
+ ex.message.split(": ").should be == [
35
+ "GET https://api.cityofnewyork.us/geoclient/v1/address.json?app_id=foo&app_key=bar&houseNumber=13&street=crosby&borough=manhattan",
36
+ "#{status}",
37
+ "some message"
38
+ ]
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,142 @@
1
+ {
2
+ "address": {
3
+ "assemblyDistrict": "65",
4
+ "bbl": "1002330004",
5
+ "bblBoroughCode": "1",
6
+ "bblTaxBlock": "00233",
7
+ "bblTaxLot": "0004",
8
+ "boardOfElectionsPreferredLgc": "1",
9
+ "boePreferredStreetName": "CROSBY STREET",
10
+ "boePreferredstreetCode": "11615001",
11
+ "boroughCode1In": "1",
12
+ "buildingIdentificationNumber": "1003041",
13
+ "censusBlock2000": "2001",
14
+ "censusBlock2010": "1009",
15
+ "censusTract1990": " 45 ",
16
+ "censusTract2000": " 45 ",
17
+ "censusTract2010": " 45 ",
18
+ "cityCouncilDistrict": "01",
19
+ "civilCourtDistrict": "01",
20
+ "coincidentSegmentCount": "1",
21
+ "communityDistrict": "102",
22
+ "communityDistrictBoroughCode": "1",
23
+ "communityDistrictNumber": "02",
24
+ "communitySchoolDistrict": "02",
25
+ "condominiumBillingBbl": "0000000000",
26
+ "congressionalDistrict": "10",
27
+ "cooperativeIdNumber": "0000",
28
+ "crossStreetNamesFlagIn": "E",
29
+ "dcpCommercialStudyArea": "11010",
30
+ "dcpPreferredLgc": "01",
31
+ "dotStreetLightContractorArea": "1",
32
+ "dynamicBlock": "202",
33
+ "electionDistrict": "067",
34
+ "fireBattalion": "02",
35
+ "fireCompanyNumber": "055",
36
+ "fireCompanyType": "E",
37
+ "fireDivision": "01",
38
+ "firstBoroughName": "MANHATTAN",
39
+ "firstStreetCode": "11615001010",
40
+ "firstStreetNameNormalized": "CROSBY STREET",
41
+ "fromLionNodeId": "0020487",
42
+ "fromPreferredLgcsFirstSetOf5": "01",
43
+ "genericId": "0001675",
44
+ "geosupportFunctionCode": "1B",
45
+ "geosupportReturnCode": "00",
46
+ "geosupportReturnCode2": "00",
47
+ "gi5DigitStreetCode1": "16150",
48
+ "giBoroughCode1": "1",
49
+ "giBuildingIdentificationNumber1": "1003041",
50
+ "giDcpPreferredLgc1": "01",
51
+ "giHighHouseNumber1": "17",
52
+ "giLowHouseNumber1": "13",
53
+ "giSideOfStreetIndicator1": "R",
54
+ "giStreetCode1": "11615001",
55
+ "giStreetName1": "CROSBY STREET",
56
+ "healthArea": "6800",
57
+ "healthCenterDistrict": "15",
58
+ "highBblOfThisBuildingsCondominiumUnits": "1002330004",
59
+ "highCrossStreetB5SC1": "121690",
60
+ "highCrossStreetCode1": "12169001",
61
+ "highCrossStreetName1": "GRAND STREET",
62
+ "highHouseNumberOfBlockfaceSortFormat": "000021000AA",
63
+ "houseNumber": "13",
64
+ "houseNumberIn": "13",
65
+ "houseNumberSortFormat": "000013000AA",
66
+ "interimAssistanceEligibilityIndicator": "I",
67
+ "internalLabelXCoordinate": "0984265",
68
+ "internalLabelYCoordinate": "0201584",
69
+ "latitude": 40.72004956043429,
70
+ "latitudeInternalLabel": 40.719978196825956,
71
+ "legacySegmentId": "0032326",
72
+ "lionBoroughCode": "1",
73
+ "lionBoroughCodeForVanityAddress": "1",
74
+ "lionFaceCode": "1045",
75
+ "lionFaceCodeForVanityAddress": "1045",
76
+ "lionKey": "1104500010",
77
+ "lionKeyForVanityAddress": "1104500010",
78
+ "lionSequenceNumber": "00010",
79
+ "lionSequenceNumberForVanityAddress": "00010",
80
+ "listOf4Lgcs": "01",
81
+ "longitude": -74.00018037684704,
82
+ "longitudeInternalLabel": -73.99994588700383,
83
+ "lowBblOfThisBuildingsCondominiumUnits": "1002330004",
84
+ "lowCrossStreetB5SC1": "123130",
85
+ "lowCrossStreetCode1": "12313001",
86
+ "lowCrossStreetName1": "HOWARD STREET",
87
+ "lowHouseNumberOfBlockfaceSortFormat": "000001000AA",
88
+ "lowHouseNumberOfDefiningAddressRange": "000013000AA",
89
+ "nta": "MN24",
90
+ "ntaName": "SoHo-TriBeCa-Civic Center-Little Italy",
91
+ "numberOfCrossStreetB5SCsHighAddressEnd": "1",
92
+ "numberOfCrossStreetB5SCsLowAddressEnd": "1",
93
+ "numberOfCrossStreetsHighAddressEnd": "1",
94
+ "numberOfCrossStreetsLowAddressEnd": "1",
95
+ "numberOfEntriesInListOfGeographicIdentifiers": "0001",
96
+ "numberOfExistingStructuresOnLot": "0001",
97
+ "numberOfStreetFrontagesOfLot": "01",
98
+ "physicalId": "0001905",
99
+ "policePatrolBoroughCommand": "1",
100
+ "policePrecinct": "005",
101
+ "returnCode1a": "00",
102
+ "returnCode1e": "00",
103
+ "roadwayType": "1",
104
+ "rpadBuildingClassificationCode": "O9",
105
+ "rpadSelfCheckCodeForBbl": "9",
106
+ "sanbornBoroughCode": "1",
107
+ "sanbornPageNumber": "047",
108
+ "sanbornVolumeNumber": "01",
109
+ "sanbornVolumeNumberSuffix": "N",
110
+ "sanitationCollectionSchedulingSectionAndSubsection": "1A",
111
+ "sanitationDistrict": "102",
112
+ "sanitationRecyclingCollectionSchedule": "EW",
113
+ "sanitationRegularCollectionSchedule": "MWF",
114
+ "sanitationSnowPriorityCode": "P",
115
+ "segmentAzimuth": "056",
116
+ "segmentIdentifier": "0032326",
117
+ "segmentLengthInFeet": "00383",
118
+ "segmentOrientation": "N",
119
+ "segmentTypeCode": "U",
120
+ "sideOfStreetIndicator": "R",
121
+ "sideOfStreetOfVanityAddress": "R",
122
+ "splitLowHouseNumber": "000001000AA",
123
+ "stateSenatorialDistrict": "26",
124
+ "streetName1In": "CROSBY",
125
+ "streetStatus": "2",
126
+ "taxMapNumberSectionAndVolume": "10105",
127
+ "toLionNodeId": "0020491",
128
+ "toPreferredLgcsFirstSetOf5": "01",
129
+ "trafficDirection": "W",
130
+ "underlyingStreetCode": "11615001",
131
+ "workAreaFormatIndicatorIn": "C",
132
+ "xCoordinate": "0984200",
133
+ "xCoordinateHighAddressEnd": "0984287",
134
+ "xCoordinateLowAddressEnd": "0984078",
135
+ "xCoordinateOfCenterofCurvature": "0000000",
136
+ "yCoordinate": "0201610",
137
+ "yCoordinateHighAddressEnd": "0201750",
138
+ "yCoordinateLowAddressEnd": "0201429",
139
+ "yCoordinateOfCenterofCurvature": "0000000",
140
+ "zipCode": "10013"
141
+ }
142
+ }
@@ -0,0 +1,142 @@
1
+ <geosupportResponse>
2
+ <address>
3
+ <assemblyDistrict>65</assemblyDistrict>
4
+ <bbl>1002330004</bbl>
5
+ <bblBoroughCode>1</bblBoroughCode>
6
+ <bblTaxBlock>00233</bblTaxBlock>
7
+ <bblTaxLot>0004</bblTaxLot>
8
+ <boardOfElectionsPreferredLgc>1</boardOfElectionsPreferredLgc>
9
+ <boePreferredStreetName>CROSBY STREET</boePreferredStreetName>
10
+ <boePreferredstreetCode>11615001</boePreferredstreetCode>
11
+ <boroughCode1In>1</boroughCode1In>
12
+ <buildingIdentificationNumber>1003041</buildingIdentificationNumber>
13
+ <censusBlock2000>2001</censusBlock2000>
14
+ <censusBlock2010>1009</censusBlock2010>
15
+ <censusTract1990> 45 </censusTract1990>
16
+ <censusTract2000> 45 </censusTract2000>
17
+ <censusTract2010> 45 </censusTract2010>
18
+ <cityCouncilDistrict>01</cityCouncilDistrict>
19
+ <civilCourtDistrict>01</civilCourtDistrict>
20
+ <coincidentSegmentCount>1</coincidentSegmentCount>
21
+ <communityDistrict>102</communityDistrict>
22
+ <communityDistrictBoroughCode>1</communityDistrictBoroughCode>
23
+ <communityDistrictNumber>02</communityDistrictNumber>
24
+ <communitySchoolDistrict>02</communitySchoolDistrict>
25
+ <condominiumBillingBbl>0000000000</condominiumBillingBbl>
26
+ <congressionalDistrict>10</congressionalDistrict>
27
+ <cooperativeIdNumber>0000</cooperativeIdNumber>
28
+ <crossStreetNamesFlagIn>E</crossStreetNamesFlagIn>
29
+ <dcpCommercialStudyArea>11010</dcpCommercialStudyArea>
30
+ <dcpPreferredLgc>01</dcpPreferredLgc>
31
+ <dotStreetLightContractorArea>1</dotStreetLightContractorArea>
32
+ <dynamicBlock>202</dynamicBlock>
33
+ <electionDistrict>067</electionDistrict>
34
+ <fireBattalion>02</fireBattalion>
35
+ <fireCompanyNumber>055</fireCompanyNumber>
36
+ <fireCompanyType>E</fireCompanyType>
37
+ <fireDivision>01</fireDivision>
38
+ <firstBoroughName>MANHATTAN</firstBoroughName>
39
+ <firstStreetCode>11615001010</firstStreetCode>
40
+ <firstStreetNameNormalized>CROSBY STREET</firstStreetNameNormalized>
41
+ <fromLionNodeId>0020487</fromLionNodeId>
42
+ <fromPreferredLgcsFirstSetOf5>01</fromPreferredLgcsFirstSetOf5>
43
+ <genericId>0001675</genericId>
44
+ <geosupportFunctionCode>1B</geosupportFunctionCode>
45
+ <geosupportReturnCode>00</geosupportReturnCode>
46
+ <geosupportReturnCode2>00</geosupportReturnCode2>
47
+ <gi5DigitStreetCode1>16150</gi5DigitStreetCode1>
48
+ <giBoroughCode1>1</giBoroughCode1>
49
+ <giBuildingIdentificationNumber1>1003041</giBuildingIdentificationNumber1>
50
+ <giDcpPreferredLgc1>01</giDcpPreferredLgc1>
51
+ <giHighHouseNumber1>17</giHighHouseNumber1>
52
+ <giLowHouseNumber1>13</giLowHouseNumber1>
53
+ <giSideOfStreetIndicator1>R</giSideOfStreetIndicator1>
54
+ <giStreetCode1>11615001</giStreetCode1>
55
+ <giStreetName1>CROSBY STREET</giStreetName1>
56
+ <healthArea>6800</healthArea>
57
+ <healthCenterDistrict>15</healthCenterDistrict>
58
+ <highBblOfThisBuildingsCondominiumUnits>1002330004</highBblOfThisBuildingsCondominiumUnits>
59
+ <highCrossStreetB5SC1>121690</highCrossStreetB5SC1>
60
+ <highCrossStreetCode1>12169001</highCrossStreetCode1>
61
+ <highCrossStreetName1>GRAND STREET</highCrossStreetName1>
62
+ <highHouseNumberOfBlockfaceSortFormat>000021000AA</highHouseNumberOfBlockfaceSortFormat>
63
+ <houseNumber>13</houseNumber>
64
+ <houseNumberIn>13</houseNumberIn>
65
+ <houseNumberSortFormat>000013000AA</houseNumberSortFormat>
66
+ <interimAssistanceEligibilityIndicator>I</interimAssistanceEligibilityIndicator>
67
+ <internalLabelXCoordinate>0984265</internalLabelXCoordinate>
68
+ <internalLabelYCoordinate>0201584</internalLabelYCoordinate>
69
+ <latitude>40.72004956043429</latitude>
70
+ <latitudeInternalLabel>40.719978196825956</latitudeInternalLabel>
71
+ <legacySegmentId>0032326</legacySegmentId>
72
+ <lionBoroughCode>1</lionBoroughCode>
73
+ <lionBoroughCodeForVanityAddress>1</lionBoroughCodeForVanityAddress>
74
+ <lionFaceCode>1045</lionFaceCode>
75
+ <lionFaceCodeForVanityAddress>1045</lionFaceCodeForVanityAddress>
76
+ <lionKey>1104500010</lionKey>
77
+ <lionKeyForVanityAddress>1104500010</lionKeyForVanityAddress>
78
+ <lionSequenceNumber>00010</lionSequenceNumber>
79
+ <lionSequenceNumberForVanityAddress>00010</lionSequenceNumberForVanityAddress>
80
+ <listOf4Lgcs>01</listOf4Lgcs>
81
+ <longitude>-74.00018037684704</longitude>
82
+ <longitudeInternalLabel>-73.99994588700383</longitudeInternalLabel>
83
+ <lowBblOfThisBuildingsCondominiumUnits>1002330004</lowBblOfThisBuildingsCondominiumUnits>
84
+ <lowCrossStreetB5SC1>123130</lowCrossStreetB5SC1>
85
+ <lowCrossStreetCode1>12313001</lowCrossStreetCode1>
86
+ <lowCrossStreetName1>HOWARD STREET</lowCrossStreetName1>
87
+ <lowHouseNumberOfBlockfaceSortFormat>000001000AA</lowHouseNumberOfBlockfaceSortFormat>
88
+ <lowHouseNumberOfDefiningAddressRange>000013000AA</lowHouseNumberOfDefiningAddressRange>
89
+ <nta>MN24</nta>
90
+ <ntaName>SoHo-TriBeCa-Civic Center-Little Italy</ntaName>
91
+ <numberOfCrossStreetB5SCsHighAddressEnd>1</numberOfCrossStreetB5SCsHighAddressEnd>
92
+ <numberOfCrossStreetB5SCsLowAddressEnd>1</numberOfCrossStreetB5SCsLowAddressEnd>
93
+ <numberOfCrossStreetsHighAddressEnd>1</numberOfCrossStreetsHighAddressEnd>
94
+ <numberOfCrossStreetsLowAddressEnd>1</numberOfCrossStreetsLowAddressEnd>
95
+ <numberOfEntriesInListOfGeographicIdentifiers>0001</numberOfEntriesInListOfGeographicIdentifiers>
96
+ <numberOfExistingStructuresOnLot>0001</numberOfExistingStructuresOnLot>
97
+ <numberOfStreetFrontagesOfLot>01</numberOfStreetFrontagesOfLot>
98
+ <physicalId>0001905</physicalId>
99
+ <policePatrolBoroughCommand>1</policePatrolBoroughCommand>
100
+ <policePrecinct>005</policePrecinct>
101
+ <returnCode1a>00</returnCode1a>
102
+ <returnCode1e>00</returnCode1e>
103
+ <roadwayType>1</roadwayType>
104
+ <rpadBuildingClassificationCode>O9</rpadBuildingClassificationCode>
105
+ <rpadSelfCheckCodeForBbl>9</rpadSelfCheckCodeForBbl>
106
+ <sanbornBoroughCode>1</sanbornBoroughCode>
107
+ <sanbornPageNumber>047</sanbornPageNumber>
108
+ <sanbornVolumeNumber>01</sanbornVolumeNumber>
109
+ <sanbornVolumeNumberSuffix>N</sanbornVolumeNumberSuffix>
110
+ <sanitationCollectionSchedulingSectionAndSubsection>1A</sanitationCollectionSchedulingSectionAndSubsection>
111
+ <sanitationDistrict>102</sanitationDistrict>
112
+ <sanitationRecyclingCollectionSchedule>EW</sanitationRecyclingCollectionSchedule>
113
+ <sanitationRegularCollectionSchedule>MWF</sanitationRegularCollectionSchedule>
114
+ <sanitationSnowPriorityCode>P</sanitationSnowPriorityCode>
115
+ <segmentAzimuth>056</segmentAzimuth>
116
+ <segmentIdentifier>0032326</segmentIdentifier>
117
+ <segmentLengthInFeet>00383</segmentLengthInFeet>
118
+ <segmentOrientation>N</segmentOrientation>
119
+ <segmentTypeCode>U</segmentTypeCode>
120
+ <sideOfStreetIndicator>R</sideOfStreetIndicator>
121
+ <sideOfStreetOfVanityAddress>R</sideOfStreetOfVanityAddress>
122
+ <splitLowHouseNumber>000001000AA</splitLowHouseNumber>
123
+ <stateSenatorialDistrict>26</stateSenatorialDistrict>
124
+ <streetName1In>CROSBY</streetName1In>
125
+ <streetStatus>2</streetStatus>
126
+ <taxMapNumberSectionAndVolume>10105</taxMapNumberSectionAndVolume>
127
+ <toLionNodeId>0020491</toLionNodeId>
128
+ <toPreferredLgcsFirstSetOf5>01</toPreferredLgcsFirstSetOf5>
129
+ <trafficDirection>W</trafficDirection>
130
+ <underlyingStreetCode>11615001</underlyingStreetCode>
131
+ <workAreaFormatIndicatorIn>C</workAreaFormatIndicatorIn>
132
+ <xCoordinate>0984200</xCoordinate>
133
+ <xCoordinateHighAddressEnd>0984287</xCoordinateHighAddressEnd>
134
+ <xCoordinateLowAddressEnd>0984078</xCoordinateLowAddressEnd>
135
+ <xCoordinateOfCenterofCurvature>0000000</xCoordinateOfCenterofCurvature>
136
+ <yCoordinate>0201610</yCoordinate>
137
+ <yCoordinateHighAddressEnd>0201750</yCoordinateHighAddressEnd>
138
+ <yCoordinateLowAddressEnd>0201429</yCoordinateLowAddressEnd>
139
+ <yCoordinateOfCenterofCurvature>0000000</yCoordinateOfCenterofCurvature>
140
+ <zipCode>10013</zipCode>
141
+ </address>
142
+ </geosupportResponse>