pmp 0.2.1 → 0.2.2

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