pmp 0.2.1 → 0.2.2

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.
data/lib/pmp.rb CHANGED
@@ -20,4 +20,5 @@ require 'pmp/credential'
20
20
  require 'pmp/client'
21
21
 
22
22
  module PMP
23
+ extend Configuration
23
24
  end
data/lib/pmp/client.rb CHANGED
@@ -27,7 +27,7 @@ module PMP
27
27
  end
28
28
 
29
29
  def doc_of_type(type, opts={})
30
- doc = PMP::CollectionDocument.new(options.merge(opts))
30
+ doc = PMP::CollectionDocument.new(options.merge(root:root(opts)).merge(opts))
31
31
  doc.links['profile'] = Link.new(href: profile_href_for_type(type), type: "application/vnd.pmp.collection.doc+json")
32
32
  doc
33
33
  end
@@ -39,16 +39,17 @@ module PMP
39
39
  # TODO: check if this is a json string or hash, for now assume it has been mashified
40
40
  def initialize(options={}, &block)
41
41
  super()
42
+ apply_configuration(options)
43
+
44
+ self.root = current_options.delete(:root)
45
+ self.href = current_options.delete(:href)
46
+ self.version = current_options.delete(:version) || '1.0'
42
47
 
43
48
  self.links = PMP::Links.new(self)
44
- self.version = options.delete(:version) || '1.0'
45
- self.href = options.delete(:href)
46
49
 
47
50
  # if there is a doc to be had, pull it out
48
- self.response = options.delete(:response)
49
- self.original = options.delete(:document)
50
-
51
- apply_configuration(options)
51
+ self.response = current_options.delete(:response)
52
+ self.original = current_options.delete(:document)
52
53
 
53
54
  yield(self) if block_given?
54
55
  end
@@ -100,14 +101,21 @@ module PMP
100
101
  end
101
102
 
102
103
  def edit_link(method)
103
- # first, need the root, use the endpoint
104
104
  link = root_document.edit['urn:pmp:form:documentsave']
105
105
  raise "Edit link does not specify saving via #{method}" unless (link && link.hints.allow.include?(method))
106
106
  link
107
107
  end
108
108
 
109
+ def root
110
+ @root
111
+ end
112
+
113
+ def root=(r)
114
+ @root
115
+ end
116
+
109
117
  def root_document
110
- PMP::CollectionDocument.new(options.merge(href: endpoint))
118
+ @root ||= PMP::CollectionDocument.new(current_options.merge(href: endpoint))
111
119
  end
112
120
 
113
121
  def loaded?
@@ -116,7 +124,7 @@ module PMP
116
124
 
117
125
  def setup_oauth_token
118
126
  if !oauth_token
119
- token = PMP::Token.new(options).get_token
127
+ token = PMP::Token.new(current_options).get_token
120
128
  self.oauth_token = token.token
121
129
  end
122
130
  end
@@ -127,7 +135,7 @@ module PMP
127
135
  setup_oauth_token
128
136
 
129
137
  begin
130
- raw = connection(options.merge({url: url})).send(method) do |request|
138
+ raw = connection(current_options.merge({url: url})).send(method) do |request|
131
139
  if [:post, :put].include?(method.to_sym) && !body.blank?
132
140
  request.body = body.is_a?(String) ? body : body.to_json
133
141
  end
@@ -38,20 +38,26 @@ module PMP
38
38
 
39
39
  included do
40
40
 
41
- attr_accessor :options
41
+ attr_accessor :current_options
42
42
 
43
43
  VALID_OPTIONS_KEYS.each do |key|
44
44
  define_method "#{key}=" do |arg|
45
45
  self.instance_variable_set("@#{key}", arg)
46
- self.options.merge!({:"#{key}" => arg})
46
+ self.current_options.merge!({:"#{key}" => arg})
47
47
  end
48
48
  end
49
49
 
50
50
  end
51
51
 
52
+ def options
53
+ options = {}
54
+ VALID_OPTIONS_KEYS.each { |k| options[k] = send(k) }
55
+ options
56
+ end
57
+
52
58
  def apply_configuration(opts={})
53
- reset! unless @options
54
- self.options = options.merge(opts)
59
+ options = PMP.options.merge(opts)
60
+ self.current_options = options
55
61
  VALID_OPTIONS_KEYS.each do |key|
56
62
  send("#{key}=", options[key])
57
63
  end
@@ -74,6 +80,10 @@ module PMP
74
80
  self
75
81
  end
76
82
 
83
+ def self.extended(base)
84
+ base.reset!
85
+ end
86
+
77
87
  module ClassMethods
78
88
 
79
89
  def keys
@@ -34,9 +34,9 @@ module PMP
34
34
  faraday.request :url_encoded
35
35
 
36
36
  faraday.response :mashify
37
- faraday.response :logger if opts[:debug]
38
37
  faraday.response :json
