pmp 0.2.3 → 0.2.4
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 +4 -4
- data/README.md +1 -0
- data/lib/pmp/connection.rb +12 -10
- data/lib/pmp/link.rb +0 -2
- data/lib/pmp/token.rb +3 -3
- data/lib/pmp/version.rb +1 -1
- data/spec/collection_document_spec.rb +25 -1
- data/spec/fixtures/collection_links.json +36 -0
- data/spec/parser_spec.rb +14 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e20dca7592de10022ded2bda390f2e172bc8f026
|
4
|
+
data.tar.gz: 704f4900aa8ebcb8af896682a2f3ed743f669fc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c01ba49f3108680b8353355de2a5e4c4a646816e82a699bb00f0895e7513e074582e5ad3615f96545fb91923a7041e75c5c457cadffd5c3ee18d63d1ddf452df
|
7
|
+
data.tar.gz: ebb7db14d83f8b167c12df7552b5c662d635e0fe95e43e0e4321a4b3aaabec9c5012a87aa8f488b37172fbc6acb2bf0b4d01c019251058e62805e8fa13ddd8da
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/PRX/pmp)
|
4
4
|
[](https://coveralls.io/r/PRX/pmp)
|
5
|
+
[](https://codeclimate.com/github/PRX/pmp)
|
5
6
|
[](https://gemnasium.com/PRX/pmp)
|
6
7
|
[](http://badge.fury.io/rb/pmp)
|
7
8
|
|
data/lib/pmp/connection.rb
CHANGED
@@ -25,24 +25,26 @@ module PMP
|
|
25
25
|
opts = process_options(options)
|
26
26
|
Faraday::Connection.new(opts) do |faraday|
|
27
27
|
|
28
|
-
|
29
|
-
faraday.request :basic_auth, opts[:user], opts[:password]
|
30
|
-
elsif opts[:oauth_token]
|
31
|
-
faraday.request :authorization, opts[:token_type], opts[:oauth_token]
|
32
|
-
end
|
28
|
+
add_request_auth(opts, faraday)
|
33
29
|
|
34
|
-
faraday.request
|
35
|
-
|
30
|
+
[:multipart, :url_encoded].each{|mw| faraday.request(mw) }
|
31
|
+
|
32
|
+
[:mashify, :json, :raise_error].each{|mw| faraday.response(mw) }
|
36
33
|
|
37
|
-
faraday.response :mashify
|
38
|
-
faraday.response :json
|
39
|
-
faraday.response :raise_error
|
40
34
|
faraday.response :logger if opts[:debug]
|
41
35
|
|
42
36
|
faraday.adapter opts[:adapter]
|
43
37
|
end
|
44
38
|
end
|
45
39
|
|
40
|
+
def add_request_auth(opts, faraday)
|
41
|
+
if opts[:basic_auth] && opts[:user] && opts[:password]
|
42
|
+
faraday.request :basic_auth, opts[:user], opts[:password]
|
43
|
+
elsif opts[:oauth_token]
|
44
|
+
faraday.request :authorization, opts[:token_type], opts[:oauth_token]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
46
48
|
def process_options(opts={})
|
47
49
|
headers = opts.delete(:headers) || {}
|
48
50
|
options = {
|
data/lib/pmp/link.rb
CHANGED
data/lib/pmp/token.rb
CHANGED
@@ -36,13 +36,13 @@ module PMP
|
|
36
36
|
def connection_options(opts={})
|
37
37
|
headers = opts.delete(:headers) || {}
|
38
38
|
options = {
|
39
|
-
:
|
39
|
+
headers: {
|
40
40
|
'User-Agent' => opts[:user_agent],
|
41
41
|
'Accept' => 'application/json',
|
42
42
|
'Content-Type' => 'application/x-www-form-urlencoded'
|
43
43
|
},
|
44
|
-
:
|
45
|
-
:
|
44
|
+
ssl: {:verify => false},
|
45
|
+
url: opts[:endpoint]
|
46
46
|
}.merge(opts)
|
47
47
|
options[:headers] = options[:headers].merge(headers)
|
48
48
|
|
data/lib/pmp/version.rb
CHANGED
@@ -194,7 +194,26 @@ describe PMP::CollectionDocument do
|
|
194
194
|
doc.test.must_equal link
|
195
195
|
end
|
196
196
|
|
197
|
-
it "can save a
|
197
|
+
it "can save a record" do
|
198
|
+
|
199
|
+
# stub getting the root doc
|
200
|
+
root_doc = json_file(:collection_root)
|
201
|
+
stub_request(:get, "https://api.pmp.io/").
|
202
|
+
with(:headers => {'Accept'=>'application/vnd.pmp.collection.doc+json', 'Content-Type'=>'application/vnd.pmp.collection.doc+json', 'Host'=>'api.pmp.io:443'}).
|
203
|
+
to_return(:status => 200, :body => root_doc, :headers => {})
|
204
|
+
|
205
|
+
# stub saving the new doc
|
206
|
+
stub_request(:put, "https://publish-sandbox.pmp.io/docs/c144e4df-021b-41e6-9cf3-42ac49bcbd42").
|
207
|
+
with(:headers => {'Accept'=>'application/vnd.pmp.collection.doc+json', 'Content-Type'=>'application/vnd.pmp.collection.doc+json', 'Host'=>'publish-sandbox.pmp.io:443'}).
|
208
|
+
to_return(:status => 404, :body => '{"error":"FAIL"}')
|
209
|
+
|
210
|
+
doc = PMP::CollectionDocument.new(oauth_token: 'thisisatestvalueonly')
|
211
|
+
doc.guid = "c144e4df-021b-41e6-9cf3-42ac49bcbd42"
|
212
|
+
doc.title = "testing"
|
213
|
+
proc{ doc.save }.must_raise Faraday::Error::ResourceNotFound
|
214
|
+
end
|
215
|
+
|
216
|
+
it "should handle 404 results on a save" do
|
198
217
|
|
199
218
|
# stub getting the root doc
|
200
219
|
root_doc = json_file(:collection_root)
|
@@ -212,6 +231,11 @@ describe PMP::CollectionDocument do
|
|
212
231
|
doc.title = "testing"
|
213
232
|
doc.save
|
214
233
|
doc.href.must_equal "https://api-sandbox.pmp.io/docs/c144e4df-021b-41e6-9cf3-42ac49bcbd42"
|
234
|
+
|
235
|
+
doc.title.must_equal "testing"
|
236
|
+
doc.title = "testing an update"
|
237
|
+
doc.save
|
238
|
+
doc.title.must_equal "testing an update"
|
215
239
|
end
|
216
240
|
|
217
241
|
it "can delete a record" do
|
@@ -0,0 +1,36 @@
|
|
1
|
+
{
|
2
|
+
"version": "1.0",
|
3
|
+
"attributes": {
|
4
|
+
"guid": "f84e9018-5c21-4b32-93f8-d519308620f0",
|
5
|
+
"title": "Peers Find Less Pressure Borrowing From Each Other",
|
6
|
+
"published": "2013-05-10T15:17:00.598Z",
|
7
|
+
"valid": {
|
8
|
+
"from": "2013-05-10T15:17:00.598Z",
|
9
|
+
"to": "2213-05-10T15:17:00.598Z"
|
10
|
+
},
|
11
|
+
"byline": "by SOME PERSON",
|
12
|
+
"hreflang": "en",
|
13
|
+
"description": "",
|
14
|
+
"contentencoded": "...",
|
15
|
+
"contenttemplated": "..."
|
16
|
+
},
|
17
|
+
"items": [],
|
18
|
+
"links": {
|
19
|
+
"profile": [
|
20
|
+
{
|
21
|
+
"href": "http://api-sandbox.pmp.io/profiles/story"
|
22
|
+
}
|
23
|
+
],
|
24
|
+
"self": {
|
25
|
+
"href": "http://api-sandbox.pmp.io/docs/f84e9018-5c21-4b32-93f8-d519308620f0"
|
26
|
+
},
|
27
|
+
"collection": [
|
28
|
+
{
|
29
|
+
"href": "http://api-sandbox.pmp.io/docs/"
|
30
|
+
}
|
31
|
+
],
|
32
|
+
"queries": [],
|
33
|
+
"edit-form": []
|
34
|
+
},
|
35
|
+
"error": {}
|
36
|
+
}
|
data/spec/parser_spec.rb
CHANGED
@@ -28,6 +28,12 @@ describe PMP::Parser do
|
|
28
28
|
tc.parse(nil)
|
29
29
|
end
|
30
30
|
|
31
|
+
it "will parse links without array comtainer" do
|
32
|
+
tc = TestParser.new
|
33
|
+
tc.parse(json_fixture(:collection_links))
|
34
|
+
tc.links['self'].href.must_equal "http://api-sandbox.pmp.io/docs/f84e9018-5c21-4b32-93f8-d519308620f0"
|
35
|
+
end
|
36
|
+
|
31
37
|
it "will un-parse to hash for json serialization" do
|
32
38
|
tc = TestParser.new
|
33
39
|
tc.parse(json_fixture(:collection_basic))
|
@@ -45,5 +51,13 @@ describe PMP::Parser do
|
|
45
51
|
tc.query.keys.sort.must_equal ["urn:pmp:hreftpl:docs", "urn:pmp:hreftpl:profiles", "urn:pmp:hreftpl:schemas", "urn:pmp:query:docs", "urn:pmp:query:groups", "urn:pmp:query:guids", "urn:pmp:query:users"]
|
46
52
|
end
|
47
53
|
|
54
|
+
it "will unparse links" do
|
55
|
+
tc = TestParser.new
|
56
|
+
tc.parse(json_fixture(:collection_root))
|
57
|
+
tc.links['test1'] = PMP::Link.new(href: 'https://api-sandbox.pmp.io/test1')
|
58
|
+
tc.links['test2'] = [PMP::Link.new(href: 'https://api-sandbox.pmp.io/test2a'), PMP::Link.new(href: 'https://api-sandbox.pmp.io/test2b')]
|
59
|
+
hash = tc.as_json
|
60
|
+
hash['links'].keys.sort.must_equal ["creator", "edit", "navigation", "query", "test1", "test2"]
|
61
|
+
end
|
48
62
|
|
49
63
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pmp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kuklewicz
|
@@ -299,6 +299,7 @@ files:
|
|
299
299
|
- spec/connection_spec.rb
|
300
300
|
- spec/credential_spec.rb
|
301
301
|
- spec/fixtures/collection_basic.json
|
302
|
+
- spec/fixtures/collection_links.json
|
302
303
|
- spec/fixtures/collection_query.json
|
303
304
|
- spec/fixtures/collection_root.json
|
304
305
|
- spec/link_spec.rb
|
@@ -340,6 +341,7 @@ test_files:
|
|
340
341
|
- spec/connection_spec.rb
|
341
342
|
- spec/credential_spec.rb
|
342
343
|
- spec/fixtures/collection_basic.json
|
344
|
+
- spec/fixtures/collection_links.json
|
343
345
|
- spec/fixtures/collection_query.json
|
344
346
|
- spec/fixtures/collection_root.json
|
345
347
|
- spec/link_spec.rb
|