shutl_resource 1.4.2 → 1.5.0

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NmRlNDY2N2JlODI4YmZhYzdmZWJkOGVjOGFhOWFkMTQ1NGZlYmIxZg==
5
+ data.tar.gz: !binary |-
6
+ Yzg2NTQ4YjZmNzg3MTI4MTNmYmVhYjQ0MTQxYTU4MjVlZDNjYWUxMA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ODlhY2MyYWE2ZjM1YTNkNjYyYjA0NzFjZTBkZjU2MmMzZDAyMzA1OWI1MTQ1
10
+ ZThmZDdmOWJkZjg5ZGQ1Nzk3YWZlYjljMzViNTkyMmY3MDkzMThhZTIyYTJk
11
+ Y2E3Mjc0Y2RkMWMyNDVlN2I0ZTg0YTNkMDdhMzBmZmE4NjU4NjA=
12
+ data.tar.gz: !binary |-
13
+ ODJlMzU5ZTM5MzRhZjkxODBlMmVlMjdlMWFhZWFjZDBkOWE0YTEzNzRjN2Qw
14
+ ZmFmZDJjNTRiYTNjNDZhNDRjZWNmYWMzMjlkMTkxMTFlZjc1OTY2MDJiODg4
15
+ MWFjY2I5ZWIyNjRmOWZjZDM5ZjI1N2VkMjE3ODBlYmM4NjQwMjU=
@@ -33,7 +33,12 @@ module Shutl::Resource
33
33
  end
34
34
 
35
35
  def update_attributes(attrs)
36
- attrs.each { |a, v| instance_variable_set(:"@#{a}", v) }
36
+ attrs.each do |a, v|
37
+ unless String(a) == 'id' && attributes.include?('id')
38
+ a = 'id' if String(a) == 'new_id'
39
+ attributes.update String(a) => v
40
+ end
41
+ end
37
42
  end
38
43
 
39
44
  def update!(attrs, headers = {})
@@ -51,14 +56,12 @@ module Shutl::Resource
51
56
  end
52
57
 
53
58
  def method_missing(method, *args, &block)
54
- if self.instance_variables.include?(:"@#{method}")
55
- return self.instance_variable_get(:"@#{method}")
56
- end
57
- super
59
+ return attributes[String(args.first)] if method.to_s == '[]'
60
+ attributes.fetch(String(method)) { super }
58
61
  end
59
62
 
60
63
  def respond_to? method
61
- self.instance_variables.include?(:"@#{method}") ? true : super
64
+ attributes.has_key?(method) ? true : super
62
65
  end
63
66
 
64
67
 
@@ -79,9 +82,7 @@ module Shutl::Resource
79
82
  end
80
83
 
81
84
  def attributes
82
- (instance_variables- [:@errors, :@pagination]).inject({}.with_indifferent_access) do |h, var|
83
- h.merge( { var.to_s.gsub('@','').to_sym => instance_variable_get(var)})
84
- end
85
+ @attributes ||= {}
85
86
  end
86
87
 
87
88
  protected
@@ -31,7 +31,6 @@ module Shutl::Resource
31
31
  else
32
32
  url = member_url args.dup, params
33
33
  end
34
-
35
34
  response = connection.get(url) do |req|
36
35
  req.headers = generate_request_header(header_options(params))
37
36
  end
@@ -247,13 +246,6 @@ module Shutl::Resource
247
246
  header_key.split(%r{\_|\-}).map {|e| e.capitalize }.join("-")
248
247
  end
249
248
 
250
- def headers_with_auth options = {}
251
- headers.tap do |h|
252
- h['Authorization'] = "Bearer #{options[:auth]}" if options[:auth]
253
- h['From'] = "#{options[:from]}" if options[:from]
254
- end
255
- end
256
-
257
249
  def perform_action instance, verb, body, headers, failure_message
258
250
  attributes = instance.is_a?(Hash) ? instance : instance.attributes
259
251
  attributes.delete "response" #used in debugging requests/responses
@@ -1,5 +1,5 @@
1
1
  module Shutl
2
2
  module Resource
3
- VERSION = '1.4.2'
3
+ VERSION = '1.5.0'
4
4
  end
5
5
  end
@@ -15,8 +15,8 @@ describe Shutl::Resource::Rest do
15
15
 
16
16
  describe '#initalize' do
17
17
  it 'should assign the instance variable value for the entries in the hash' do
18
- resource.instance_variable_get(:@a).should == 'a'
19
- resource.instance_variable_get(:@b).should == 'b'
18
+ resource.attributes['a'].should == 'a'
19
+ resource.attributes['b'].should == 'b'
20
20
  end
21
21
 
22
22
  it 'should create a attribute reader' do
@@ -55,8 +55,7 @@ describe Shutl::Resource::Rest do
55
55
  it 'should replace the attributes' do
56
56
  resource.update_attributes(a: 'c')
57
57
 
