evostream 0.0.2 → 0.0.3
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 +4 -4
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/evostream.gemspec +1 -0
- data/lib/evostream/client.rb +14 -5
- data/lib/evostream/version.rb +1 -1
- data/spec/client_spec.rb +37 -11
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ebca9c1de8b04b344b8121a4cedf391a1862e277
|
4
|
+
data.tar.gz: 3cac40b9818ea7285d8f738dae1bb53449dcfc31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e2f8b84d2dd842b0ddc44c8c8c14d331d4aabc848dd58c17dedd053b7e4eecb38a599b93a0afa46c381dc0e426b1922dffb98d6af70046608b9545f430961a3
|
7
|
+
data.tar.gz: 878b924abbf7ede2608927a414ee649df4bbd9a538a86268ed7bbb0e1e810d28fca3ea7b0a05fe0183c7ec8c3e084dd4a43ad9cdee413c9ac6355768c9d64631
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
evostream
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0.0-p247
|
data/evostream.gemspec
CHANGED
data/lib/evostream/client.rb
CHANGED
@@ -20,18 +20,22 @@ module Evostream
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
private
|
23
24
|
def method_missing(method, *args)
|
24
25
|
params = !args.empty? ? args.first : {}
|
25
26
|
response = api_call(method, params)
|
26
|
-
|
27
|
-
|
28
|
-
json['
|
27
|
+
if response.code.to_i == 200
|
28
|
+
json = parse(response.body)
|
29
|
+
if json['status'] == 'SUCCESS'
|
30
|
+
json['data']
|
31
|
+
else
|
32
|
+
super
|
33
|
+
end
|
29
34
|
else
|
30
|
-
|
35
|
+
raise response.body
|
31
36
|
end
|
32
37
|
end
|
33
38
|
|
34
|
-
private
|
35
39
|
def api_call(method, params)
|
36
40
|
url = URI.parse(service_url(method, params))
|
37
41
|
request = Net::HTTP::Get.new(url.to_s)
|
@@ -58,5 +62,10 @@ module Evostream
|
|
58
62
|
Base64.encode64(params.map {|k, v| "#{k}=#{v}" }.join(' ')).chomp
|
59
63
|
end
|
60
64
|
|
65
|
+
def parse(text)
|
66
|
+
JSON.parse(text)
|
67
|
+
rescue JSON::ParserError => ex
|
68
|
+
raise "Invalid response: #{ex.message}"
|
69
|
+
end
|
61
70
|
end # Client
|
62
71
|
end
|
data/lib/evostream/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -6,28 +6,54 @@ describe Evostream::Client do
|
|
6
6
|
Evostream::Client.new(:host => 'somehost', :path_prefix => '/some_path')
|
7
7
|
}
|
8
8
|
|
9
|
-
it "should
|
9
|
+
it "should handle a SUCCESS response with null data" do
|
10
10
|
stub_request(:get, "http://somehost:80/some_path/liststreams").
|
11
|
-
to_return(:body
|
11
|
+
to_return(status: 200, body: '{"data":null,"description":"Available streams","status":"SUCCESS"}')
|
12
12
|
subject.liststreams.should be_nil
|
13
13
|
end
|
14
14
|
|
15
|
-
it "should
|
15
|
+
it "should handle a SUCCESS response with data" do
|
16
16
|
liststreams = '{"data":[{"appName": "evostreamms"}],"description":"Available streams","status":"SUCCESS"}'
|
17
17
|
stub_request(:get, "http://somehost:80/some_path/liststreams").
|
18
|
-
to_return(:body
|
18
|
+
to_return(status: 200, body: liststreams)
|
19
19
|
subject.liststreams.should == JSON.parse(liststreams)['data']
|
20
20
|
end
|
21
21
|
|
22
|
-
it "should
|
22
|
+
it "should handle a FAIL response to a non existant service" do
|
23
|
+
stub_request(:get, "http://somehost:80/some_path/non_existant_service").
|
24
|
+
to_return(status: 200, body: '{"data":null,"description":"command non_existant_service not known. Type help for list of commands","status":"FAIL"}')
|
25
|
+
expect { subject.non_existant_service }.to raise_error(NoMethodError)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should rescue from an unexpected response" do
|
29
|
+
stub_request(:get, "http://somehost:80/some_path/liststreams").
|
30
|
+
to_return(status: 200, body: '<html><head><title>It works!</title></head><body>It works!</body></html>')
|
31
|
+
expect { subject.liststreams }.to raise_error(/^Invalid response:/)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should handle a 500 response" do
|
23
35
|
stub_request(:get, "http://somehost:80/some_path/liststreams").
|
24
|
-
to_return(:
|
25
|
-
expect { subject.
|
36
|
+
to_return(status: 500, body: 'Internal server error')
|
37
|
+
expect { subject.liststreams }.to raise_error('Internal server error')
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should handle a 404 response" do
|
41
|
+
stub_request(:get, "http://somehost:80/some_path/liststreams").
|
42
|
+
to_return(status: 404, body: 'Not found')
|
43
|
+
expect { subject.liststreams }.to raise_error('Not found')
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should encode params as symbols with base64" do
|
47
|
+
stub_request(:get, /.*some_service.*/).
|
48
|
+
to_return(status: 200, body: '{"data":null,"description":"","status":"SUCCESS"}')
|
49
|
+
subject.some_service(:first_param => 'xxx', :second_param => 'xxx')
|
50
|
+
WebMock.should have_requested(:get, "http://somehost:80/some_path/some_service?params=Zmlyc3RfcGFyYW09eHh4IHNlY29uZF9wYXJhbT14eHg=")
|
26
51
|
end
|
27
52
|
|
28
|
-
it "should encode params with base64" do
|
29
|
-
stub_request(:get,
|
30
|
-
to_return(:body
|
31
|
-
subject.some_service(
|
53
|
+
it "should encode params as strings with base64" do
|
54
|
+
stub_request(:get, /.*some_service.*/).
|
55
|
+
to_return(status: 200, body: '{"data":null,"description":"","status":"SUCCESS"}')
|
56
|
+
subject.some_service('first_param' => 'xxx', 'second_param' => 'xxx')
|
57
|
+
WebMock.should have_requested(:get, "http://somehost:80/some_path/some_service?params=Zmlyc3RfcGFyYW09eHh4IHNlY29uZF9wYXJhbT14eHg=")
|
32
58
|
end
|
33
59
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evostream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lucas Mundim
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: debugger
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description: Ruby wrapper for the Evostream API
|
70
84
|
email:
|
71
85
|
- lucas.mundim@corp.globo.com
|
@@ -75,6 +89,8 @@ extra_rdoc_files: []
|
|
75
89
|
files:
|
76
90
|
- .gitignore
|
77
91
|
- .rspec
|
92
|
+
- .ruby-gemset
|
93
|
+
- .ruby-version
|
78
94
|
- .travis.yml
|
79
95
|
- Gemfile
|
80
96
|
- LICENSE.txt
|