opencpu 0.9.2 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +5 -0
- data/lib/opencpu/client.rb +17 -3
- data/lib/opencpu/errors.rb +9 -0
- data/lib/opencpu/version.rb +2 -2
- data/spec/fixtures/vcr_cassettes/bad_request.yml +56 -0
- data/spec/lib/opencpu/client_spec.rb +29 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5070269fee0cea90489369a6c10b7df8f9a4d946
|
4
|
+
data.tar.gz: 2f4c0996615c1febdf2f69af2f3a3e88fb3e0d30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9e5ef651e28801b06f0df1aaf4a55c716425f67c7f850915a3bbb4f98621f72a70c22af851ca0cec2c1e5fe95595a485420b22879aa0d97178e4c92a66fc06c
|
7
|
+
data.tar.gz: a15e61815b1e2803704c77768359e9b3376575c321615bc983136dd85b44c7e76e163b26bb0adc97207a31a1a5ab91b472d97e9f659f7927b645db403247c43d
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/lib/opencpu/client.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
require 'opencpu/errors'
|
2
|
+
|
1
3
|
module OpenCPU
|
2
4
|
class Client
|
5
|
+
include Errors
|
3
6
|
include HTTMultiParty
|
4
7
|
|
5
8
|
def initialize
|
@@ -64,10 +67,21 @@ module OpenCPU
|
|
64
67
|
case response.code
|
65
68
|
when 200..201
|
66
69
|
return yield(response)
|
67
|
-
when 400
|
68
|
-
fail '400: Bad Request\n' + response.body
|
69
70
|
else
|
70
|
-
fail "#{response.code}:\n #{response.body}"
|
71
|
+
fail error_class_for(response.code), "#{response.code}:\n #{response.body}"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def error_class_for(response_code)
|
76
|
+
case response_code
|
77
|
+
when 403
|
78
|
+
AccessDenied
|
79
|
+
when 400..499
|
80
|
+
BadRequest
|
81
|
+
when 500..599
|
82
|
+
InternalServerError
|
83
|
+
else
|
84
|
+
UnknownError
|
71
85
|
end
|
72
86
|
end
|
73
87
|
|
data/lib/opencpu/version.rb
CHANGED
@@ -0,0 +1,56 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://public.opencpu.org/ocpu/library/base/R/identity/json
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: '{"some":"data"}'
|
9
|
+
headers:
|
10
|
+
Content-Type:
|
11
|
+
- application/json
|
12
|
+
response:
|
13
|
+
status:
|
14
|
+
code: 400
|
15
|
+
message: Bad Request
|
16
|
+
headers:
|
17
|
+
Server:
|
18
|
+
- nginx/1.10.0 (Ubuntu)
|
19
|
+
Date:
|
20
|
+
- Thu, 30 Jun 2016 10:16:58 GMT
|
21
|
+
Content-Type:
|
22
|
+
- text/plain; charset=utf-8
|
23
|
+
Transfer-Encoding:
|
24
|
+
- chunked
|
25
|
+
Connection:
|
26
|
+
- keep-alive
|
27
|
+
Access-Control-Allow-Origin:
|
28
|
+
- "*"
|
29
|
+
Access-Control-Expose-Headers:
|
30
|
+
- Location, X-ocpu-session, Content-Type, Cache-Control
|
31
|
+
Access-Control-Allow-Headers:
|
32
|
+
- Origin, Content-Type, Accept, Accept-Encoding, Cache-Control, Authorization
|
33
|
+
Access-Control-Allow-Credentials:
|
34
|
+
- 'true'
|
35
|
+
X-Ocpu-R:
|
36
|
+
- R version 3.3.1 (2016-06-21)
|
37
|
+
X-Ocpu-Locale:
|
38
|
+
- en_US.UTF-8
|
39
|
+
X-Ocpu-Time:
|
40
|
+
- 2016-06-30 06:16:58 EDT
|
41
|
+
X-Ocpu-Version:
|
42
|
+
- 1.6.3
|
43
|
+
X-Ocpu-Server:
|
44
|
+
- rApache
|
45
|
+
Vary:
|
46
|
+
- Accept-Encoding
|
47
|
+
body:
|
48
|
+
encoding: UTF-8
|
49
|
+
string: |
|
50
|
+
unused argument (some = "data")
|
51
|
+
|
52
|
+
In call:
|
53
|
+
identity(some = "data")
|
54
|
+
http_version:
|
55
|
+
recorded_at: Thu, 30 Jun 2016 10:16:58 GMT
|
56
|
+
recorded_with: VCR 2.9.3
|
@@ -21,6 +21,34 @@ describe OpenCPU::Client do
|
|
21
21
|
expect(described_class.new).to respond_to :prepare
|
22
22
|
end
|
23
23
|
|
24
|
+
describe '#process_query' do
|
25
|
+
let(:client) { described_class.new}
|
26
|
+
let(:url) { '/library/base/R/identity/json' }
|
27
|
+
let(:data) { { some: 'data' } }
|
28
|
+
let(:format) { :json }
|
29
|
+
let(:response_handler) { -> { nil } }
|
30
|
+
|
31
|
+
subject { client.send(:process_query, url, data, format) { |response| response_handler(response) } }
|
32
|
+
|
33
|
+
context 'test mode' do
|
34
|
+
it 'calls fake_response_for(url)' do
|
35
|
+
allow(OpenCPU).to receive(:test_mode?).and_return true
|
36
|
+
expect(client).to receive(:fake_response_for)
|
37
|
+
subject
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'no test mode' do
|
42
|
+
context 'HTTP failure' do
|
43
|
+
it 'returns the appropiate status code' do
|
44
|
+
VCR.use_cassette :bad_request do
|
45
|
+
expect { subject }.to raise_error OpenCPU::Errors::BadRequest
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
24
52
|
describe 'initializes' do
|
25
53
|
|
26
54
|
describe 'without configured attributes' do
|
@@ -167,7 +195,7 @@ describe OpenCPU::Client do
|
|
167
195
|
VCR.use_cassette :github_animation_flip_coin_error do
|
168
196
|
expect {
|
169
197
|
client.execute(:foo, :bar, {user: "baz", github_remote: true})
|
170
|
-
}.to raise_error
|
198
|
+
}.to raise_error OpenCPU::Errors::BadRequest, /400/
|
171
199
|
end
|
172
200
|
end
|
173
201
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opencpu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Malykh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06
|
11
|
+
date: 2016-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yajl-ruby
|
@@ -164,10 +164,12 @@ files:
|
|
164
164
|
- lib/opencpu/client.rb
|
165
165
|
- lib/opencpu/configuration.rb
|
166
166
|
- lib/opencpu/delayed_calculation.rb
|
167
|
+
- lib/opencpu/errors.rb
|
167
168
|
- lib/opencpu/version.rb
|
168
169
|
- opencpu.gemspec
|
169
170
|
- spec/fixtures/test.csv
|
170
171
|
- spec/fixtures/vcr_cassettes/animation_flip_coin.yml
|
172
|
+
- spec/fixtures/vcr_cassettes/bad_request.yml
|
171
173
|
- spec/fixtures/vcr_cassettes/description.yml
|
172
174
|
- spec/fixtures/vcr_cassettes/digest_hmac.yml
|
173
175
|
- spec/fixtures/vcr_cassettes/digest_hmac_no_parameters.yml
|
@@ -202,13 +204,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
204
|
version: '0'
|
203
205
|
requirements: []
|
204
206
|
rubyforge_project:
|
205
|
-
rubygems_version: 2.4.
|
207
|
+
rubygems_version: 2.4.5.1
|
206
208
|
signing_key:
|
207
209
|
specification_version: 4
|
208
210
|
summary: Wrapper around OpenCPU REST API
|
209
211
|
test_files:
|
210
212
|
- spec/fixtures/test.csv
|
211
213
|
- spec/fixtures/vcr_cassettes/animation_flip_coin.yml
|
214
|
+
- spec/fixtures/vcr_cassettes/bad_request.yml
|
212
215
|
- spec/fixtures/vcr_cassettes/description.yml
|
213
216
|
- spec/fixtures/vcr_cassettes/digest_hmac.yml
|
214
217
|
- spec/fixtures/vcr_cassettes/digest_hmac_no_parameters.yml
|
@@ -223,3 +226,4 @@ test_files:
|
|
223
226
|
- spec/lib/opencpu/delayed_calculation_spec.rb
|
224
227
|
- spec/lib/opencpu_spec.rb
|
225
228
|
- spec/spec_helper.rb
|
229
|
+
has_rdoc:
|