58
- resource.instance_variable_get(:@a).should == 'c'
59
-
58
+ resource['a'].should == 'c'
60
59
  end
61
60
  end
62
61
  end
@@ -31,6 +31,32 @@ describe Shutl::Resource::Rest do
31
31
  }
32
32
  }
33
33
 
34
+ describe 'prepends Bearer if auth is passed in for authorization' do
35
+ let(:resource) { TestSingularResource.new }
36
+ let(:expected_headers) {
37
+ {
38
+ 'Accept' => 'application/json',
39
+ 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
40
+ 'Authorization' => 'Bearer some_auth',
41
+ 'Content-Type' => 'application/json',
42
+ 'User-Agent' => "Shutl Resource Gem v#{Shutl::Resource::VERSION}",
43
+ }
44
+ }
45
+ before do
46
+ @request = stub_request(:get, 'http://host/test_singular_resource')
47
+ .with(expected_headers)
48
+ .to_return(:status => 200,
49
+ :body => '{"test_singular_resource": { "a": "a", "b": 2 }}',
50
+ :headers => response_headers)
51
+ end
52
+ it 'queries the endpoint' do
53
+ TestSingularResource.find(auth: "some_auth")
54
+ @request.should have_been_requested
55
+ end
56
+
57
+ end
58
+
59
+
34
60
  describe '#find' do
35
61
  context "with a singular resource" do
36
62
  let(:resource) { TestSingularResource.new }
@@ -114,8 +114,8 @@ describe Shutl::Resource::Rest do
114
114
  it 'should assign the attributes based on the json returned' do
115
115
  resource = TestRest.find('a', auth: "some auth")
116
116
 
117
- resource.instance_variable_get('@a').should == 'a'
118
- resource.instance_variable_get('@b').should == 2
117
+ resource.attributes['a'].should == 'a'
118
+ resource.attributes['b'].should == 2
119
119
  end
120
120
 
121
121
  context "299" do
@@ -182,7 +182,7 @@ describe Shutl::Resource::Rest do
182
182
  it 'should add a id based on the resource id' do
183
183
  resource = TestRest.find('a')
184
184
 
185
- resource.instance_variable_get('@id').should == 'a'
185
+ resource.attributes['id'].should == 'a'
186
186
  end
187
187
  end
188
188
 
@@ -241,8 +241,8 @@ describe Shutl::Resource::Rest do
241
241
  it 'should assign the attributes based on the json returned' do
242
242
  resource = TestRest.all
243
243
 
244
- resource.first.instance_variable_get('@a').should == 'a'
245
- resource.first.instance_variable_get('@b').should == 2
244
+ resource.first.attributes['a'].should == 'a'
245
+ resource.first.attributes['b'].should == 2
246
246
  end
247
247
 
248
248
  it 'should provide accessor to pagination' do
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shutl_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
5
- prerelease:
4
+ version: 1.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - David Rouchy
@@ -12,12 +11,11 @@ authors:
12
11
  autorequire:
13
12
  bindir: bin
14
13
  cert_chain: []
15
- date: 2013-11-05 00:00:00.000000000 Z
14
+ date: 2013-11-13 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: shutl_auth
19
18
  requirement: !ruby/object:Gem::Requirement
20
- none: false
21
19
  requirements:
22
20
  - - ~>
23
21
  - !ruby/object:Gem::Version
@@ -25,7 +23,6 @@ dependencies:
25
23
  type: :runtime
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
27
  - - ~>
31
28
  - !ruby/object:Gem::Version
@@ -33,7 +30,6 @@ dependencies:
33
30
  - !ruby/object:Gem::Dependency
34
31
  name: activemodel
35
32
  requirement: !ruby/object:Gem::Requirement
36
- none: false
37
33
  requirements:
38
34
  - - ! '>='
39
35
  - !ruby/object:Gem::Version
@@ -41,7 +37,6 @@ dependencies:
41
37
  type: :runtime
42
38
  prerelease: false
43
39
  version_requirements: !ruby/object:Gem::Requirement
44
- none: false
45
40
  requirements:
46
41
  - - ! '>='
47
42
  - !ruby/object:Gem::Version
@@ -49,7 +44,6 @@ dependencies:
49
44
  - !ruby/object:Gem::Dependency
50
45
  name: faraday
51
46
  requirement: !ruby/object:Gem::Requirement
52
- none: false
53
47
  requirements:
54
48
  - - ! '>='
55
49
  - !ruby/object:Gem::Version
@@ -57,7 +51,6 @@ dependencies:
57
51
  type: :runtime
58
52
  prerelease: false
59
53
  version_requirements: !ruby/object:Gem::Requirement
60
- none: false
61
54
  requirements:
62
55
  - - ! '>='
63
56
  - !ruby/object:Gem::Version
@@ -65,7 +58,6 @@ dependencies:
65
58
  - !ruby/object:Gem::Dependency
66
59
  name: faraday_middleware
