phl-opa 0.0.5 → 0.1.0
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.
- checksums.yaml +7 -0
- data/Gemfile +1 -1
- data/README.md +9 -15
- data/lib/phl_opa/api.rb +8 -10
- data/lib/phl_opa/version.rb +1 -1
- data/phl-opa.gemspec +1 -1
- data/spec/lib/phl_opa_spec.rb +27 -53
- metadata +15 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 302a66b3a6f0431602db8a3c835f641205173952
|
4
|
+
data.tar.gz: db7ee91c1eab40d715cc8fa224d26ce8a26c6eca
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d4241aad37b90711fbecc1360bcf3cacb02ed370c82aa9bdd139a7f50b675008b3eed6c3ba82dc34e1bdb16bd13c50a7c6ed6c33dfae2aa5b5daf9dfecc9ed67
|
7
|
+
data.tar.gz: 54a207d6ac96f3364a4c7f56060ff25ea05b12db45eb2db489395760ea7fd31b3993675056fe95495f37ba29e182bb795b8f366a134ce86e9518306b68c10c65
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -20,13 +20,15 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
+
Require the module
|
24
|
+
|
25
|
+
require 'phl_opa'
|
26
|
+
|
23
27
|
**#get_by_account**
|
24
28
|
|
25
29
|
Returns the property details for the provided OPA account number. This method returns the most amount of data about a given property. If you have an address, but not an OPA account number. Use the `#search_by_address` method to find the OPA account number, then this method to get all the details about the property.
|
26
30
|
|
27
|
-
|
28
|
-
phl_opa = PHLopa::API.new
|
29
|
-
phl_opa.get_by_account(883309000)
|
31
|
+
PHLopa.get_by_account(883309000)
|
30
32
|
|
31
33
|
Response:
|
32
34
|
|
@@ -54,9 +56,7 @@ Response:
|
|
54
56
|
|
55
57
|
Searches for properties that match the provided address. In the response, the `data.properties` key is always an array, even if there is only one result
|
56
58
|
|
57
|
-
|
58
|
-
phl_opa = PHLopa::API.new
|
59
|
-
phl_opa.search_by_address('1234 Market St')
|
59
|
+
PHLopa.search_by_address('1234 Market St')
|
60
60
|
|
61
61
|
Response
|
62
62
|
|
@@ -84,9 +84,7 @@ Response
|
|
84
84
|
|
85
85
|
Searches for properties that are located on the provided block. In the response, the `data.properties` key is always an array, even if there is only one result.
|
86
86
|
|
87
|
-
|
88
|
-
phl_opa = PHLopa::API.new
|
89
|
-
phl_opa.search_by_block('1234 Market St')
|
87
|
+
PHLopa.search_by_block('1234 Market St')
|
90
88
|
|
91
89
|
Response
|
92
90
|
|
@@ -114,9 +112,7 @@ Response
|
|
114
112
|
|
115
113
|
Searches for properties that are near the provided the intersection. In the response, the `data.properties` key is always an array, even if there is only one result.
|
116
114
|
|
117
|
-
|
118
|
-
phl_opa = PHLopa::API.new
|
119
|
-
phl_opa.search_by_intersection('Market St', '12th')
|
115
|
+
PHLopa.search_by_intersection('Market St', '12th')
|
120
116
|
|
121
117
|
Response
|
122
118
|
|
@@ -144,9 +140,7 @@ Response
|
|
144
140
|
|
145
141
|
Searches for properties that are near the provide latitude/longitude coordinate, and within the provided radius. The default distance for `radius` is 200 feet, and is not required. In the response, the `data.properties` key is always an array, even if there is only one result.
|
146
142
|
|
147
|
-
|
148
|
-
phl_opa = PHLopa::API.new
|
149
|
-
phl_opa.search_nearby(-75.16097, 39.95166, 400)
|
143
|
+
PHLopa.search_nearby(-75.16097, 39.95166, 400)
|
150
144
|
|
151
145
|
Response
|
152
146
|
|
data/lib/phl_opa/api.rb
CHANGED
@@ -3,15 +3,11 @@ require "open-uri"
|
|
3
3
|
require "net/http"
|
4
4
|
|
5
5
|
module PHLopa
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
:api_base => "http://api.phila.gov/opa/v1.0/",
|
12
|
-
:default_query_string => "?format=json"
|
13
|
-
}.merge(options)
|
14
|
-
end
|
6
|
+
|
7
|
+
API_BASE = "http://api.phila.gov/opa/v1.0/"
|
8
|
+
DEFAULT_QUERY_STRING = "?format=json"
|
9
|
+
|
10
|
+
class << self
|
15
11
|
|
16
12
|
def get_by_account(account=nil)
|
17
13
|
raise ArgumentError("Account Number must be 9 digits long") unless account.length == 9
|
@@ -66,6 +62,8 @@ module PHLopa
|
|
66
62
|
data
|
67
63
|
end
|
68
64
|
|
65
|
+
private
|
66
|
+
|
69
67
|
def parse_response(response)
|
70
68
|
json = JSON.parse(response.body)
|
71
69
|
|
@@ -74,7 +72,7 @@ module PHLopa
|
|
74
72
|
|
75
73
|
def invoke_api(path, parameter)
|
76
74
|
encoded = URI::encode(parameter)
|
77
|
-
url = URI.parse("#{
|
75
|
+
url = URI.parse("#{API_BASE}#{path}#{encoded}#{DEFAULT_QUERY_STRING}")
|
78
76
|
|
79
77
|
Net::HTTP.get_response(url)
|
80
78
|
end
|
data/lib/phl_opa/version.rb
CHANGED
data/phl-opa.gemspec
CHANGED
data/spec/lib/phl_opa_spec.rb
CHANGED
@@ -2,114 +2,88 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe PHLopa do
|
4
4
|
|
5
|
-
describe "#new" do
|
6
|
-
before :each do
|
7
|
-
@phl_opa = PHLopa::API.new
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
5
|
describe "#get_by_account" do
|
12
|
-
before :each do
|
13
|
-
@phl_opa = PHLopa::API.new
|
14
|
-
end
|
15
|
-
|
16
6
|
it "returns the property details for the OPA account that is passed" do
|
17
|
-
|
7
|
+
PHLopa.get_by_account('883309000')['data']['property']['full_address'] = '1234 MARKET ST'
|
18
8
|
end
|
19
9
|
|
20
10
|
it "raises an error if the account argument is not a string" do
|
21
|
-
lambda {
|
22
|
-
lambda {
|
11
|
+
lambda { PHLopa.get_by_account(123456780) }.should raise_error
|
12
|
+
lambda { PHLopa.get_by_account([123456780]) }.should raise_error
|
23
13
|
end
|
24
14
|
|
25
15
|
it "raises an error if the length of the account argument is not exactly 9" do
|
26
|
-
lambda {
|
27
|
-
lambda {
|
16
|
+
lambda { PHLopa.get_by_account('12345678') }.should raise_error
|
17
|
+
lambda { PHLopa.get_by_account('12345678910') }.should raise_error
|
28
18
|
end
|
29
19
|
|
30
20
|
it "raises an error if the account argument contains anything but numbers" do
|
31
|
-
lambda {
|
32
|
-
lambda {
|
21
|
+
lambda { PHLopa.get_by_account('123456780z') }.should raise_error
|
22
|
+
lambda { PHLopa.get_by_account('12345ddfdf6780') }.should raise_error
|
33
23
|
end
|
34
24
|
end
|
35
25
|
|
36
26
|
describe "#search_by_address" do
|
37
|
-
before :each do
|
38
|
-
@phl_opa = PHLopa::API.new
|
39
|
-
end
|
40
|
-
|
41
27
|
it "returns the property details for the adress that is passed" do
|
42
|
-
|
28
|
+
PHLopa.search_by_address('1234 Market St')['data']['properties'][0]['account_number'] = '883309000'
|
43
29
|
end
|
44
30
|
|
45
31
|
it "raises an error if the address argument is not a string" do
|
46
|
-
lambda {
|
47
|
-
lambda {
|
32
|
+
lambda { PHLopa.search_by_address(123456780) }.should raise_error
|
33
|
+
lambda { PHLopa.search_by_address(['1234 Market St']) }.should raise_error
|
48
34
|
end
|
49
35
|
end
|
50
36
|
|
51
37
|
describe "#search_by_block" do
|
52
|
-
before :each do
|
53
|
-
@phl_opa = PHLopa::API.new
|
54
|
-
end
|
55
|
-
|
56
38
|
it "returns the property details for all the properties on the searched block" do
|
57
|
-
|
39
|
+
PHLopa.search_by_block('1200 Market St')['total'] = 3
|
58
40
|
end
|
59
41
|
|
60
42
|
it "raises an error if the address argument is not a string" do
|
61
|
-
lambda {
|
62
|
-
lambda {
|
43
|
+
lambda { PHLopa.search_by_block(123456780) }.should raise_error
|
44
|
+
lambda { PHLopa.search_by_block(['1234 Market St']) }.should raise_error
|
63
45
|
end
|
64
46
|
end
|
65
47
|
|
66
48
|
describe "#search_by_intersection" do
|
67
|
-
before :each do
|
68
|
-
@phl_opa = PHLopa::API.new
|
69
|
-
end
|
70
|
-
|
71
49
|
it "returns the property details for all the properties near the provided intersection" do
|
72
|
-
|
50
|
+
PHLopa.search_by_intersection('12th', 'Market')['total'] = 5
|
73
51
|
end
|
74
52
|
|
75
53
|
it "raises an error if the address argument is not a string" do
|
76
|
-
lambda {
|
77
|
-
lambda {
|
54
|
+
lambda { PHLopa.search_by_intersection(12, 'Market') }.should raise_error
|
55
|
+
lambda { PHLopa.search_by_intersection('Market', 12) }.should raise_error
|
78
56
|
end
|
79
57
|
|
80
58
|
it "raises an error if either of the street arguments are nil" do
|
81
|
-
lambda {
|
82
|
-
lambda {
|
59
|
+
lambda { PHLopa.search_by_intersection('Market') }.should raise_error
|
60
|
+
lambda { PHLopa.search_by_intersection(nil, 'Market') }.should raise_error
|
83
61
|
end
|
84
62
|
end
|
85
63
|
|
86
64
|
describe "#search_nearby" do
|
87
|
-
before :each do
|
88
|
-
@phl_opa = PHLopa::API.new
|
89
|
-
end
|
90
|
-
|
91
65
|
it "returns the property details for all the properties near the provided point and within the provided radius" do
|
92
|
-
|
66
|
+
PHLopa.search_nearby(39.95166, -75.16097, 400)['total'] = 25
|
93
67
|
end
|
94
68
|
|
95
69
|
it "does not require that the user sets the radius argument" do
|
96
|
-
|
70
|
+
PHLopa.search_nearby(39.95166, -75.16097)['total'] = 4
|
97
71
|
end
|
98
72
|
|
99
73
|
it "raises an error if the radius argument is not a positive number" do
|
100
|
-
lambda {
|
101
|
-
lambda {
|
74
|
+
lambda { PHLopa.search_nearby(39.95166, -75.16097, -100) }.should raise_error
|
75
|
+
lambda { PHLopa.search_nearby(39.95166, -75.16097, '1000') }.should raise_error
|
102
76
|
end
|
103
77
|
|
104
78
|
it "raises an error if either the latitude or longitude arguments are nil" do
|
105
|
-
lambda {
|
106
|
-
lambda {
|
107
|
-
lambda {
|
79
|
+
lambda { PHLopa.search_nearby(nil, -75.16097, 100) }.should raise_error
|
80
|
+
lambda { PHLopa.search_nearby(39.95166, nil, 100) }.should raise_error
|
81
|
+
lambda { PHLopa.search_nearby(nil, nil, 100) }.should raise_error
|
108
82
|
end
|
109
83
|
|
110
84
|
it "raises an error if either the latitude or longitude arguments are not numbers" do
|
111
|
-
lambda {
|
112
|
-
lambda {
|
85
|
+
lambda { PHLopa.search_nearby(39.95166, '-75.16097', 100) }.should raise_error
|
86
|
+
lambda { PHLopa.search_nearby('39.95166', -75.16097, 100) }.should raise_error
|
113
87
|
end
|
114
88
|
end
|
115
89
|
|
metadata
CHANGED
@@ -1,48 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phl-opa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Casey Thomas
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.3'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.3'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
33
|
+
version: '10.3'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: '
|
40
|
+
version: '10.3'
|
46
41
|
description: A thin wrapper for the Philadelphia Office of Property Assessment API
|
47
42
|
email:
|
48
43
|
- cpthomas@gmail.com
|
@@ -50,8 +45,8 @@ executables: []
|
|
50
45
|
extensions: []
|
51
46
|
extra_rdoc_files: []
|
52
47
|
files:
|
53
|
-
- .gitignore
|
54
|
-
- .travis.yml
|
48
|
+
- ".gitignore"
|
49
|
+
- ".travis.yml"
|
55
50
|
- Gemfile
|
56
51
|
- LICENSE.txt
|
57
52
|
- README.md
|
@@ -65,27 +60,26 @@ files:
|
|
65
60
|
homepage: https://www.github.com/caseypt/phl-opa
|
66
61
|
licenses:
|
67
62
|
- MIT
|
63
|
+
metadata: {}
|
68
64
|
post_install_message:
|
69
65
|
rdoc_options: []
|
70
66
|
require_paths:
|
71
67
|
- lib
|
72
68
|
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
69
|
requirements:
|
75
|
-
- -
|
70
|
+
- - ">="
|
76
71
|
- !ruby/object:Gem::Version
|
77
72
|
version: '0'
|
78
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
-
none: false
|
80
74
|
requirements:
|
81
|
-
- -
|
75
|
+
- - ">="
|
82
76
|
- !ruby/object:Gem::Version
|
83
77
|
version: '0'
|
84
78
|
requirements: []
|
85
79
|
rubyforge_project:
|
86
|
-
rubygems_version:
|
80
|
+
rubygems_version: 2.2.0
|
87
81
|
signing_key:
|
88
|
-
specification_version:
|
82
|
+
specification_version: 4
|
89
83
|
summary: Get information about properties in Philadelphia
|
90
84
|
test_files:
|
91
85
|
- spec/lib/phl_opa_spec.rb
|