datacatalog 0.4.8 → 0.4.9
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 -1
- data/datacatalog.gemspec +6 -2
- data/lib/base.rb +5 -25
- data/lib/connection.rb +14 -0
- data/lib/datacatalog.rb +1 -0
- data/lib/main.rb +5 -4
- data/lib/resources/report.rb +33 -0
- data/spec/base_spec.rb +1 -1
- data/spec/report_spec.rb +124 -0
- metadata +6 -2
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ begin
|
|
5
5
|
require 'jeweler'
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "datacatalog"
|
8
|
-
gem.version = '0.4.
|
8
|
+
gem.version = '0.4.9'
|
9
9
|
gem.rubyforge_project = "datacatalog"
|
10
10
|
gem.summary = %Q{Client for the National Data Catalog API}
|
11
11
|
gem.description = %Q{A Ruby client library for the National Data Catalog API}
|
data/datacatalog.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{datacatalog}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.9"
|
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{
|
12
|
+
s.date = %q{2010-02-01}
|
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 = [
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
"Rakefile",
|
24
24
|
"datacatalog.gemspec",
|
25
25
|
"lib/base.rb",
|
26
|
+
"lib/connection.rb",
|
26
27
|
"lib/cursor.rb",
|
27
28
|
"lib/datacatalog.rb",
|
28
29
|
"lib/main.rb",
|
@@ -35,6 +36,7 @@ Gem::Specification.new do |s|
|
|
35
36
|
"lib/resources/note.rb",
|
36
37
|
"lib/resources/organization.rb",
|
37
38
|
"lib/resources/rating.rb",
|
39
|
+
"lib/resources/report.rb",
|
38
40
|
"lib/resources/source.rb",
|
39
41
|
"lib/resources/user.rb",
|
40
42
|
"sandbox_api.yml.example",
|
@@ -49,6 +51,7 @@ Gem::Specification.new do |s|
|
|
49
51
|
"spec/note_spec.rb",
|
50
52
|
"spec/organization_spec.rb",
|
51
53
|
"spec/rating_spec.rb",
|
54
|
+
"spec/report_spec.rb",
|
52
55
|
"spec/setup_api.rb",
|
53
56
|
"spec/source_spec.rb",
|
54
57
|
"spec/spec.opts",
|
@@ -76,6 +79,7 @@ Gem::Specification.new do |s|
|
|
76
79
|
"spec/note_spec.rb",
|
77
80
|
"spec/organization_spec.rb",
|
78
81
|
"spec/rating_spec.rb",
|
82
|
+
"spec/report_spec.rb",
|
79
83
|
"spec/setup_api.rb",
|
80
84
|
"spec/source_spec.rb",
|
81
85
|
"spec/spec_helper.rb",
|
data/lib/base.rb
CHANGED
@@ -1,40 +1,20 @@
|
|
1
1
|
module DataCatalog
|
2
2
|
|
3
3
|
class Base < Mash
|
4
|
-
|
5
|
-
DEFAULT_BASE_URI = 'http://api.nationaldatacatalog.com'
|
6
|
-
|
7
|
-
include HTTParty
|
8
|
-
|
9
|
-
format :json
|
10
|
-
base_uri DEFAULT_BASE_URI
|
11
|
-
|
12
|
-
class << self
|
13
|
-
alias_method :_delete, :delete
|
14
|
-
alias_method :_get, :get
|
15
|
-
alias_method :_post, :post
|
16
|
-
alias_method :_put, :put
|
17
|
-
|
18
|
-
undef_method :delete
|
19
|
-
undef_method :get
|
20
|
-
undef_method :post
|
21
|
-
undef_method :put
|
22
|
-
end
|
23
|
-
|
24
4
|
def self.http_delete(path, options={})
|
25
|
-
check_status(
|
5
|
+
check_status(Connection.delete(path, options))
|
26
6
|
end
|
27
|
-
|
7
|
+
|
28
8
|
def self.http_get(path, options={})
|
29
|
-
check_status(
|
9
|
+
check_status(Connection.get(path, options))
|
30
10
|
end
|
31
11
|
|
32
12
|
def self.http_post(path, options={})
|
33
|
-
check_status(
|
13
|
+
check_status(Connection.post(path, options))
|
34
14
|
end
|
35
15
|
|
36
16
|
def self.http_put(path, options={})
|
37
|
-
check_status(
|
17
|
+
check_status(Connection.put(path, options))
|
38
18
|
end
|
39
19
|
|
40
20
|
# == protected
|
data/lib/connection.rb
ADDED
data/lib/datacatalog.rb
CHANGED
@@ -5,6 +5,7 @@ require 'httparty'
|
|
5
5
|
require 'mash'
|
6
6
|
|
7
7
|
require File.dirname(__FILE__) + '/main'
|
8
|
+
require File.dirname(__FILE__) + '/connection'
|
8
9
|
require File.dirname(__FILE__) + '/base'
|
9
10
|
require File.dirname(__FILE__) + '/cursor'
|
10
11
|
Dir.glob(File.dirname(__FILE__) + '/resources/*.rb').each { |f| require f }
|
data/lib/main.rb
CHANGED
@@ -15,19 +15,20 @@ module DataCatalog
|
|
15
15
|
# == Accessors
|
16
16
|
|
17
17
|
def self.api_key
|
18
|
-
|
18
|
+
Connection.default_params[:api_key]
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.api_key=(key)
|
22
|
-
|
22
|
+
Connection.default_params[:api_key] = key
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.base_uri
|
26
|
-
|
26
|
+
Connection.base_uri
|
27
27
|
end
|
28
28
|
|
29
29
|
def self.base_uri=(uri)
|
30
|
-
|
30
|
+
u = uri.blank? ? Connection::DEFAULT_BASE_URI : uri
|
31
|
+
Connection.base_uri(u)
|
31
32
|
end
|
32
33
|
|
33
34
|
def self.with_key(temp_key)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module DataCatalog
|
2
|
+
|
3
|
+
class Report < Base
|
4
|
+
|
5
|
+
def self.all(conditions={})
|
6
|
+
cursor(uri, query_hash(conditions))
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.create(params={})
|
10
|
+
one(http_post(uri, :body => params))
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.destroy(id)
|
14
|
+
one(http_delete(uri(id)))
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.get(id)
|
18
|
+
one(http_get(uri(id)))
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.update(id, params={})
|
22
|
+
one(http_put(uri(id), :body => params))
|
23
|
+
end
|
24
|
+
|
25
|
+
# == Helpers
|
26
|
+
|
27
|
+
def self.uri(id=nil)
|
28
|
+
"/reports/#{id}"
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/spec/base_spec.rb
CHANGED
@@ -17,7 +17,7 @@ describe Base do
|
|
17
17
|
it "should set the base URI to the default if it's not explicitly defined" do
|
18
18
|
DataCatalog.base_uri = ''
|
19
19
|
DataCatalog.base_uri.should == 'http://api.nationaldatacatalog.com'
|
20
|
-
|
20
|
+
DataCatalog.base_uri.should == 'http://api.nationaldatacatalog.com'
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
data/spec/report_spec.rb
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
include DataCatalog
|
3
|
+
|
4
|
+
describe Report do
|
5
|
+
|
6
|
+
before do
|
7
|
+
setup_api
|
8
|
+
clean_slate
|
9
|
+
@john = User.create(
|
10
|
+
:name => "John M. Porter",
|
11
|
+
:email => "john.m.porter@email.com",
|
12
|
+
:curator => true
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
describe ".create" do
|
17
|
+
it "should create a new report when valid params are passed in" do
|
18
|
+
DataCatalog.with_key(@john.primary_api_key) do
|
19
|
+
@report = Report.create(
|
20
|
+
:text => "Report 1 by John",
|
21
|
+
:status => "new"
|
22
|
+
)
|
23
|
+
end
|
24
|
+
@report.should be_an_instance_of(Report)
|
25
|
+
refreshed_report = Report.get(@report.id)
|
26
|
+
refreshed_report.text.should == "Report 1 by John"
|
27
|
+
refreshed_report.status.should == "new"
|
28
|
+
refreshed_report.user_id.should == @john.id
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe ".get" do
|
33
|
+
before do
|
34
|
+
DataCatalog.with_key(@john.primary_api_key) do
|
35
|
+
@report = Report.create(
|
36
|
+
:text => "Report 1 by John",
|
37
|
+
:status => "new"
|
38
|
+
)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should return a report" do
|
43
|
+
report = Report.get(@report.id)
|
44
|
+
report.should be_an_instance_of(Report)
|
45
|
+
report.text.should == "Report 1 by John"
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should raise NotFound if no report exists" do
|
49
|
+
executing do
|
50
|
+
Report.get(mangle(@report.id))
|
51
|
+
end.should raise_error(NotFound)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe ".all" do
|
56
|
+
before do
|
57
|
+
@jane = User.create(
|
58
|
+
:name => "Jane M. Porter",
|
59
|
+
:email => "jane@email.com",
|
60
|
+
:curator => true
|
61
|
+
)
|
62
|
+
DataCatalog.with_key(@jane.primary_api_key) do
|
63
|
+
Report.create(:text => "Report 1 by Jane", :status => "new")
|
64
|
+
Report.create(:text => "Report 2 by Jane", :status => "new")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should return a set of all user's reports" do
|
69
|
+
reports = Report.all(:user_id => @jane.id)
|
70
|
+
reports.first.should be_an_instance_of(Report)
|
71
|
+
[1, 2].each_with_index do |n, i|
|
72
|
+
reports[i].text.should == "Report #{n} by Jane"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe ".update" do
|
78
|
+
before do
|
79
|
+
DataCatalog.with_key(@john.primary_api_key) do
|
80
|
+
@report = Report.create(
|
81
|
+
:text => "Report 1 by John",
|
82
|
+
:status => "new"
|
83
|
+
)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should update an existing report with valid params" do
|
88
|
+
DataCatalog.with_key(@john.primary_api_key) do
|
89
|
+
Report.update(@report.id, :status => "open")
|
90
|
+
end
|
91
|
+
refreshed_report = Report.get(@report.id)
|
92
|
+
refreshed_report.text.should == "Report 1 by John"
|
93
|
+
refreshed_report.status.should == "open"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe ".destroy" do
|
98
|
+
before do
|
99
|
+
DataCatalog.with_key(@john.primary_api_key) do
|
100
|
+
@report = Report.create(
|
101
|
+
:text => "Report 1 by John",
|
102
|
+
:status => "new"
|
103
|
+
)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should destroy an existing report as an admin" do
|
108
|
+
Report.destroy(@report.id).should be_true
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should destroy an existing report as the user" do
|
112
|
+
DataCatalog.with_key(@john.primary_api_key) do
|
113
|
+
Report.destroy(@report.id).should be_true
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should raise NotFound when attempting to destroy non-existing report" do
|
118
|
+
executing do
|
119
|
+
Report.destroy(mangle(@report.id))
|
120
|
+
end.should raise_error(NotFound)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
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.4.
|
4
|
+
version: 0.4.9
|
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:
|
13
|
+
date: 2010-02-01 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- Rakefile
|
90
90
|
- datacatalog.gemspec
|
91
91
|
- lib/base.rb
|
92
|
+
- lib/connection.rb
|
92
93
|
- lib/cursor.rb
|
93
94
|
- lib/datacatalog.rb
|
94
95
|
- lib/main.rb
|
@@ -101,6 +102,7 @@ files:
|
|
101
102
|
- lib/resources/note.rb
|
102
103
|
- lib/resources/organization.rb
|
103
104
|
- lib/resources/rating.rb
|
105
|
+
- lib/resources/report.rb
|
104
106
|
- lib/resources/source.rb
|
105
107
|
- lib/resources/user.rb
|
106
108
|
- sandbox_api.yml.example
|
@@ -115,6 +117,7 @@ files:
|
|
115
117
|
- spec/note_spec.rb
|
116
118
|
- spec/organization_spec.rb
|
117
119
|
- spec/rating_spec.rb
|
120
|
+
- spec/report_spec.rb
|
118
121
|
- spec/setup_api.rb
|
119
122
|
- spec/source_spec.rb
|
120
123
|
- spec/spec.opts
|
@@ -163,6 +166,7 @@ test_files:
|
|
163
166
|
- spec/note_spec.rb
|
164
167
|
- spec/organization_spec.rb
|
165
168
|
- spec/rating_spec.rb
|
169
|
+
- spec/report_spec.rb
|
166
170
|
- spec/setup_api.rb
|
167
171
|
- spec/source_spec.rb
|
168
172
|
- spec/spec_helper.rb
|