shutl_resource 1.4.2 → 1.5.0

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