datacatalog 0.3.2 → 0.3.3
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.
- data/Rakefile +1 -0
- data/datacatalog.gemspec +5 -6
- data/lib/base.rb +2 -14
- data/lib/resources/api_key.rb +3 -3
- data/lib/resources/organization.rb +14 -8
- data/lib/resources/source.rb +15 -9
- data/lib/resources/user.rb +13 -9
- data/spec/base_spec.rb +10 -4
- data/spec/organization_spec.rb +6 -6
- data/spec/source_spec.rb +6 -4
- metadata +2 -4
- data/CHANGES.md +0 -2
- data/VERSION +0 -1
data/Rakefile
CHANGED
@@ -5,6 +5,7 @@ begin
|
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "datacatalog"
|
8
|
+
gem.version = '0.3.3'
|
8
9
|
gem.rubyforge_project = "datacatalog"
|
9
10
|
gem.summary = %Q{Client for the National Data Catalog API}
|
10
11
|
gem.description = %Q{A Ruby client library for the National Data Catalog API}
|
data/datacatalog.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{datacatalog}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Luigi Montanez", "David James"]
|
12
|
-
s.date = %q{2009-
|
12
|
+
s.date = %q{2009-11-03}
|
13
13
|
s.description = %q{A Ruby client library for the National Data Catalog API}
|
14
14
|
s.email = %q{luigi@sunlightfoundation.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -18,11 +18,9 @@ Gem::Specification.new do |s|
|
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".gitignore",
|
21
|
-
"CHANGES.md",
|
22
21
|
"LICENSE.md",
|
23
22
|
"README.md",
|
24
23
|
"Rakefile",
|
25
|
-
"VERSION",
|
26
24
|
"datacatalog.gemspec",
|
27
25
|
"lib/base.rb",
|
28
26
|
"lib/datacatalog.rb",
|
@@ -93,3 +91,4 @@ Gem::Specification.new do |s|
|
|
93
91
|
s.add_dependency(%q<rspec>, [">= 1.2.8"])
|
94
92
|
end
|
95
93
|
end
|
94
|
+
|
data/lib/base.rb
CHANGED
@@ -74,23 +74,11 @@ module DataCatalog
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def self.query_hash(conditions)
|
77
|
-
|
78
|
-
query_hash = {}
|
79
|
-
else
|
80
|
-
query_hash = {:filter => filterize(conditions)}
|
81
|
-
end
|
77
|
+
conditions == {} ? {} : { :filter => filterize(conditions) }
|
82
78
|
end
|
83
79
|
|
84
80
|
def self.filterize(conditions)
|
85
|
-
|
86
|
-
new_conditions = {}
|
87
|
-
conditions.each do |k,v|
|
88
|
-
new_conditions[k.to_s] = v
|
89
|
-
end
|
90
|
-
new_conditions.sort.each do |k,v|
|
91
|
-
filter_string += "#{k.to_s}:\"#{v}\" "
|
92
|
-
end
|
93
|
-
filter_string.strip!
|
81
|
+
conditions.map { |k, v| %(#{k}:"#{v}") }.join(" ")
|
94
82
|
end
|
95
83
|
|
96
84
|
def method_missing(method_name, *args)
|
data/lib/resources/api_key.rb
CHANGED
@@ -3,7 +3,7 @@ module DataCatalog
|
|
3
3
|
class ApiKey < Base
|
4
4
|
|
5
5
|
def self.all(user_id, conditions={})
|
6
|
-
many(http_get(uri(user_id), :query => conditions))
|
6
|
+
many(http_get(uri(user_id), :query => query_hash(conditions)))
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.create(user_id, params={})
|
@@ -15,7 +15,7 @@ module DataCatalog
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.first(user_id, conditions={})
|
18
|
-
one(http_get(uri(user_id), :query => conditions).first)
|
18
|
+
one(http_get(uri(user_id), :query => query_hash(conditions)).first)
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.get(user_id, id)
|
@@ -28,7 +28,7 @@ module DataCatalog
|
|
28
28
|
|
29
29
|
# == Helpers
|
30
30
|
|
31
|
-
def self.uri(user_id, id
|
31
|
+
def self.uri(user_id, id=nil)
|
32
32
|
raise Error, "user_id cannot be blank" if user_id.blank?
|
33
33
|
"/users/#{user_id}/keys/#{id}"
|
34
34
|
end
|
@@ -3,27 +3,33 @@ module DataCatalog
|
|
3
3
|
class Organization < Base
|
4
4
|
|
5
5
|
def self.all(conditions={})
|
6
|
-
many(http_get(
|
6
|
+
many(http_get(uri, :query => query_hash(conditions)))
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.create(params={})
|
10
|
-
one(http_post(
|
10
|
+
one(http_post(uri, :body => params))
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.destroy(
|
14
|
-
one(http_delete(
|
13
|
+
def self.destroy(id)
|
14
|
+
one(http_delete(uri(id)))
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.first(conditions={})
|
18
|
-
one(http_get(
|
18
|
+
one(http_get(uri, :query => query_hash(conditions)).first)
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.get(id)
|
22
|
-
one(http_get(
|
22
|
+
one(http_get(uri(id)))
|
23
23
|
end
|
24
24
|
|
25
|
-
def self.update(
|
26
|
-
one(http_put(
|
25
|
+
def self.update(id, params={})
|
26
|
+
one(http_put(uri(id), :body => params))
|
27
|
+
end
|
28
|
+
|
29
|
+
# == Helpers
|
30
|
+
|
31
|
+
def self.uri(id=nil)
|
32
|
+
"/organizations/#{id}"
|
27
33
|
end
|
28
34
|
|
29
35
|
end
|
data/lib/resources/source.rb
CHANGED
@@ -3,27 +3,33 @@ module DataCatalog
|
|
3
3
|
class Source < Base
|
4
4
|
|
5
5
|
def self.all(conditions={})
|
6
|
-
many(http_get(
|
6
|
+
many(http_get(uri, :query => query_hash(conditions)))
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.create(params={})
|
10
|
-
one(http_post(
|
10
|
+
one(http_post(uri, :body => params))
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.destroy(
|
14
|
-
one(http_delete(
|
13
|
+
def self.destroy(id)
|
14
|
+
one(http_delete(uri(id)))
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.first(conditions={})
|
18
|
-
|
17
|
+
def self.first(conditions= {})
|
18
|
+
one(http_get(uri, :query => query_hash(conditions)).first)
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.get(id)
|
22
|
-
one(http_get(
|
22
|
+
one(http_get(uri(id)))
|
23
23
|
end
|
24
24
|
|
25
|
-
def self.update(
|
26
|
-
one(http_put(
|
25
|
+
def self.update(id, params={})
|
26
|
+
one(http_put(uri(id), :body => params))
|
27
|
+
end
|
28
|
+
|
29
|
+
# == Helpers
|
30
|
+
|
31
|
+
def self.uri(id=nil)
|
32
|
+
"/sources/#{id}"
|
27
33
|
end
|
28
34
|
|
29
35
|
end
|
data/lib/resources/user.rb
CHANGED
@@ -3,35 +3,35 @@ module DataCatalog
|
|
3
3
|
class User < Base
|
4
4
|
|
5
5
|
def self.all(conditions={})
|
6
|
-
many(http_get(
|
6
|
+
many(http_get(uri, :query => query_hash(conditions)))
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.create(params={})
|
10
|
-
with_api_keys(one(http_post(
|
10
|
+
with_api_keys(one(http_post(uri, :body => params)))
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.destroy(
|
14
|
-
one(http_delete(
|
13
|
+
def self.destroy(id)
|
14
|
+
one(http_delete(uri(id)))
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.first(conditions={})
|
18
|
-
one(http_get(
|
18
|
+
one(http_get(uri, :query => query_hash(conditions)).first)
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.get(id)
|
22
|
-
with_api_keys(one(http_get(
|
22
|
+
with_api_keys(one(http_get(uri(id))))
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.get_by_api_key(api_key)
|
26
26
|
DataCatalog.with_key(api_key) do
|
27
27
|
checkup = one(http_get("/checkup"))
|
28
|
-
raise NotFound
|
28
|
+
raise NotFound if checkup.api_key != "valid"
|
29
29
|
get(checkup.user.id)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
def self.update(
|
34
|
-
one(http_put(
|
33
|
+
def self.update(id, params)
|
34
|
+
one(http_put(uri(id), :body => params))
|
35
35
|
end
|
36
36
|
|
37
37
|
# == Helpers
|
@@ -41,6 +41,10 @@ module DataCatalog
|
|
41
41
|
user
|
42
42
|
end
|
43
43
|
|
44
|
+
def self.uri(id=nil)
|
45
|
+
"/users/#{id}"
|
46
|
+
end
|
47
|
+
|
44
48
|
# == Instance Methods
|
45
49
|
|
46
50
|
def delete_api_key!(api_key_id)
|
data/spec/base_spec.rb
CHANGED
@@ -127,10 +127,16 @@ describe Base do
|
|
127
127
|
end
|
128
128
|
|
129
129
|
describe ".filterize" do
|
130
|
-
it "should
|
131
|
-
|
132
|
-
|
133
|
-
|
130
|
+
it "should work with 1 param" do
|
131
|
+
%(name:"John Doe").should == Base.filterize(:name => "John Doe")
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should work with 2 params" do
|
135
|
+
[
|
136
|
+
%(zip:"20036" name:"John Doe"),
|
137
|
+
%(name:"John Doe" zip:"20036")
|
138
|
+
].should include(Base.filterize(:name => "John Doe", :zip => "20036"))
|
139
|
+
end
|
134
140
|
end
|
135
141
|
|
136
142
|
end
|
data/spec/organization_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe Organization do
|
|
6
6
|
def create_3_organizations
|
7
7
|
@organization_names = ["Federal Communications Commission", "Federal Election Commission", "Department of State"]
|
8
8
|
@organization_names.each do |name|
|
9
|
-
Organization.create(:name => name)
|
9
|
+
Organization.create(:name => name, :org_type => "governmental")
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -56,7 +56,7 @@ describe Organization do
|
|
56
56
|
describe ".get" do
|
57
57
|
|
58
58
|
before do
|
59
|
-
@organization = Organization.create(:name => "Federal Election Commission")
|
59
|
+
@organization = Organization.create(:name => "Federal Election Commission", :org_type => "governmental")
|
60
60
|
end
|
61
61
|
|
62
62
|
it "should return an organization" do
|
@@ -76,14 +76,14 @@ describe Organization do
|
|
76
76
|
describe ".create" do
|
77
77
|
|
78
78
|
it "should create a new organization when valid params are passed in" do
|
79
|
-
@organization = Organization.create(:name => "Federal Communications Commission")
|
79
|
+
@organization = Organization.create(:name => "Federal Communications Commission", :org_type => "governmental")
|
80
80
|
@organization.should be_an_instance_of(Organization)
|
81
81
|
@organization.name.should == "Federal Communications Commission"
|
82
82
|
end
|
83
83
|
|
84
84
|
it "should raise BadRequest when a bad URL is passed in" do
|
85
85
|
executing do
|
86
|
-
Organization.create(:name => "Bad Org", :url => "htt:p//jlkj!3")
|
86
|
+
Organization.create(:name => "Bad Org", :url => "htt:p//jlkj!3", :org_type => "governmental")
|
87
87
|
end.should raise_error(BadRequest)
|
88
88
|
end
|
89
89
|
|
@@ -92,7 +92,7 @@ describe Organization do
|
|
92
92
|
describe ".update" do
|
93
93
|
|
94
94
|
before do
|
95
|
-
@organization = Organization.create(:name => "Federal Election Commission")
|
95
|
+
@organization = Organization.create(:name => "Federal Election Commission", :org_type => "governmental")
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should update an existing organization from valid params" do
|
@@ -106,7 +106,7 @@ describe Organization do
|
|
106
106
|
describe ".destroy" do
|
107
107
|
|
108
108
|
before do
|
109
|
-
@organization = Organization.create(:name => "Federal Election Commission")
|
109
|
+
@organization = Organization.create(:name => "Federal Election Commission", :org_type => "governmental")
|
110
110
|
end
|
111
111
|
|
112
112
|
it "should destroy an existing organization" do
|
data/spec/source_spec.rb
CHANGED
@@ -4,8 +4,9 @@ include DataCatalog
|
|
4
4
|
module SourceHelpers
|
5
5
|
def create_source(params={})
|
6
6
|
valid_params = {
|
7
|
-
:title
|
8
|
-
:url
|
7
|
+
:title => "Some FCC Data",
|
8
|
+
:url => "http://fcc.gov/somedata.csv",
|
9
|
+
:source_type => "dataset"
|
9
10
|
}
|
10
11
|
Source.create(valid_params.merge(params))
|
11
12
|
end
|
@@ -13,8 +14,9 @@ module SourceHelpers
|
|
13
14
|
def create_3_sources
|
14
15
|
%w(FCC NASA DOE).each do |name|
|
15
16
|
Source.create({
|
16
|
-
:title
|
17
|
-
:url
|
17
|
+
:title => "#{name} Data",
|
18
|
+
:url => "http://#{name.downcase}.gov/data.xml",
|
19
|
+
:source_type => "dataset"
|
18
20
|
})
|
19
21
|
end
|
20
22
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datacatalog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luigi Montanez
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-11-03 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -84,11 +84,9 @@ extra_rdoc_files:
|
|
84
84
|
- README.md
|
85
85
|
files:
|
86
86
|
- .gitignore
|
87
|
-
- CHANGES.md
|
88
87
|
- LICENSE.md
|
89
88
|
- README.md
|
90
89
|
- Rakefile
|
91
|
-
- VERSION
|
92
90
|
- datacatalog.gemspec
|
93
91
|
- lib/base.rb
|
94
92
|
- lib/datacatalog.rb
|
data/CHANGES.md
DELETED
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.3.2
|