pco_api 1.1.2 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +32 -23
- data/lib/pco/api/errors.rb +38 -13
- data/lib/pco/api/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1dc3d66fb23d3d8a8c5c76b90518ffc7782d797
|
4
|
+
data.tar.gz: 45679ff9c0d32e87f7f29004295070d85db456df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 336847bc5528ccc12b316646a889b72475aad57e8ad27f7eae91e13c53444733517c4bf8564f32719255f1abe30182babe9ac97adf30742f9ddafd2284258f25
|
7
|
+
data.tar.gz: 9ebecfee7f1c1006047bfc967d28693e0cd6eef8a1fbed23e781b14e8290cd270bd9beb8338c05e8a9e05312f38d8a3bf7077f072d235fc78c91d6ffe14c4001
|
data/README.md
CHANGED
@@ -63,22 +63,24 @@ api.people.v2.people.get(order: 'last_name')
|
|
63
63
|
{
|
64
64
|
"type" => "Person",
|
65
65
|
"id" => "271",
|
66
|
-
"
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
66
|
+
"attributes" => {
|
67
|
+
"first_name" => "Jean",
|
68
|
+
"middle_name" => nil,
|
69
|
+
"last_name" => "Abernathy",
|
70
|
+
"birthdate" => "1885-01-01",
|
71
|
+
"anniversary" => nil,
|
72
|
+
"gender" => "F",
|
73
|
+
"grade" => -1,
|
74
|
+
"child" => false,
|
75
|
+
"status" => "active",
|
76
|
+
"school_type" => nil,
|
77
|
+
"graduation_year" => nil,
|
78
|
+
"site_administrator" => false,
|
79
|
+
"people_permissions" => nil,
|
80
|
+
"created_at" => "2015-04-01T20:18:22Z",
|
81
|
+
"updated_at" => "2015-04-10T18:59:51Z",
|
82
|
+
"avatar" => nil,
|
83
|
+
},
|
82
84
|
"links" => {
|
83
85
|
"self" => "https://api.planningcenteronline.com/people/v2/people/271"
|
84
86
|
}
|
@@ -91,7 +93,7 @@ api.people.v2.people.get(order: 'last_name')
|
|
91
93
|
"next" => {
|
92
94
|
"offset" => 25
|
93
95
|
},
|
94
|
-
"
|
96
|
+
"can_order_by" => [
|
95
97
|
"first_name",
|
96
98
|
"middle_name",
|
97
99
|
"last_name",
|
@@ -108,7 +110,7 @@ api.people.v2.people.get(order: 'last_name')
|
|
108
110
|
"created_at",
|
109
111
|
"updated_at"
|
110
112
|
],
|
111
|
-
"
|
113
|
+
"can_query_by" => [
|
112
114
|
"first_name",
|
113
115
|
"middle_name",
|
114
116
|
"last_name",
|
@@ -137,7 +139,11 @@ api.people.v2.people.get(order: 'last_name')
|
|
137
139
|
"name_suffix",
|
138
140
|
"field_data",
|
139
141
|
"apps"
|
140
|
-
]
|
142
|
+
],
|
143
|
+
"parent" => {
|
144
|
+
"id" => "1",
|
145
|
+
"type" => "Organization"
|
146
|
+
}
|
141
147
|
}
|
142
148
|
}
|
143
149
|
```
|
@@ -203,13 +209,16 @@ The following errors may be raised by the library, depending on the API response
|
|
203
209
|
|
204
210
|
The exception object has the following methods:
|
205
211
|
|
206
|
-
| Method | Content
|
207
|
-
| ------- |
|
208
|
-
| status | HTTP status code returned by the server
|
209
|
-
| message | the message returned by the API
|
212
|
+
| Method | Content |
|
213
|
+
| ------- | ------------------------------------------- |
|
214
|
+
| status | HTTP status code returned by the server |
|
215
|
+
| message | the message returned by the API |
|
216
|
+
| detail | the full error response returned by the API |
|
210
217
|
|
211
218
|
The `message` should be a simple string given by the API, e.g. "Resource Not Found".
|
212
219
|
|
220
|
+
In the case of validation errors, the `message` is a summary string built from the raw `detail`.
|
221
|
+
|
213
222
|
Alternatively, you may rescue `PCO::API::Errors::BaseError` and branch your code based on
|
214
223
|
the status code returned by calling `error.status`.
|
215
224
|
|
data/lib/pco/api/errors.rb
CHANGED
@@ -4,32 +4,57 @@ module PCO
|
|
4
4
|
class AuthRequiredError < StandardError; end
|
5
5
|
|
6
6
|
class BaseError < StandardError
|
7
|
-
attr_reader :status
|
7
|
+
attr_reader :status, :detail
|
8
8
|
|
9
9
|
def initialize(response)
|
10
10
|
@status = response.status
|
11
|
-
@
|
11
|
+
@detail = response.body
|
12
12
|
end
|
13
13
|
|
14
14
|
def to_s
|
15
|
-
|
15
|
+
message
|
16
|
+
end
|
17
|
+
|
18
|
+
def message
|
19
|
+
return detail.to_s unless detail.is_a?(Hash)
|
20
|
+
detail['message'] || validation_message || detail.to_s
|
16
21
|
end
|
17
22
|
|
18
23
|
def inspect
|
19
|
-
"<#{self.class.name} status=#{
|
24
|
+
"<#{self.class.name} status=#{status} message=#{message.inspect} detail=#{detail.inspect}>"
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def validation_message
|
30
|
+
return if Array(detail['errors']).empty?
|
31
|
+
errors = detail['errors'].map do |error|
|
32
|
+
error_to_string(error)
|
33
|
+
end
|
34
|
+
errors.uniq.join('; ')
|
35
|
+
end
|
36
|
+
|
37
|
+
def error_to_string(error)
|
38
|
+
return unless error.is_a?(Hash)
|
39
|
+
[
|
40
|
+
"#{error['title']}:",
|
41
|
+
error.fetch('meta', {})['resource'],
|
42
|
+
error.fetch('source', {})['parameter'],
|
43
|
+
error['detail']
|
44
|
+
].compact.join(' ')
|
20
45
|
end
|
21
46
|
end
|
22
47
|
|
23
|
-
class ClientError
|
24
|
-
class BadRequest
|
25
|
-
class Unauthorized
|
26
|
-
class Forbidden
|
27
|
-
class NotFound
|
28
|
-
class MethodNotAllowed
|
29
|
-
class UnprocessableEntity
|
48
|
+
class ClientError < BaseError; end # 400..499
|
49
|
+
class BadRequest < ClientError; end # 400
|
50
|
+
class Unauthorized < ClientError; end # 401
|
51
|
+
class Forbidden < ClientError; end # 403
|
52
|
+
class NotFound < ClientError; end # 404
|
53
|
+
class MethodNotAllowed < ClientError; end # 405
|
54
|
+
class UnprocessableEntity < ClientError; end # 422
|
30
55
|
|
31
|
-
class ServerError
|
32
|
-
class InternalServerError
|
56
|
+
class ServerError < BaseError; end # 500..599
|
57
|
+
class InternalServerError < ServerError; end # 500
|
33
58
|
end
|
34
59
|
end
|
35
60
|
end
|
data/lib/pco/api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pco_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Planning Center Online
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -130,10 +130,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
version: '0'
|
131
131
|
requirements: []
|
132
132
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.4.
|
133
|
+
rubygems_version: 2.4.5
|
134
134
|
signing_key:
|
135
135
|
specification_version: 4
|
136
136
|
summary: API wrapper for api.planningcenteronline.com
|
137
137
|
test_files:
|
138
138
|
- spec/pco/api/endpoint_spec.rb
|
139
139
|
- spec/spec_helper.rb
|
140
|
+
has_rdoc:
|