popit 0.0.4 → 0.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1021ff7eac4c07cf92775b5dbf6332170cc19769
4
- data.tar.gz: f0a647c2052715a33e8fc37a530dde2fba43b45c
3
+ metadata.gz: 7e0f5c6b92de48b6576028e879ce2ae23b648cbb
4
+ data.tar.gz: a178baf6cc337d0c44be75e73cff15aabafbf9e3
5
5
  SHA512:
6
- metadata.gz: 9f0259be0579851787258054454f0b4913d4eb86a7e9df117f19e744e798e4e6153007e17e22912bf7fa24c695932638891cf6058a0e4e07236133ab7b7d59f9
7
- data.tar.gz: 0f30f81ca79ae0a422718eb23a4d4eb793b90e63e1e8c8dbbb8631a9314139ecfad26c5ee992efea1fa0fb9c1e7e8b66f93b4dc27fe1ac55e098d73f47acdecb
6
+ metadata.gz: 91081f9cd938df6f9672cf45770e53007bea1067152d9e243d4e1ce5907840579dd68a092ada1cc6e32a7ef58fa03c0f1e8a6238bc9a18f14385f04a4b575274
7
+ data.tar.gz: 72ed49a72f1890dbc10bfd1cbd03a8197376e1dda7b85d7305d033cde8416b01b3a886fdfdad88262061ff5986ae692d018ed1f33d70151ca4a2f5f542ade131
data/README.md CHANGED
@@ -22,7 +22,7 @@ require 'popit'
22
22
  Then, create an API client for PopIt:
23
23
 
24
24
  ```ruby
25
- api = PopIt.new :instance_name => 'demo'
25
+ api = PopIt.new(:instance_name => 'demo')
26
26
  ```
27
27
 
28
28
  You can pass these options to `PopIt.new`:
