popit 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -7
- data/README.md +4 -4
- data/lib/popit.rb +6 -10
- data/lib/popit/version.rb +1 -1
- data/popit.gemspec +1 -1
- data/spec/popit_spec.rb +16 -17
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bf9709f2c6a428a607fe1ad33b6c9b075047ed2
|
4
|
+
data.tar.gz: cd7f8c448ace3f050a8ba0c1b5a588d5b73ed0c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 024bb1ec703c7c84ba724806e3ba86a40954c16d3ef7ff3380787a9dcd02cdc724ffd7e4fa1d38441d941f91a4379cb9da7c1262aa490d64488e2526dd986f26
|
7
|
+
data.tar.gz: 5894ea311751bec451f96a10d386f9069fa20657ac8685a76dd104f40dc0725dc82549c1576221ae9a87e0ed78d6c78815f1c365ff7a83cbe8ce2a7509aeedc5
|
data/.travis.yml
CHANGED
@@ -1,14 +1,9 @@
|
|
1
|
-
---
|
2
1
|
language: ruby
|
3
2
|
rvm:
|
4
3
|
- 1.9.2
|
5
4
|
- 1.9.3
|
6
5
|
- 2.0.0
|
6
|
+
- 2.1.0
|
7
7
|
env:
|
8
8
|
global:
|
9
|
-
|
10
|
-
- secure: ! 'Q1wjuxr364WRXFTDD8jdunJG59Xl2iYFtehm+5d6UAR9mY9Ohv4TLqT6QhHu
|
11
|
-
|
12
|
-
1mdR575m90w3y1ZuS3NnzoUiMcrL+Osoza/tzBOch0+doXMqCXyZcgnSlNgV
|
13
|
-
|
14
|
-
16TcY+GFYbBnGnlq+5UoBCjOb3eqHdWqoASdT4DPIijGmvEzBDs='
|
9
|
+
secure: OYhs6gJoC2eZr4H3uH9X1R36rxIj6ISiK8QO+tdhSxRyUZsKA94iYEqUsvb9jtyE+5NYlsWx/0SQdUQsRS06CIdph1tHKXxzAz8e8/nZaUoQMlg2z7ba09ah57Catlt6ouRaxa++BXbwKfRsmG8aYhSDy8bUEwa9VSi1glE65aY=
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
A Ruby wrapper for the [PopIt](http://popit.mysociety.org/) API, which allows you to create, read, update and delete documents from PopIt.
|
4
4
|
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/popit.svg)](http://badge.fury.io/rb/popit)
|
5
6
|
[![Build Status](https://secure.travis-ci.org/opennorth/popit-ruby.png)](http://travis-ci.org/opennorth/popit-ruby)
|
6
7
|
[![Dependency Status](https://gemnasium.com/opennorth/popit-ruby.png)](https://gemnasium.com/opennorth/popit-ruby)
|
7
8
|
[![Coverage Status](https://coveralls.io/repos/opennorth/popit-ruby/badge.png?branch=master)](https://coveralls.io/r/opennorth/popit-ruby)
|
@@ -31,8 +32,8 @@ You can pass these options to `PopIt.new`:
|
|
31
32
|
* `:host_name` the PopIt API's host name – defaults to "popit.mysociety.org"
|
32
33
|
* `:port` the PopIt API's port – defaults to 80
|
33
34
|
* `:version` the PopIt API version – defaults to "v0.1"
|
34
|
-
* `:
|
35
|
-
* `:
|
35
|
+
* `:apikey` an API key – if blank, the API will be read-only
|
36
|
+
* `:max_retries` the number of times to retry the API in case of errors - defaults to 0
|
36
37
|
|
37
38
|
For brevity, we only show examples below for `persons` documents, but you can use the same code to operate on organizations and memberships by substituting `organizations` or `memberships` for `persons`.
|
38
39
|
|
@@ -108,8 +109,7 @@ api.persons.get('foo') # raises PopIt::PageNotFound with "page not found"
|
|
108
109
|
To run the tests:
|
109
110
|
|
110
111
|
export INSTANCE_NAME=YOUR_POPIT_INSTANCE_NAME
|
111
|
-
export
|
112
|
-
export POPIT_PASSWORD=YOUR_POPIT_PASSWORD
|
112
|
+
export POPIT_API_KEY=YOUR_POPIT_API_KEY
|
113
113
|
bundle exec rake
|
114
114
|
|
115
115
|
**If you care about the data in an instance, do not use that instance to run tests!**
|
data/lib/popit.rb
CHANGED
@@ -35,10 +35,8 @@ class PopIt
|
|
35
35
|
attr_reader :port
|
36
36
|
# The PopIt API version, eg "v0.1"
|
37
37
|
attr_reader :version
|
38
|
-
#
|
39
|
-
attr_reader :
|
40
|
-
# The user's password.
|
41
|
-
attr_reader :password
|
38
|
+
# An API key.
|
39
|
+
attr_reader :apikey
|
42
40
|
# The maximum number of retries in case of HTTP 503 Service Unavailable errors.
|
43
41
|
attr_reader :max_retries
|
44
42
|
|
@@ -49,8 +47,7 @@ class PopIt
|
|
49
47
|
# @option opts [String] :host_name the PopIt API's host name, eg "popit.mysociety.org"
|
50
48
|
# @option opts [String] :post the PopIt API's port, eg 80
|
51
49
|
# @option opts [String] :version the PopIt API version, eg "v1"
|
52
|
-
# @option opts [String] :
|
53
|
-
# @option opts [String] :password the user's password
|
50
|
+
# @option opts [String] :apikey an API key
|
54
51
|
# @option opts [String] :max_retries the maximum number of retries in case of
|
55
52
|
# HTTP 503 Service Unavailable errors
|
56
53
|
def initialize(opts = {})
|
@@ -62,8 +59,7 @@ class PopIt
|
|
62
59
|
@host_name = opts[:host_name] || 'popit.mysociety.org'
|
63
60
|
@port = opts[:port] || 80
|
64
61
|
@version = opts[:version] || 'v0.1'
|
65
|
-
@
|
66
|
-
@password = opts[:password]
|
62
|
+
@apikey = opts[:apikey]
|
67
63
|
@max_retries = opts[:max_retries] || 0
|
68
64
|
|
69
65
|
end
|
@@ -115,9 +111,9 @@ private
|
|
115
111
|
when :get
|
116
112
|
self.class.send(http_method, path, :query => opts)
|
117
113
|
when :delete
|
118
|
-
self.class.send(http_method, path, :
|
114
|
+
self.class.send(http_method, path, :query => opts.merge(:apikey => apikey))
|
119
115
|
when :post, :put
|
120
|
-
self.class.send(http_method, path, :
|
116
|
+
self.class.send(http_method, path, :body => JSON.dump(opts.merge(:apikey => apikey)), :headers => {'Content-Type' => 'application/json'})
|
121
117
|
end
|
122
118
|
|
123
119
|
unless ['200', '201', '204'].include?(response.response.code)
|
data/lib/popit/version.rb
CHANGED
data/popit.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
20
|
s.add_runtime_dependency('httparty', '~> 0.10.0')
|
21
|
-
s.add_development_dependency('rspec', '~>
|
21
|
+
s.add_development_dependency('rspec', '~> 3.1.0')
|
22
22
|
s.add_development_dependency('rake')
|
23
23
|
s.add_development_dependency('coveralls')
|
24
24
|
end
|
data/spec/popit_spec.rb
CHANGED
@@ -13,8 +13,7 @@ describe PopIt do
|
|
13
13
|
let :authenticated do
|
14
14
|
PopIt.new({
|
15
15
|
:instance_name => ENV['INSTANCE_NAME'] || 'tttest',
|
16
|
-
:
|
17
|
-
:password => ENV['POPIT_PASSWORD'],
|
16
|
+
:apikey => ENV['POPIT_API_KEY'],
|
18
17
|
})
|
19
18
|
end
|
20
19
|
|
@@ -48,12 +47,12 @@ describe PopIt do
|
|
48
47
|
context 'when unauthenticated' do
|
49
48
|
it 'should get all items' do
|
50
49
|
response = unauthenticated.persons.get
|
51
|
-
response.
|
50
|
+
expect(response).to be_an(Array)
|
52
51
|
end
|
53
52
|
|
54
53
|
it 'should get one item by name' do
|
55
54
|
response = unauthenticated.persons.get(:name => 'Foo')
|
56
|
-
response.
|
55
|
+
expect(response).to be_an(Array)
|
57
56
|
end
|
58
57
|
|
59
58
|
it 'should get one item' do
|
@@ -62,7 +61,7 @@ describe PopIt do
|
|
62
61
|
# other_names, personal_details and adds positions_api_url to meta.
|
63
62
|
person.each do |k,v|
|
64
63
|
unless k == 'meta'
|
65
|
-
response[k].
|
64
|
+
expect(response[k]).to eq(v)
|
66
65
|
end
|
67
66
|
end
|
68
67
|
end
|
@@ -72,15 +71,15 @@ describe PopIt do
|
|
72
71
|
end
|
73
72
|
|
74
73
|
it 'should fail to create an item' do
|
75
|
-
expect {unauthenticated.persons.post(:name => 'John Doe', :slug => 'john-doe')}.to raise_error(PopIt::NotAuthenticated, '
|
74
|
+
expect {unauthenticated.persons.post(:name => 'John Doe', :slug => 'john-doe')}.to raise_error(PopIt::NotAuthenticated, 'Unauthorized')
|
76
75
|
end
|
77
76
|
|
78
77
|
it 'should fail to update an item' do
|
79
|
-
expect {unauthenticated.persons(id).put(:id => id, :name => 'John Doe', :slug => 'john-doe')}.to raise_error(PopIt::NotAuthenticated, '
|
78
|
+
expect {unauthenticated.persons(id).put(:id => id, :name => 'John Doe', :slug => 'john-doe')}.to raise_error(PopIt::NotAuthenticated, 'Unauthorized')
|
80
79
|
end
|
81
80
|
|
82
81
|
it 'should fail to delete an item' do
|
83
|
-
expect {unauthenticated.persons(id).delete}.to raise_error(PopIt::NotAuthenticated, '
|
82
|
+
expect {unauthenticated.persons(id).delete}.to raise_error(PopIt::NotAuthenticated, 'Unauthorized')
|
84
83
|
end
|
85
84
|
end
|
86
85
|
|
@@ -89,10 +88,10 @@ describe PopIt do
|
|
89
88
|
response = authenticated.persons.post(:name => 'John Smith', :slug => 'john-smith', :contact_details => [{:type => 'email', :value => 'test@example.com'}])
|
90
89
|
id = response['id']
|
91
90
|
contact_detail_id = response['contact_details'][0]['id']
|
92
|
-
response['name'].
|
91
|
+
expect(response['name']).to eq('John Smith')
|
93
92
|
|
94
93
|
response = authenticated.persons(id).put(:id => id, :name => 'John Doe', :slug => 'john-doe')
|
95
|
-
response.
|
94
|
+
expect(response).to eq({
|
96
95
|
'id' => id,
|
97
96
|
'name' => 'John Doe',
|
98
97
|
'slug' => 'john-doe',
|
@@ -107,20 +106,20 @@ describe PopIt do
|
|
107
106
|
'other_names' => [],
|
108
107
|
'url' => 'http://tttest.popit.mysociety.org/api/v0.1/persons/' + id,
|
109
108
|
'html_url' => 'http://tttest.popit.mysociety.org/persons/' + id,
|
110
|
-
}
|
111
|
-
authenticated.persons(id).get['name'].
|
109
|
+
})
|
110
|
+
expect(authenticated.persons(id).get['name']).to eq('John Doe')
|
112
111
|
|
113
112
|
response = authenticated.persons(id).delete
|
114
|
-
response.
|
113
|
+
expect(response).to be_nil
|
115
114
|
expect {authenticated.persons(id).get}.to raise_error(PopIt::PageNotFound, "id '#{id}' not found")
|
116
115
|
end
|
117
116
|
end
|
118
117
|
|
119
118
|
context 'when service unavailable' do
|
120
119
|
before :each do
|
121
|
-
PopIt.
|
120
|
+
allow(PopIt).to receive(:get) do
|
122
121
|
response = Net::HTTPServiceUnavailable.new('1.1', 503, 'Service Unavailable')
|
123
|
-
response.
|
122
|
+
allow(response).to receive_messages(:body => '', :code => '503')
|
124
123
|
HTTParty::Response.new(HTTParty::Request.new(Net::HTTP::Get, '/'), response, lambda {})
|
125
124
|
end
|
126
125
|
end
|
@@ -128,13 +127,13 @@ describe PopIt do
|
|
128
127
|
it 'should fail immediately' do
|
129
128
|
time = Time.now
|
130
129
|
expect {unauthenticated.persons.get}.to raise_error(PopIt::ServiceUnavailable)
|
131
|
-
Time.now.
|
130
|
+
expect(Time.now).to be_within(1).of(time)
|
132
131
|
end
|
133
132
|
|
134
133
|
it 'should backoff exponentially' do
|
135
134
|
time = Time.now
|
136
135
|
expect {exponential_backoff.persons.get}.to raise_error(PopIt::ServiceUnavailable)
|
137
|
-
Time.now.
|
136
|
+
expect(Time.now).to_not be_within(5).of(time)
|
138
137
|
end
|
139
138
|
end
|
140
139
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: popit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Open North
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 3.1.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 3.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,3 +113,4 @@ summary: The PopIt API Ruby Gem
|
|
113
113
|
test_files:
|
114
114
|
- spec/popit_spec.rb
|
115
115
|
- spec/spec_helper.rb
|
116
|
+
has_rdoc:
|