39
38
  faraday.response :raise_error
39
+ faraday.response :logger if opts[:debug]
40
40
 
41
41
  faraday.adapter opts[:adapter]
42
42
  end
@@ -41,7 +41,7 @@ module PMP
41
41
  'Content-Type' => [:put, :post].include?(method) ? "application/x-www-form-urlencoded" : nil
42
42
  }
43
43
 
44
- conn_opts = options.merge({headers: headers, basic_auth: true})
44
+ conn_opts = current_options.merge({headers: headers, basic_auth: true})
45
45
 
46
46
  raw = connection(conn_opts).send(method, url, body)
47
47
  PMP::Response.new(raw, {method: method, url: url, body: body})
data/lib/pmp/link.rb CHANGED
@@ -44,7 +44,7 @@ module PMP
44
44
  self.class.new(attributes.merge({'params'=>params}), parent)
45
45
  end
46
46
 
47
- def as_json
47
+ def as_json(options={})
48
48
  extract_attributes
49
49
  end
50
50
 
@@ -58,7 +58,7 @@ module PMP
58
58
  # puts "retrieve method: #{method}"
59
59
  # puts "retrieve url: #{url}"
60
60
  # response = parent.request((method || 'get').to_sym, url)
61
- PMP::CollectionDocument.new(parent.options.merge(href: url))
61
+ @doc ||= PMP::CollectionDocument.new(parent.options.merge(href: url, root: parent.root))
62
62
  end
63
63
 
64
64
  def method_missing(method, *args)
data/lib/pmp/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module PMP
4
- VERSION = "0.2.1"
4
+ VERSION = "0.2.2"
5
5
  end
@@ -170,7 +170,7 @@ describe PMP::CollectionDocument do
170
170
  it "should handle 404 results on a search" do
171
171
 
172
172
  stub_request(:get, "https://api-sandbox.pmp.io/docs").
173
- with(:headers => {'Accept'=>'application/vnd.pmp.collection.doc+json', 'Authorization'=>'Bearer thisisatesttoken', 'Content-Type'=>'application/vnd.pmp.collection.doc+json', 'Host'=>'api-sandbox.pmp.io:443', 'User-Agent'=>'PMP Ruby Gem 0.2.0'}).
173
+ with(:headers => {'Accept'=>'application/vnd.pmp.collection.doc+json', 'Authorization'=>'Bearer thisisatesttoken', 'Content-Type'=>'application/vnd.pmp.collection.doc+json', 'Host'=>'api-sandbox.pmp.io:443'}).
174
174
  to_return(:status=>404, :body=>"Not Found", :remote_ip=>"107.20.158.113", :headers=>{"Access-Control-Allow-Headers"=>"origin, x-http-method-override, accept, content-type, authorization, x-pingother", "Access-Control-Allow-Methods"=>"GET,OPTIONS,HEAD,PUT,POST,DELETE,PATCH", "Access-Control-Allow-Origin"=>"*", "Content-Type"=>"application/vnd.pmp.collection.doc+json", "Date"=>"Thu, 24 Oct 2013 17:20:04 GMT", "Vary"=>"Accept-Encoding", "X-Powered-By"=>"Express", "X-Response-Time"=>"18ms", "Content-Length"=>"9", "Connection"=>"keep-alive"})
175
175
 
176
176
  @doc.query["urn:pmp:query:docs"].items.must_equal []
data/spec/pmp_spec.rb ADDED
@@ -0,0 +1,12 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
4
+
5
+ describe PMP do
6
+
7
+ it "has default configuration" do
8
+ PMP.options.wont_be_nil
9
+ PMP.options[:endpoint].must_equal "https://api.pmp.io/"
10
+ end
11
+
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kuklewicz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-24 00:00:00.000000000 Z
11
+ date: 2013-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -278,6 +278,7 @@ files:
278
278
  - README.md
279
279
  - Rakefile
280
280
  - example/permissions.rb
281
+ - example/permissions_result.txt
281
282
  - lib/pmp.rb
282
283
  - lib/pmp/client.rb
283
284
  - lib/pmp/collection_document.rb
@@ -303,6 +304,7 @@ files:
303
304
  - spec/link_spec.rb
304
305
  - spec/links_spec.rb
305
306
  - spec/parser_spec.rb
307
+ - spec/pmp_spec.rb
306
308
  - spec/response_spec.rb
307
309
  - spec/spec_helper.rb
308
310
  - spec/token_spec.rb
@@ -343,6 +345,7 @@ test_files:
343
345
  - spec/link_spec.rb
344
346
  - spec/links_spec.rb
345
347
  - spec/parser_spec.rb
348
+ - spec/pmp_spec.rb
346
349
  - spec/response_spec.rb
347
350
  - spec/spec_helper.rb
348
351
  - spec/token_spec.rb