overriaktion 0.0.1.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/.rbenv-version +1 -0
- data/.rspec +2 -0
- data/.travis.yml +8 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +91 -0
- data/Guardfile +12 -0
- data/LICENSE +21 -0
- data/README.rdoc +19 -0
- data/Rakefile +35 -0
- data/bin/overriaktion +38 -0
- data/features/cli.feature +41 -0
- data/features/client.feature +29 -0
- data/features/step_definitions/overriaktion_steps.rb +41 -0
- data/features/support/env.rb +12 -0
- data/features/support/vcr.rb +3 -0
- data/fixtures/vcr_cassettes/api-v2.yml +44 -0
- data/fixtures/vcr_cassettes/api.yml +44 -0
- data/fixtures/vcr_cassettes/overriak.yml +228 -0
- data/lib/overriaktion.rb +44 -0
- data/lib/overriaktion/cli.rb +50 -0
- data/lib/overriaktion/client.rb +47 -0
- data/lib/overriaktion/configuration.rb +18 -0
- data/lib/overriaktion/end_points.rb +5 -0
- data/lib/overriaktion/model.rb +19 -0
- data/lib/overriaktion/request.rb +29 -0
- data/lib/overriaktion/riak_cluster.rb +15 -0
- data/lib/overriaktion/riak_node.rb +15 -0
- data/lib/overriaktion/sample.rb +16 -0
- data/lib/overriaktion/vcr.rb +11 -0
- data/lib/overriaktion/version.rb +3 -0
- data/overriaktion.gemspec +38 -0
- data/spec/lib/overriaktion/client_spec.rb +43 -0
- data/spec/lib/overriaktion/model_spec.rb +19 -0
- data/spec/lib/overriaktion/riak_cluster_spec.rb +29 -0
- data/spec/lib/overriaktion/riak_node_spec.rb +42 -0
- data/spec/lib/overriaktion/sample_spec.rb +28 -0
- data/spec/lib/overriaktion_spec.rb +64 -0
- data/spec/spec_helper.rb +10 -0
- metadata +220 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
module Overriaktion
|
2
|
+
class Sample < Model
|
3
|
+
def perform
|
4
|
+
@response = Net::HTTP.get("#{ip_address}", "/stats", port)
|
5
|
+
!@response.nil?
|
6
|
+
end
|
7
|
+
|
8
|
+
def save
|
9
|
+
@client.create_sample(id, @response)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.perform(options = {})
|
13
|
+
self.new(options).perform
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'vcr'
|
4
|
+
|
5
|
+
if ENV['RAILS_ENV'] == 'test'
|
6
|
+
VCR.config do |c|
|
7
|
+
c.stub_with :webmock
|
8
|
+
c.cassette_library_dir = "#{File.expand_path('../../..', __FILE__)}/fixtures/vcr_cassettes"
|
9
|
+
c.default_cassette_options = { :record => :new_episodes }
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
$:.push File.expand_path("../lib", __FILE__)
|
4
|
+
|
5
|
+
require "overriaktion/version"
|
6
|
+
|
7
|
+
Gem::Specification.new do |gem|
|
8
|
+
gem.name = "overriaktion"
|
9
|
+
gem.version = Overriaktion::VERSION
|
10
|
+
gem.authors = ["Christopher Meiklejohn"]
|
11
|
+
gem.email = ["christopher.meiklejohn@gmail.com"]
|
12
|
+
gem.homepage = "https://github.com/cmeiklejohn/overriaktion"
|
13
|
+
gem.summary = %q{Client gem for the Overriak service.}
|
14
|
+
gem.description = %q{Client gem for the Overriak service.}
|
15
|
+
|
16
|
+
gem.rubyforge_project = "overriaktion"
|
17
|
+
|
18
|
+
gem.files = `git ls-files`.split("\n")
|
19
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
+
gem.require_paths = ["lib"]
|
22
|
+
|
23
|
+
gem.add_dependency('vcr')
|
24
|
+
gem.add_dependency('webmock')
|
25
|
+
gem.add_dependency('httparty')
|
26
|
+
gem.add_dependency('methadone')
|
27
|
+
|
28
|
+
gem.add_development_dependency('relish')
|
29
|
+
|
30
|
+
gem.add_development_dependency('rdoc')
|
31
|
+
gem.add_development_dependency('aruba')
|
32
|
+
gem.add_development_dependency('rspec')
|
33
|
+
gem.add_development_dependency('rake','~> 0.9.2')
|
34
|
+
|
35
|
+
gem.add_development_dependency('guard')
|
36
|
+
gem.add_development_dependency('guard-rspec')
|
37
|
+
gem.add_development_dependency('guard-cucumber')
|
38
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Overriaktion
|
4
|
+
describe Client do
|
5
|
+
subject { Client.instance }
|
6
|
+
|
7
|
+
it "retrieves a list of riak clusters" do
|
8
|
+
VCR.use_cassette('overriak') do
|
9
|
+
riak_clusters = subject.riak_clusters
|
10
|
+
riak_clusters.length.should == 1
|
11
|
+
riak_clusters.each { |riak_cluster| riak_cluster.should be_a_kind_of(RiakCluster) }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it "retrieves information about one riak cluster" do
|
16
|
+
VCR.use_cassette('overriak') do
|
17
|
+
riak_cluster = subject.riak_cluster(1)
|
18
|
+
riak_cluster.should be_a_kind_of(RiakCluster)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it "retrieves information about a clusters riak nodes" do
|
23
|
+
VCR.use_cassette('overriak') do
|
24
|
+
riak_nodes = subject.riak_nodes(1)
|
25
|
+
riak_nodes.length.should == 1
|
26
|
+
riak_nodes.each { |riak_node| riak_node.should be_a_kind_of(RiakNode) }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
it "retrieves information about a clusters single riak node" do
|
31
|
+
VCR.use_cassette('overriak') do
|
32
|
+
riak_node = subject.riak_node(1, 1)
|
33
|
+
riak_node.should be_a_kind_of(RiakNode)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it "stores a riak node sample" do
|
38
|
+
VCR.use_cassette('overriak') do
|
39
|
+
subject.create_sample(1, "response")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Overriaktion
|
4
|
+
describe Model do
|
5
|
+
subject { model }
|
6
|
+
|
7
|
+
let(:model) { Model.new }
|
8
|
+
|
9
|
+
it 'grabs an instance of the client' do
|
10
|
+
subject.send(:client).should be_an_instance_of(Client)
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'with an attribute' do
|
14
|
+
let(:model) { Model.new(:id => 1) }
|
15
|
+
|
16
|
+
specify { subject.id.should == 1 }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Overriaktion
|
4
|
+
describe RiakCluster do
|
5
|
+
subject { riak_cluster }
|
6
|
+
|
7
|
+
context 'with riak nodes' do
|
8
|
+
let(:riak_cluster) { RiakCluster.new(:id => 1) }
|
9
|
+
|
10
|
+
it "returns it's riak nodes" do
|
11
|
+
Client.instance.should_receive(:riak_nodes)
|
12
|
+
riak_nodes = subject.riak_nodes
|
13
|
+
end
|
14
|
+
|
15
|
+
it "returns one riak node in it's cluster" do
|
16
|
+
Client.instance.should_receive(:riak_node)
|
17
|
+
riak_node = subject.riak_node(1)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'with a name' do
|
22
|
+
let(:riak_cluster) { RiakCluster.new(:name => 'Name') }
|
23
|
+
|
24
|
+
it "returns it's name" do
|
25
|
+
subject.to_s.should == "Name"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Overriaktion
|
4
|
+
describe RiakNode do
|
5
|
+
subject { riak_node }
|
6
|
+
|
7
|
+
context 'in a riak cluster' do
|
8
|
+
let(:riak_node) { RiakNode.new(:riak_cluster_id => 1) }
|
9
|
+
|
10
|
+
it "returns it's riak cluster" do
|
11
|
+
Client.instance.should_receive(:riak_cluster)
|
12
|
+
riak_cluster = subject.riak_cluster
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with a full uri' do
|
17
|
+
let(:riak_node) do
|
18
|
+
RiakNode.new(:username => 'root',
|
19
|
+
:ip_address => '127.0.0.1',
|
20
|
+
:port => '8098')
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns it's uri" do
|
24
|
+
subject.to_s.should == "root@127.0.0.1:8098"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'with a full uri and id' do
|
29
|
+
let(:riak_node) do
|
30
|
+
RiakNode.new(:username => 'root',
|
31
|
+
:ip_address => '127.0.0.1',
|
32
|
+
:port => '8098',
|
33
|
+
:id => 1)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'can be sampled' do
|
37
|
+
Sample.should_receive(:perform)
|
38
|
+
subject.sample
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Overriaktion
|
4
|
+
describe Sample do
|
5
|
+
subject { sample }
|
6
|
+
|
7
|
+
context 'with a valid configuration' do
|
8
|
+
let(:sample) do
|
9
|
+
Sample.new(:id => "1", :ip_address => '127.0.0.1', :port => "8098")
|
10
|
+
end
|
11
|
+
|
12
|
+
specify { subject.id.should == '1' }
|
13
|
+
specify { subject.port.should == '8098' }
|
14
|
+
specify { subject.ip_address.should == '127.0.0.1' }
|
15
|
+
|
16
|
+
it 'is able to be sampled' do
|
17
|
+
VCR.use_cassette('overriak') do
|
18
|
+
subject.perform.should be_true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'is able to be saved' do
|
23
|
+
Client.instance.should_receive(:create_sample)
|
24
|
+
subject.save
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Overriaktion
|
4
|
+
describe self do
|
5
|
+
it 'returns the client when instantiated' do
|
6
|
+
subject.new.should be_a_kind_of(Client)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'returns the same client when instantiated twice' do
|
10
|
+
subject.new.should == subject.new
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'once configured via the instantiation call' do
|
14
|
+
subject do
|
15
|
+
Overriaktion.new(:api_key => '2', :api_host => 'api-v2.overriak.com')
|
16
|
+
end
|
17
|
+
|
18
|
+
after do
|
19
|
+
subject.configure do |config|
|
20
|
+
config.api_key = nil
|
21
|
+
config.api_host = nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should retain that configuration' do
|
26
|
+
subject.configuration.api_key.should == '2'
|
27
|
+
subject.configuration.api_host.should == 'api-v2.overriak.com'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should honor that configuration when making an API request" do
|
31
|
+
VCR.use_cassette('api-v2') do
|
32
|
+
riak_clusters = subject.riak_clusters
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'once configured' do
|
38
|
+
before do
|
39
|
+
subject.configure do |config|
|
40
|
+
config.api_key = '1'
|
41
|
+
config.api_host = 'api.overriak.com'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
after do
|
46
|
+
subject.configure do |config|
|
47
|
+
config.api_key = nil
|
48
|
+
config.api_host = nil
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should retain that configuration' do
|
53
|
+
subject.configuration.api_key.should == '1'
|
54
|
+
subject.configuration.api_host.should == 'api.overriak.com'
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should honor that configuration when making an API request" do
|
58
|
+
VCR.use_cassette('api') do
|
59
|
+
riak_clusters = subject.riak_clusters
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,220 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: overriaktion
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.beta1
|
5
|
+
prerelease: 6
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Christopher Meiklejohn
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-02-01 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: vcr
|
16
|
+
requirement: &13738340 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *13738340
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: webmock
|
27
|
+
requirement: &13737300 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *13737300
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: httparty
|
38
|
+
requirement: &13736160 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *13736160
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: methadone
|
49
|
+
requirement: &13750900 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *13750900
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: relish
|
60
|
+
requirement: &13749220 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *13749220
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rdoc
|
71
|
+
requirement: &13748260 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *13748260
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: aruba
|
82
|
+
requirement: &13747000 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *13747000
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: rspec
|
93
|
+
requirement: &13744880 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *13744880
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: rake
|
104
|
+
requirement: &13758560 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.9.2
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *13758560
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: guard
|
115
|
+
requirement: &13757540 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: *13757540
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: guard-rspec
|
126
|
+
requirement: &13755780 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *13755780
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: guard-cucumber
|
137
|
+
requirement: &13754960 !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
type: :development
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: *13754960
|
146
|
+
description: Client gem for the Overriak service.
|
147
|
+
email:
|
148
|
+
- christopher.meiklejohn@gmail.com
|
149
|
+
executables:
|
150
|
+
- overriaktion
|
151
|
+
extensions: []
|
152
|
+
extra_rdoc_files: []
|
153
|
+
files:
|
154
|
+
- .gitignore
|
155
|
+
- .rbenv-version
|
156
|
+
- .rspec
|
157
|
+
- .travis.yml
|
158
|
+
- Gemfile
|
159
|
+
- Gemfile.lock
|
160
|
+
- Guardfile
|
161
|
+
- LICENSE
|
162
|
+
- README.rdoc
|
163
|
+
- Rakefile
|
164
|
+
- bin/overriaktion
|
165
|
+
- features/cli.feature
|
166
|
+
- features/client.feature
|
167
|
+
- features/step_definitions/overriaktion_steps.rb
|
168
|
+
- features/support/env.rb
|
169
|
+
- features/support/vcr.rb
|
170
|
+
- fixtures/vcr_cassettes/api-v2.yml
|
171
|
+
- fixtures/vcr_cassettes/api.yml
|
172
|
+
- fixtures/vcr_cassettes/overriak.yml
|
173
|
+
- lib/overriaktion.rb
|
174
|
+
- lib/overriaktion/cli.rb
|
175
|
+
- lib/overriaktion/client.rb
|
176
|
+
- lib/overriaktion/configuration.rb
|
177
|
+
- lib/overriaktion/end_points.rb
|
178
|
+
- lib/overriaktion/model.rb
|
179
|
+
- lib/overriaktion/request.rb
|
180
|
+
- lib/overriaktion/riak_cluster.rb
|
181
|
+
- lib/overriaktion/riak_node.rb
|
182
|
+
- lib/overriaktion/sample.rb
|
183
|
+
- lib/overriaktion/vcr.rb
|
184
|
+
- lib/overriaktion/version.rb
|
185
|
+
- overriaktion.gemspec
|
186
|
+
- spec/lib/overriaktion/client_spec.rb
|
187
|
+
- spec/lib/overriaktion/model_spec.rb
|
188
|
+
- spec/lib/overriaktion/riak_cluster_spec.rb
|
189
|
+
- spec/lib/overriaktion/riak_node_spec.rb
|
190
|
+
- spec/lib/overriaktion/sample_spec.rb
|
191
|
+
- spec/lib/overriaktion_spec.rb
|
192
|
+
- spec/spec_helper.rb
|
193
|
+
homepage: https://github.com/cmeiklejohn/overriaktion
|
194
|
+
licenses: []
|
195
|
+
post_install_message:
|
196
|
+
rdoc_options: []
|
197
|
+
require_paths:
|
198
|
+
- lib
|
199
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
200
|
+
none: false
|
201
|
+
requirements:
|
202
|
+
- - ! '>='
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
segments:
|
206
|
+
- 0
|
207
|
+
hash: -4017166538437899048
|
208
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
210
|
+
requirements:
|
211
|
+
- - ! '>'
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: 1.3.1
|
214
|
+
requirements: []
|
215
|
+
rubyforge_project: overriaktion
|
216
|
+
rubygems_version: 1.8.11
|
217
|
+
signing_key:
|
218
|
+
specification_version: 3
|
219
|
+
summary: Client gem for the Overriak service.
|
220
|
+
test_files: []
|