cubits 0.6.1 → 0.7.0
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/CHANGES.md +7 -0
- data/README.md +2 -0
- data/lib/cubits.rb +37 -7
- data/lib/cubits/version.rb +1 -1
- data/spec/lib/cubits_spec.rb +84 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f2978ac613f0cf68c3b4f7df8034d0899af48ee
|
4
|
+
data.tar.gz: dddd910c78caded6f60d9f9676ce7f8ff9038403
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f404caa09bcd22b99e09f32702a4ece7f7dc7764248c9549cd3649557dca2fdc98b719cb84dbb6fcb5dd8b0eead2cf4fbac03050b6366591721de58a28b66d8
|
7
|
+
data.tar.gz: 674bc505e2cb6614d7751d85558934c001b9621ea21304ffaaa29d383fbd51aa96753bfbffd1182a4acdb42d3c115ed741feca490c41273946ee0a03616c4d61
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 0.7.0
|
2
|
+
|
3
|
+
* Added support of concurrent connections. Use `Cubits.active_connection_key()`,
|
4
|
+
`Cubits.active_connection_key=()` and `Cubits.with_connection_key() { ... }`
|
5
|
+
to manipulate the connections.
|
6
|
+
* The last configured connection is being used by default now.
|
7
|
+
|
1
8
|
# 0.6.0
|
2
9
|
|
3
10
|
* Added Cubits::ResourceCollection, which implements Ruby [Enumerable](http://ruby-doc.org/core-2.2.1/Enumerable.html)
|
data/README.md
CHANGED
@@ -40,6 +40,8 @@ Cubits.configure(key: '***', secret: '***')
|
|
40
40
|
Cubits.available? # => true
|
41
41
|
```
|
42
42
|
|
43
|
+
If you configured multiple connections the last one will be used by default. You can get the current active connection key with `Cubits.active_connection_key` and switch between connections with `Cubits.active_connection_key=`. There is also a possibility to temporary switch the connection for a block: `Cubits.with_connection_key() { ... }`
|
44
|
+
|
43
45
|
## Invoices
|
44
46
|
|
45
47
|
Using the `cubits` Ruby client you can create and retrieve invoices.
|
data/lib/cubits.rb
CHANGED
@@ -33,16 +33,46 @@ module Cubits
|
|
33
33
|
#
|
34
34
|
# @param key [String] (optional) Cubits API key of the configured connection
|
35
35
|
#
|
36
|
-
# @return [Connection] Connection object matching the requested Cubits API key
|
37
|
-
#
|
36
|
+
# @return [Connection] Connection object matching the requested Cubits API key
|
37
|
+
# or Connection object matching Cubits.active_connection_key
|
38
38
|
#
|
39
|
-
def self.connection(key =
|
40
|
-
@connections
|
41
|
-
c = key ? @connections[key] : @connections.values.first
|
42
|
-
unless c
|
39
|
+
def self.connection(key = active_connection_key)
|
40
|
+
if @connections.nil? || @connections[key].nil?
|
43
41
|
fail ConnectionError, "Cubits connection is not configured for key #{key || '(default)'}"
|
44
42
|
end
|
45
|
-
|
43
|
+
@connections[key]
|
44
|
+
end
|
45
|
+
|
46
|
+
# Returns current Cubits connection key (Cubits API key)
|
47
|
+
#
|
48
|
+
# @return [String] current thread-local active connection key
|
49
|
+
# or the last configured connection key
|
50
|
+
#
|
51
|
+
def self.active_connection_key
|
52
|
+
Thread.current[:cubits_active_connection_key] || @connections&.keys&.last
|
53
|
+
end
|
54
|
+
|
55
|
+
# Sets current Cubits connection to given Cubits API key
|
56
|
+
#
|
57
|
+
# @param key [String] Cubits API key of the configured connection
|
58
|
+
#
|
59
|
+
def self.active_connection_key=(key)
|
60
|
+
if @connections.nil? || @connections[key].nil?
|
61
|
+
fail ConnectionError, "Cubits connection is not configured for key #{key}"
|
62
|
+
end
|
63
|
+
Thread.current[:cubits_active_connection_key] = key
|
64
|
+
end
|
65
|
+
|
66
|
+
# Sets current Cubits connection to given Cubits API key and yields given block
|
67
|
+
#
|
68
|
+
# @param key [String] Cubits API key of the configured connection
|
69
|
+
#
|
70
|
+
def self.with_connection_key(key)
|
71
|
+
connection_key_was = active_connection_key
|
72
|
+
self.active_connection_key = key
|
73
|
+
yield if block_given?
|
74
|
+
ensure
|
75
|
+
self.active_connection_key = connection_key_was
|
46
76
|
end
|
47
77
|
|
48
78
|
# Returns current Logger object
|
data/lib/cubits/version.rb
CHANGED
data/spec/lib/cubits_spec.rb
CHANGED
@@ -4,13 +4,22 @@ describe Cubits do
|
|
4
4
|
let(:key) { 'blablakey' }
|
5
5
|
let(:secret) { 'blablasecret' }
|
6
6
|
|
7
|
+
let(:another_key) { 'another_cubits_api_key' }
|
8
|
+
let(:another_secret) { 'another_cubits_api_secret' }
|
9
|
+
|
10
|
+
after { Thread.current[:cubits_active_connection_key] = nil }
|
11
|
+
|
7
12
|
context '.configure' do
|
8
13
|
it 'fails if key is missing' do
|
9
|
-
expect { Cubits.configure(secret: secret) }.to raise_error
|
14
|
+
expect { Cubits.configure(secret: secret) }.to raise_error(
|
15
|
+
ArgumentError, 'String is expected as :key'
|
16
|
+
)
|
10
17
|
end
|
11
18
|
|
12
19
|
it 'fails if secret is missing' do
|
13
|
-
expect { Cubits.configure(key: key) }.to raise_error
|
20
|
+
expect { Cubits.configure(key: key) }.to raise_error(
|
21
|
+
ArgumentError, 'String is expected as :secret'
|
22
|
+
)
|
14
23
|
end
|
15
24
|
|
16
25
|
it 'runs without errors if key and secret are present' do
|
@@ -22,13 +31,23 @@ describe Cubits do
|
|
22
31
|
subject { Cubits.connection }
|
23
32
|
|
24
33
|
it 'fails when connection is not configured' do
|
25
|
-
expect { subject }.to raise_error
|
34
|
+
expect { subject }.to raise_error(
|
35
|
+
Cubits::ConnectionError, 'Cubits connection is not configured for key (default)'
|
36
|
+
)
|
26
37
|
end
|
27
38
|
|
28
|
-
it 'returns Connection object when connection is configured' do
|
39
|
+
it 'returns Connection object when connection is configured', :aggregate_failures do
|
29
40
|
Cubits.configure(key: key, secret: secret)
|
30
41
|
expect { subject }.to_not raise_error
|
31
42
|
expect(subject).to be_a Cubits::Connection
|
43
|
+
expect(subject.instance_variable_get(:@key)).to eql(key)
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'returns Connection object by active connection key', :aggregate_failures do
|
47
|
+
Cubits.configure(key: another_key, secret: another_secret)
|
48
|
+
expect(Cubits).to receive(:active_connection_key).and_return(another_key)
|
49
|
+
expect(subject).to be_a Cubits::Connection
|
50
|
+
expect(subject.instance_variable_get(:@key)).to eql(another_key)
|
32
51
|
end
|
33
52
|
end # .connection
|
34
53
|
|
@@ -38,4 +57,65 @@ describe Cubits do
|
|
38
57
|
it { is_expected.to be_a Logger }
|
39
58
|
end # .logger
|
40
59
|
|
60
|
+
describe '.active_connection_key=' do
|
61
|
+
it 'does not allow to set the key when there are no configured connections' do
|
62
|
+
expect { Cubits.active_connection_key = '123' }.to raise_exception(
|
63
|
+
Cubits::ConnectionError, 'Cubits connection is not configured for key 123'
|
64
|
+
)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'does not allow to set the key of non-existent connection' do
|
68
|
+
Cubits.configure(key: key, secret: secret)
|
69
|
+
expect { Cubits.active_connection_key = '123' }.to raise_exception(
|
70
|
+
Cubits::ConnectionError, 'Cubits connection is not configured for key 123'
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'allows to set the key of the existing connection', :aggregate_failures do
|
75
|
+
Cubits.configure(key: key, secret: secret)
|
76
|
+
Cubits.configure(key: another_key, secret: another_secret)
|
77
|
+
expect { Cubits.active_connection_key = key }.to_not raise_exception
|
78
|
+
expect { Cubits.active_connection_key = another_key }.to_not raise_exception
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'sets cubits_active_connection_key thread variable' do
|
82
|
+
Cubits.configure(key: key, secret: secret)
|
83
|
+
Cubits.active_connection_key = key
|
84
|
+
expect(Thread.current[:cubits_active_connection_key]).to eql(key)
|
85
|
+
end
|
86
|
+
end # .active_connection_key=
|
87
|
+
|
88
|
+
describe '.active_connection_key' do
|
89
|
+
it 'returns thread-local connection key if exists' do
|
90
|
+
Cubits.configure(key: key, secret: secret)
|
91
|
+
Cubits.configure(key: another_key, secret: another_secret)
|
92
|
+
Cubits.active_connection_key = key
|
93
|
+
expect(Cubits.active_connection_key).to eql(key)
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'returns the last configured connection key otherwise' do
|
97
|
+
Cubits.configure(key: key, secret: secret)
|
98
|
+
Cubits.configure(key: another_key, secret: another_secret)
|
99
|
+
expect(Cubits.active_connection_key).to eql(another_key)
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'returns nil if there are no configured connections' do
|
103
|
+
expect(Cubits.active_connection_key).to be_nil
|
104
|
+
end
|
105
|
+
end # .active_connection_key
|
106
|
+
|
107
|
+
describe '.with_connection_key' do
|
108
|
+
it 'toggles active connection key' do
|
109
|
+
Cubits.configure(key: key, secret: secret)
|
110
|
+
Cubits.configure(key: another_key, secret: another_secret)
|
111
|
+
|
112
|
+
Cubits.active_connection_key = key
|
113
|
+
|
114
|
+
Cubits.with_connection_key(another_key) do
|
115
|
+
expect(Cubits.active_connection_key).to eql(another_key)
|
116
|
+
end
|
117
|
+
|
118
|
+
expect(Cubits.active_connection_key).to eql(key)
|
119
|
+
end
|
120
|
+
end # .with_connection_key
|
41
121
|
end # describe Cubits
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cubits
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Kukushkin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -155,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
155
|
version: '0'
|
156
156
|
requirements: []
|
157
157
|
rubyforge_project:
|
158
|
-
rubygems_version: 2.
|
158
|
+
rubygems_version: 2.6.11
|
159
159
|
signing_key:
|
160
160
|
specification_version: 4
|
161
161
|
summary: Ruby client for Cubits Merchant API
|