nolij_web 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.rdoc +3 -1
- data/lib/nolij_web/connection.rb +15 -7
- data/lib/nolij_web/handler.rb +1 -1
- data/lib/nolij_web/version.rb +1 -1
- data/test/nolij_web/connection_test.rb +75 -9
- data/test/test_helper.rb +3 -1
- metadata +23 -37
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fc3762bd0096669b24ea98624301805113fa207c
|
4
|
+
data.tar.gz: 3760f6b1bd03602102a98ee237c1afeeeab4a1f3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c749b2069299e2af3eaffd48e7616a3681f558ea502e99882381b766f77c0a405b4be5e6a235b28772310fc71961bed2145a8b4833b829093c34a81229595c96
|
7
|
+
data.tar.gz: 3bfccb342790994659c1feea4769bac4715e2bd17e0ba7cbe0bed611cc592094f811ae7cd736d44b11b2324fad40cb55ceb09ee2a718e6c1f3ce05b5b9e47a5b
|
data/README.rdoc
CHANGED
@@ -33,7 +33,8 @@ Configuration can be passed as an assigned hash
|
|
33
33
|
config = {
|
34
34
|
:username => 'username',
|
35
35
|
:password => 'password',
|
36
|
-
:base_url => 'https://somedomain.com/NolijWeb'
|
36
|
+
:base_url => 'https://somedomain.com/NolijWeb',
|
37
|
+
:verify_ssl => true # optional, defaults to true
|
37
38
|
}
|
38
39
|
|
39
40
|
Configuration can be read from a YAML file by passing the file path. The file should contain a hash structure:
|
@@ -41,6 +42,7 @@ Configuration can be read from a YAML file by passing the file path. The file sh
|
|
41
42
|
:username: 'username'
|
42
43
|
:password: 'password'
|
43
44
|
:base_url: 'https://somedomain.com/NolijWeb'
|
45
|
+
:verify_ssl: true # optional, defaults to true
|
44
46
|
|
45
47
|
== Passing a block to NolijWeb::Handler methods
|
46
48
|
You may pass a custom block to handler methods. Please note that your block should return the response for successful request. Some of the methods rely on parsing XML responses from the server.
|
data/lib/nolij_web/connection.rb
CHANGED
@@ -16,7 +16,7 @@ Nolijweb::Connection is the class that handles actual Nolijweb api sessions and
|
|
16
16
|
===Manual Usage
|
17
17
|
You can manually establish a connection and use the _custom_connection methods to execute multiple requests in series.
|
18
18
|
|
19
|
-
Be sure
|
19
|
+
Be sure to close the connection when you are finished.
|
20
20
|
|
21
21
|
conn = NolijWeb::Connection.new(config_hash_or_yaml_path)
|
22
22
|
conn.establish_connection
|
@@ -30,7 +30,7 @@ Be sure the close the connection when you are finished.
|
|
30
30
|
attr_reader :connection
|
31
31
|
attr_reader :headers
|
32
32
|
|
33
|
-
@@valid_config_keys = [:username, :password, :base_url]
|
33
|
+
@@valid_config_keys = [:username, :password, :base_url, :verify_ssl]
|
34
34
|
|
35
35
|
def initialize(config)
|
36
36
|
if config.is_a?(String)
|
@@ -51,6 +51,7 @@ Be sure the close the connection when you are finished.
|
|
51
51
|
@base_url = @config[:base_url] || ''
|
52
52
|
@username = @config[:username] || ''
|
53
53
|
@password = @config[:password] || ''
|
54
|
+
@verify_ssl = (@config[:verify_ssl].nil? || @config[:verify_ssl] === true) ? true : !((@config[:verify_ssl] === false) || (@config[:verify_ssl] =~ /^(false|f|no|n|0)$/i))
|
54
55
|
@connection = nil
|
55
56
|
@cookies = nil
|
56
57
|
@headers = {}
|
@@ -73,7 +74,7 @@ Be sure the close the connection when you are finished.
|
|
73
74
|
end
|
74
75
|
|
75
76
|
def establish_connection
|
76
|
-
@connection =
|
77
|
+
@connection = post_custom_connection("#{@base_url}/j_spring_security_check", {:j_username => @username, :j_password => @password}) { |response, request, result, &block|
|
77
78
|
if [301, 302, 307].include? response.code
|
78
79
|
response
|
79
80
|
else
|
@@ -86,7 +87,7 @@ Be sure the close the connection when you are finished.
|
|
86
87
|
end
|
87
88
|
|
88
89
|
def close_connection
|
89
|
-
|
90
|
+
rest_client_wrapper(:get, "#{@base_url}/j_spring_security_logout", :cookies => @cookies) if @connection
|
90
91
|
@connection = nil
|
91
92
|
@cookies = nil
|
92
93
|
@headers = {}
|
@@ -125,21 +126,28 @@ Be sure the close the connection when you are finished.
|
|
125
126
|
def get_custom_connection(path, headers = {}, &block)
|
126
127
|
block ||= default_response_handler
|
127
128
|
url = URI.join(@base_url, URI.parse(@base_url).path + '/', path.to_s).to_s
|
128
|
-
|
129
|
+
rest_client_wrapper(:get, url, headers, &block)
|
129
130
|
end
|
130
131
|
|
131
132
|
# Use this inside an execute block to make mulitiple calls in the same request
|
132
133
|
def delete_custom_connection(path, headers = {}, &block)
|
133
134
|
block ||= default_response_handler
|
134
135
|
url = URI.join(@base_url, URI.parse(@base_url).path + '/', path.to_s).to_s
|
135
|
-
|
136
|
+
rest_client_wrapper(:delete, url, headers, &block)
|
136
137
|
end
|
137
138
|
|
138
139
|
# Use this inside an execute block to make mulitiple calls in the same request
|
139
140
|
def post_custom_connection(path, payload, headers = {}, &block)
|
140
141
|
block ||= default_response_handler
|
141
142
|
url = URI.join(@base_url, URI.parse(@base_url).path + '/', path.to_s).to_s
|
142
|
-
RestClient.post
|
143
|
+
RestClient::Request.execute(method: :post, url: url, payload: payload, headers: headers, verify_ssl: @verify_ssl, &block)
|
144
|
+
end
|
145
|
+
|
146
|
+
# RestClient.get/put/delete offer no way to pass additional arguments, so
|
147
|
+
# a wrapper is recommended:
|
148
|
+
# https://github.com/rest-client/rest-client/issues/297
|
149
|
+
def rest_client_wrapper(method, url, headers={}, &block)
|
150
|
+
RestClient::Request.execute(method: method, url: url, headers: headers, verify_ssl: @verify_ssl, &block)
|
143
151
|
end
|
144
152
|
|
145
153
|
private
|
data/lib/nolij_web/handler.rb
CHANGED
@@ -47,7 +47,7 @@ module NolijWeb
|
|
47
47
|
# Submit a file.
|
48
48
|
# A local file path is required.
|
49
49
|
# required options: :folder_id
|
50
|
-
# additional options: :user_code, :wfma_code, :index_code, :dept_code, :custom_name
|
50
|
+
# additional options: :user_code, :wfma_code, :index_code, :dept_code, :custom_name
|
51
51
|
def submit_document(local_file, options = {}, &block)
|
52
52
|
folder_id = options[:folder_id]
|
53
53
|
folder_id = if folder_id.kind_of?(Numeric) || folder_id.kind_of?(String)
|
data/lib/nolij_web/version.rb
CHANGED
@@ -16,12 +16,12 @@ describe NolijWeb::Connection do
|
|
16
16
|
|
17
17
|
#stubs connection and requests for full authenticated round trip
|
18
18
|
def stub_connection_round_trip(connection)
|
19
|
-
@cookies = {'
|
19
|
+
@cookies = {'a' => 'b'}
|
20
20
|
|
21
21
|
@stubbed_login = stub_request(:post, "#{@base_url}/j_spring_security_check").
|
22
|
-
with(:body => {"j_password"=> connection.instance_variable_get(:@password), "j_username"=> connection.instance_variable_get(:@username)}).to_return(:status => 200, :headers => {'Set-Cookie' => to_cookie(@cookies)})
|
22
|
+
with(:body => {"j_password"=> connection.instance_variable_get(:@password), "j_username"=> connection.instance_variable_get(:@username)}).to_return(:status => 200, :headers => {'Set-Cookie' => to_cookie(@cookies)}.merge(WEBMOCK_HEADERS))
|
23
23
|
|
24
|
-
@stubbed_logout = stub_request(:get, "#{@base_url}/j_spring_security_logout").with(:headers => {'Cookie' => to_cookie(@cookies)})
|
24
|
+
@stubbed_logout = stub_request(:get, "#{@base_url}/j_spring_security_logout").with(:headers => {'Cookie' => to_cookie(@cookies)}.merge(WEBMOCK_HEADERS))
|
25
25
|
end
|
26
26
|
|
27
27
|
describe '# initialize' do
|
@@ -134,6 +134,72 @@ with(:body => {"j_password"=> connection.instance_variable_get(:@password), "j_u
|
|
134
134
|
it "should define nil cookies" do
|
135
135
|
@conn.instance_variable_get(:@cookies).must_be_nil
|
136
136
|
end
|
137
|
+
|
138
|
+
it "should default to verifying SSL" do
|
139
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should interpret boolean settings for verifying SSL" do
|
143
|
+
@conn.configure({:verify_ssl => true})
|
144
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
145
|
+
@conn.configure({:verify_ssl => false})
|
146
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal false
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should interpret true|false string settings for verifying SSL" do
|
150
|
+
@conn.configure({:verify_ssl => 'true'})
|
151
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
152
|
+
@conn.configure({:verify_ssl => 'false'})
|
153
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal false
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should use the default (true) when a weird setting is used for verifying SSL" do
|
157
|
+
@conn.configure({:verify_ssl => 'something weird!'})
|
158
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should interpret t|f settings for verifying SSL" do
|
162
|
+
@conn.configure({:verify_ssl => 't'})
|
163
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
164
|
+
@conn.configure({:verify_ssl => 'f'})
|
165
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal false
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should interpret yes|no settings for verifying SSL" do
|
169
|
+
@conn.configure({:verify_ssl => 'yes'})
|
170
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
171
|
+
@conn.configure({:verify_ssl => 'no'})
|
172
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal false
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should interpret y|n settings for verifying SSL" do
|
176
|
+
@conn.configure({:verify_ssl => 'y'})
|
177
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
178
|
+
@conn.configure({:verify_ssl => 'n'})
|
179
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal false
|
180
|
+
end
|
181
|
+
|
182
|
+
it "should interpret 1|0 settings for verifying SSL" do
|
183
|
+
@conn.configure({:verify_ssl => '1'})
|
184
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
185
|
+
@conn.configure({:verify_ssl => '0'})
|
186
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal false
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should interpret T|F settings for verifying SSL" do
|
190
|
+
@conn.configure({:verify_ssl => 'T'})
|
191
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
192
|
+
@conn.configure({:verify_ssl => 'F'})
|
193
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal false
|
194
|
+
end
|
195
|
+
|
196
|
+
it "should interpret Y|N settings for verifying SSL" do
|
197
|
+
@conn.configure({:verify_ssl => 'Y'})
|
198
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal true
|
199
|
+
@conn.configure({:verify_ssl => 'N'})
|
200
|
+
@conn.instance_variable_get(:@verify_ssl).must_equal false
|
201
|
+
end
|
202
|
+
|
137
203
|
end
|
138
204
|
|
139
205
|
describe '#configure_with' do
|
@@ -243,7 +309,7 @@ with(:body => {"j_password"=> connection.instance_variable_get(:@password), "j_u
|
|
243
309
|
before do
|
244
310
|
setup_configured_connection
|
245
311
|
stub_connection_round_trip(@conn)
|
246
|
-
@stubbed_get = stub_request(:get, "#{@base_url}/go").to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)})
|
312
|
+
@stubbed_get = stub_request(:get, "#{@base_url}/go").to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)}.merge(WEBMOCK_HEADERS))
|
247
313
|
end
|
248
314
|
|
249
315
|
it "should not open connection" do
|
@@ -266,7 +332,7 @@ with(:body => {"j_password"=> connection.instance_variable_get(:@password), "j_u
|
|
266
332
|
before do
|
267
333
|
setup_configured_connection
|
268
334
|
stub_connection_round_trip(@conn)
|
269
|
-
@stubbed_get = stub_request(:get, "#{@base_url}/go").to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)})
|
335
|
+
@stubbed_get = stub_request(:get, "#{@base_url}/go").to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)}.merge(WEBMOCK_HEADERS))
|
270
336
|
end
|
271
337
|
|
272
338
|
it "should open connection" do
|
@@ -289,7 +355,7 @@ with(:body => {"j_password"=> connection.instance_variable_get(:@password), "j_u
|
|
289
355
|
before do
|
290
356
|
setup_configured_connection
|
291
357
|
stub_connection_round_trip(@conn)
|
292
|
-
@stubbed_get = stub_request(:delete, "#{@base_url}/go").to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)})
|
358
|
+
@stubbed_get = stub_request(:delete, "#{@base_url}/go").to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)}.merge(WEBMOCK_HEADERS))
|
293
359
|
end
|
294
360
|
|
295
361
|
it "should not open connection" do
|
@@ -312,7 +378,7 @@ with(:body => {"j_password"=> connection.instance_variable_get(:@password), "j_u
|
|
312
378
|
before do
|
313
379
|
setup_configured_connection
|
314
380
|
stub_connection_round_trip(@conn)
|
315
|
-
@stubbed_get = stub_request(:delete, "#{@base_url}/go").to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)})
|
381
|
+
@stubbed_get = stub_request(:delete, "#{@base_url}/go").to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)}.merge(WEBMOCK_HEADERS))
|
316
382
|
end
|
317
383
|
|
318
384
|
it "should open connection" do
|
@@ -336,7 +402,7 @@ with(:body => {"j_password"=> connection.instance_variable_get(:@password), "j_u
|
|
336
402
|
setup_configured_connection
|
337
403
|
stub_connection_round_trip(@conn)
|
338
404
|
@post_params = {'a' => 'b'}
|
339
|
-
@stubbed_post = stub_request(:post, "#{@base_url}/go").with(:body => @post_params).to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)})
|
405
|
+
@stubbed_post = stub_request(:post, "#{@base_url}/go").with(:body => @post_params).to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)}.merge(WEBMOCK_HEADERS))
|
340
406
|
end
|
341
407
|
|
342
408
|
it "should not open connection" do
|
@@ -360,7 +426,7 @@ with(:body => {"j_password"=> connection.instance_variable_get(:@password), "j_u
|
|
360
426
|
setup_configured_connection
|
361
427
|
stub_connection_round_trip(@conn)
|
362
428
|
@post_params = {'a' => 'b'}
|
363
|
-
@stubbed_post = stub_request(:post, "#{@base_url}/go").with(:body => @post_params).to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)})
|
429
|
+
@stubbed_post = stub_request(:post, "#{@base_url}/go").with(:body => @post_params).to_return(:status => 200, :headers => {'Cookie' => to_cookie(@cookies)}.merge(WEBMOCK_HEADERS))
|
364
430
|
end
|
365
431
|
|
366
432
|
it "should open connection" do
|
data/test/test_helper.rb
CHANGED
@@ -8,4 +8,6 @@ require 'webmock/minitest'
|
|
8
8
|
|
9
9
|
require File.expand_path('../../lib/nolij_web.rb', __FILE__)
|
10
10
|
|
11
|
-
WebMock.disable_net_connect!
|
11
|
+
WebMock.disable_net_connect!(:allow_localhost => true)
|
12
|
+
|
13
|
+
WEBMOCK_HEADERS = {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'User-Agent'=>'Ruby'}
|
metadata
CHANGED
@@ -1,110 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nolij_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Shannon Henderson
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-06-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rest-client
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.6'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.6'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: nokogiri
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '1.6'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '1.6'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: minitest
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 5.0.0
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 5.0.0
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: bundler
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '1.3'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '1.3'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rake
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: webmock
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- - ~>
|
87
|
+
- - "~>"
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '1.13'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- - ~>
|
94
|
+
- - "~>"
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '1.13'
|
110
97
|
description: A Ruby wrapper for the Nolij Web API
|
@@ -116,7 +103,7 @@ extra_rdoc_files:
|
|
116
103
|
- README.rdoc
|
117
104
|
- LICENSE.txt
|
118
105
|
files:
|
119
|
-
- .gitignore
|
106
|
+
- ".gitignore"
|
120
107
|
- Gemfile
|
121
108
|
- LICENSE.txt
|
122
109
|
- README.rdoc
|
@@ -146,31 +133,30 @@ files:
|
|
146
133
|
homepage: https://github.com/reed-college/nolij_web/
|
147
134
|
licenses:
|
148
135
|
- MIT
|
136
|
+
metadata: {}
|
149
137
|
post_install_message:
|
150
138
|
rdoc_options:
|
151
|
-
- --line-numbers
|
152
|
-
- --inline-source
|
153
|
-
- --main
|
139
|
+
- "--line-numbers"
|
140
|
+
- "--inline-source"
|
141
|
+
- "--main"
|
154
142
|
- README.rdoc
|
155
143
|
require_paths:
|
156
144
|
- lib
|
157
145
|
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
-
none: false
|
159
146
|
requirements:
|
160
|
-
- -
|
147
|
+
- - ">="
|
161
148
|
- !ruby/object:Gem::Version
|
162
149
|
version: 1.9.3
|
163
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
|
-
none: false
|
165
151
|
requirements:
|
166
|
-
- -
|
152
|
+
- - ">="
|
167
153
|
- !ruby/object:Gem::Version
|
168
154
|
version: '0'
|
169
155
|
requirements: []
|
170
156
|
rubyforge_project:
|
171
|
-
rubygems_version:
|
157
|
+
rubygems_version: 2.2.2
|
172
158
|
signing_key:
|
173
|
-
specification_version:
|
159
|
+
specification_version: 4
|
174
160
|
summary: Interact with Nolijweb's REST API
|
175
161
|
test_files:
|
176
162
|
- test/nolij_web/attribute_missing_error_test.rb
|