popit 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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