67
60
  requirement: !ruby/object:Gem::Requirement
68
- none: false
69
61
  requirements:
70
62
  - - ! '>='
71
63
  - !ruby/object:Gem::Version
@@ -73,7 +65,6 @@ dependencies:
73
65
  type: :runtime
74
66
  prerelease: false
75
67
  version_requirements: !ruby/object:Gem::Requirement
76
- none: false
77
68
  requirements:
78
69
  - - ! '>='
79
70
  - !ruby/object:Gem::Version
@@ -81,7 +72,6 @@ dependencies:
81
72
  - !ruby/object:Gem::Dependency
82
73
  name: faraday-conductivity
83
74
  requirement: !ruby/object:Gem::Requirement
84
- none: false
85
75
  requirements:
86
76
  - - ! '>='
87
77
  - !ruby/object:Gem::Version
@@ -89,7 +79,6 @@ dependencies:
89
79
  type: :runtime
90
80
  prerelease: false
91
81
  version_requirements: !ruby/object:Gem::Requirement
92
- none: false
93
82
  requirements:
94
83
  - - ! '>='
95
84
  - !ruby/object:Gem::Version
@@ -97,7 +86,6 @@ dependencies:
97
86
  - !ruby/object:Gem::Dependency
98
87
  name: rake
99
88
  requirement: !ruby/object:Gem::Requirement
100
- none: false
101
89
  requirements:
102
90
  - - ! '>='
103
91
  - !ruby/object:Gem::Version
@@ -105,7 +93,6 @@ dependencies:
105
93
  type: :development
106
94
  prerelease: false
107
95
  version_requirements: !ruby/object:Gem::Requirement
108
- none: false
109
96
  requirements:
110
97
  - - ! '>='
111
98
  - !ruby/object:Gem::Version
@@ -113,7 +100,6 @@ dependencies:
113
100
  - !ruby/object:Gem::Dependency
114
101
  name: rspec
115
102
  requirement: !ruby/object:Gem::Requirement
116
- none: false
117
103
  requirements:
118
104
  - - ~>
119
105
  - !ruby/object:Gem::Version
@@ -121,7 +107,6 @@ dependencies:
121
107
  type: :development
122
108
  prerelease: false
123
109
  version_requirements: !ruby/object:Gem::Requirement
124
- none: false
125
110
  requirements:
126
111
  - - ~>
127
112
  - !ruby/object:Gem::Version
@@ -129,7 +114,6 @@ dependencies:
129
114
  - !ruby/object:Gem::Dependency
130
115
  name: debugger
131
116
  requirement: !ruby/object:Gem::Requirement
132
- none: false
133
117
  requirements:
134
118
  - - ! '>='
135
119
  - !ruby/object:Gem::Version
@@ -137,7 +121,6 @@ dependencies:
137
121
  type: :development
138
122
  prerelease: false
139
123
  version_requirements: !ruby/object:Gem::Requirement
140
- none: false
141
124
  requirements:
142
125
  - - ! '>='
143
126
  - !ruby/object:Gem::Version
@@ -145,7 +128,6 @@ dependencies:
145
128
  - !ruby/object:Gem::Dependency
146
129
  name: webmock
147
130
  requirement: !ruby/object:Gem::Requirement
148
- none: false
149
131
  requirements:
150
132
  - - ~>
151
133
  - !ruby/object:Gem::Version
@@ -153,7 +135,6 @@ dependencies:
153
135
  type: :development
154
136
  prerelease: false
155
137
  version_requirements: !ruby/object:Gem::Requirement
156
- none: false
157
138
  requirements:
158
139
  - - ~>
159
140
  - !ruby/object:Gem::Version
@@ -203,33 +184,26 @@ files:
203
184
  - spec/support/test_singular_resource.rb
204
185
  homepage: ''
205
186
  licenses: []
187
+ metadata: {}
206
188
  post_install_message:
207
189
  rdoc_options: []
208
190
  require_paths:
209
191
  - lib
210
192
  required_ruby_version: !ruby/object:Gem::Requirement
211
- none: false
212
193
  requirements:
213
194
  - - ! '>='
214
195
  - !ruby/object:Gem::Version
215
196
  version: '0'
216
- segments:
217
- - 0
218
- hash: -3229729289856773227
219
197
  required_rubygems_version: !ruby/object:Gem::Requirement
220
- none: false
221
198
  requirements:
222
199
  - - ! '>='
223
200
  - !ruby/object:Gem::Version
224
201
  version: '0'
225
- segments:
226
- - 0
227
- hash: -3229729289856773227
228
202
  requirements: []
229
203
  rubyforge_project:
230
- rubygems_version: 1.8.25
204
+ rubygems_version: 2.1.10
231
205
  signing_key:
232
- specification_version: 3
206
+ specification_version: 4
233
207
  summary: Manage Shutl Rest resource. Parse/Serialize JSON
234
208
  test_files:
235
209
  - spec/configuration_spec.rb