@@ -40,47 +40,55 @@ More documentation at [RubyDoc.info](http://rdoc.info/gems/popit/PopIt).
40
40
 
41
41
  ### Read
42
42
 
43
- Get all people:
43
+ Get one page of people (default 30 per page):
44
44
 
45
45
  ```ruby
46
46
  api.persons.get
47
47
  ```
48
48
 
49
+ Get a different number of people per page (maximum 100 per page):
50
+
51
+ ```ruby
52
+ api.persons.get(:per_page => 100)
53
+ ```
54
+
55
+ Get another page of people:
56
+
57
+ ```ruby
58
+ api.persons.get(:page => 2)
59
+ ```
60
+
49
61
  Get one person:
50
62
 
51
63
  ```ruby
52
64
  api.persons('47cc67093475061e3d95369d').get
53
65
  ```
54
66
 
55
- You can also search for...
56
-
57
- * people by slug, name or summary
58
- * organizations by slug or name
59
- * memberships by title, person or organization
67
+ ### Search
60
68
 
61
- For example:
69
+ Read the [PopIt API documentation](http://popit.mysociety.org/docs/api/search) for details.
62
70
 
63
71
  ```ruby
64
- api.person.get :name => 'John Doe'
72
+ api.search.persons.get(:q => 'name:"John Doe"')
65
73
  ```
66
74
 
67
75
  ### Create
68
76
 
69
77
  ```ruby
70
- response = api.person.post :name => 'John Doe'
78
+ response = api.persons.post(:name => 'John Doe')
71
79
  id = response['id']
72
80
  ```
73
81
 
74
82
  ### Update
75
83
 
76
84
  ```ruby
77
- api.person(id).put :id => id, :name => 'Jane Doe'
85
+ api.persons(id).put(:id => id, :name => 'Jane Doe')
78
86
  ```
79
87
 
80
88
  ### Delete
81
89
 
82
90
  ```ruby
83
- success = api.person(id).delete
91
+ success = api.persons(id).delete
84
92
  ```
85
93
 
86
94
  ## Error Handling
@@ -91,8 +99,8 @@ The exception's message will be the same as from the PopIt API.
91
99
 
92
100
  ```ruby
93
101
  require 'popit'
94
- api = PopIt.new :instance_name => 'demo'
95
- api.person.get 'foo' # raises PopIt::PageNotFound with "page not found"
102
+ api = PopIt.new(:instance_name => 'demo')
103
+ api.persons.get('foo') # raises PopIt::PageNotFound with "page not found"
96
104
  ```
97
105
 
98
106
  ## Running Tests
data/lib/popit.rb CHANGED
@@ -49,7 +49,7 @@ class PopIt
49
49
  # @option opts [String] :user a user name
50
50
  # @option opts [String] :password the user's password
51
51
  def initialize(opts = {})
52
- unless opts.has_key? :instance_name
52
+ unless opts.has_key?(:instance_name)
53
53
  raise ArgumentError, 'Missing key :instance_name'
54
54
  end
55
55
 
@@ -67,7 +67,7 @@ class PopIt
67
67
  # @param [Hash] opts key-value pairs for the query string
68
68
  # @return the JSON response from the server
69
69
  def get(path, opts = {})
70
- request :get, path, opts
70
+ request(:get, path, opts)
71
71
  end
72
72
 
73
73
  # Sends a POST request.
@@ -76,7 +76,7 @@ class PopIt
76
76
  # @param [Hash] opts key-value pairs for the message body
77
77
  # @return the JSON response from the server
78
78
  def post(path, opts = {})
79
- request :post, path, opts
79
+ request(:post, path, opts)
80
80
  end
81
81
 
82
82
  # Sends a PUT request.
@@ -85,7 +85,7 @@ class PopIt
85
85
  # @param [Hash] opts key-value pairs for the message body
86
86
  # @return [nil] nothing
87
87
  def put(path, opts = {})
88
- request :put, path, opts
88
+ request(:put, path, opts)
89
89
  end
90
90
 
91
91
  # Sends a DELETE request.
@@ -94,7 +94,7 @@ class PopIt
94
94
  # @param [Hash] opts key-value pairs for the query string
95
95
  # @return [Hash] an empty hash
96
96
  def delete(path, opts = {})
97
- request :delete, path, opts
97
+ request(:delete, path, opts)
98
98
  end
99
99
 
100
100
  private
@@ -104,18 +104,22 @@ private
104
104
 
105
105
  response = case http_method
106
106
  when :get
107
- self.class.send http_method, path, :query => opts
107
+ self.class.send(http_method, path, :query => opts)
108
108
  when :delete
109
- self.class.send http_method, path, :basic_auth => {:username => username, :password => password}, :query => opts
109
+ self.class.send(http_method, path, :basic_auth => {:username => username, :password => password}, :query => opts)
110
110
  when :post, :put
111
- self.class.send http_method, path, :basic_auth => {:username => username, :password => password}, :body => JSON.dump(opts), :headers => {'Content-Type' => 'application/json', 'Accept' => 'application/json'}
111
+ self.class.send(http_method, path, :basic_auth => {:username => username, :password => password}, :body => JSON.dump(opts), :headers => {'Content-Type' => 'application/json', 'Accept' => 'application/json'})
112
112
  end
113
113
 
114
114
  unless ['200', '201', '204'].include?(response.response.code)
115
- if response.response.content_type == 'text/html'
116
- message = response.response.code
115
+ message = if response.response.content_type == 'text/html'
116
+ "HTTP #{response.response.code}"
117
+ elsif response.parsed_response['error']
118
+ response.parsed_response['error']
119
+ elsif response.parsed_response['errors']
120
+ response.parsed_response['errors'].join(', ')
117
121
  else
118
- message = response.parsed_response['error'] || response.parsed_response['errors'].join(', ')
122
+ response.parsed_response
119
123
  end
120
124
  case response.response.code
121
125
  when '404'
@@ -143,19 +147,19 @@ private
143
147
  end
144
148
 
145
149
  def get(opts = {})
146
- @klass.get chain.join('/'), opts
150
+ @klass.get(chain.join('/'), opts)
147
151
  end
148
152
 
149
153
  def post(opts = {})
150
- @klass.post chain.join('/'), opts
154
+ @klass.post(chain.join('/'), opts)
151
155
  end
152
156
 
153
157
  def put(opts = {})
154
- @klass.put chain.join('/'), opts
158
+ @klass.put(chain.join('/'), opts)
155
159
  end
156
160
 
157
161
  def delete(opts = {})
158
- @klass.delete chain.join('/'), opts
162
+ @klass.delete(chain.join('/'), opts)
159
163
  end
160
164
 
161
165
  def method_missing(*args)
data/lib/popit/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class PopIt
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/spec/popit_spec.rb CHANGED
@@ -82,8 +82,9 @@ describe PopIt do
82
82
 
83
83
  context 'when authenticated' do
84
84
  it 'should create, update and delete an item' do
85
- response = authenticated.persons.post :name => 'John Smith', :slug => 'john-smith'
85
+ response = authenticated.persons.post :name => 'John Smith', :slug => 'john-smith', :contact_details => [{:type => 'email', :value => 'test@example.com'}]
86
86
  id = response['id']
87
+ contact_detail_id = response['contact_details'][0]['id']
87
88
  response['name'].should == 'John Smith'
88
89
 
89
90
  response = authenticated.persons(id).put :id => id, :name => 'John Doe', :slug => 'john-doe'
@@ -93,11 +94,15 @@ describe PopIt do
93
94
  'slug' => 'john-doe',
94
95
  'memberships' => [],
95
96
  'links' => [],
96
- 'contact_details' => [],
97
+ 'contact_details' => [{
98
+ 'id' => contact_detail_id,
99
+ 'type' => 'email',
100
+ 'value' => 'test@example.com',
101
+ }],
97
102
  'identifiers' => [],
98
103
  'other_names' => [],
99
104
  'url' => 'http://tttest.popit.mysociety.org/api/v0.1/persons/' + id,
100
- 'html_url' => 'http://tttest.popit.mysociety.org/persons/john-doe',
105
+ 'html_url' => 'http://tttest.popit.mysociety.org/persons/' + id,
101
106
  }
102
107
  authenticated.persons(id).get['name'].should == 'John Doe'
103
108
 
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
4
+ version: 0.0.5
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-04-23 00:00:00.000000000 Z
11
+ date: 2014-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty