cieloz 0.0.4 → 0.0.7
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.
- data/lib/cieloz/builder.rb +17 -1
- data/lib/cieloz/configuracao.rb +5 -2
- data/lib/cieloz/requisicao.rb +5 -4
- data/lib/cieloz/version.rb +1 -1
- data/test/integration/integration_test.rb +12 -9
- data/test/unit/builder_test.rb +75 -2
- data/test/unit/configuracao_test.rb +9 -3
- data/test/unit/requisicao_autorizacao_tid_test.rb +1 -6
- data/test/unit/requisicao_cancelamento_test.rb +1 -6
- data/test/unit/requisicao_captura_test.rb +1 -6
- data/test/unit/requisicao_consulta_test.rb +1 -6
- data/test/unit/requisicao_test.rb +2 -14
- data/test/unit/requisicao_transacao_test.rb +2 -3
- data/test/unit/validations_test.rb +4 -13
- metadata +2 -2
data/lib/cieloz/builder.rb
CHANGED
@@ -54,9 +54,24 @@ module Cieloz
|
|
54
54
|
txn
|
55
55
|
end
|
56
56
|
|
57
|
+
def consulta source, opts={}
|
58
|
+
tid = attrs_from source, opts, :tid
|
59
|
+
RequisicaoConsulta.new tid: tid
|
60
|
+
end
|
61
|
+
|
62
|
+
def captura source, opts={}
|
63
|
+
tid, valor = attrs_from source, opts, :tid, :valor
|
64
|
+
RequisicaoCaptura.new tid: tid, valor: valor
|
65
|
+
end
|
66
|
+
|
67
|
+
def cancelamento source, opts={}
|
68
|
+
tid, valor = attrs_from source, opts, :tid, :valor
|
69
|
+
RequisicaoCancelamento.new tid: tid, valor: valor
|
70
|
+
end
|
71
|
+
|
57
72
|
private
|
58
73
|
def attrs_from source, opts, *keys
|
59
|
-
keys.map { |k|
|
74
|
+
attrs = keys.map { |k|
|
60
75
|
value_or_attr_name = opts[k] || k
|
61
76
|
if value_or_attr_name.is_a? Symbol
|
62
77
|
source.send value_or_attr_name if source.respond_to? value_or_attr_name
|
@@ -64,6 +79,7 @@ module Cieloz
|
|
64
79
|
value_or_attr_name
|
65
80
|
end
|
66
81
|
}
|
82
|
+
attrs.count == 1 ? attrs.first : attrs
|
67
83
|
end
|
68
84
|
end
|
69
85
|
|
data/lib/cieloz/configuracao.rb
CHANGED
@@ -18,11 +18,12 @@ module Cieloz
|
|
18
18
|
|
19
19
|
def self.reset!
|
20
20
|
cielo_mode!
|
21
|
-
@@credenciais = nil
|
22
21
|
end
|
23
22
|
|
24
23
|
def self.store_mode!
|
25
24
|
@@mode = :store
|
25
|
+
@@dados_ec = nil
|
26
|
+
@@credenciais = nil
|
26
27
|
end
|
27
28
|
|
28
29
|
def self.store_mode?
|
@@ -31,6 +32,8 @@ module Cieloz
|
|
31
32
|
|
32
33
|
def self.cielo_mode!
|
33
34
|
@@mode = :cielo
|
35
|
+
@@dados_ec = nil
|
36
|
+
@@credenciais = nil
|
34
37
|
end
|
35
38
|
|
36
39
|
def self.cielo_mode?
|
@@ -42,7 +45,7 @@ module Cieloz
|
|
42
45
|
return (@@dados_ec = Requisicao::DadosEc.new @@credenciais) if @@credenciais
|
43
46
|
|
44
47
|
mode = store_mode? ? :LOJA : :CIELO
|
45
|
-
Homologacao::Credenciais.const_get mode
|
48
|
+
@@dados_ec = Requisicao::DadosEc.new Homologacao::Credenciais.const_get mode
|
46
49
|
end
|
47
50
|
|
48
51
|
def self.host
|
data/lib/cieloz/requisicao.rb
CHANGED
@@ -6,9 +6,8 @@ class Cieloz::Requisicao
|
|
6
6
|
|
7
7
|
attr_accessor :id, :versao
|
8
8
|
attr_reader :dados_ec
|
9
|
-
hattr_writer :dados_ec
|
10
9
|
|
11
|
-
validates :
|
10
|
+
validates :dados_ec, presence: true
|
12
11
|
|
13
12
|
def attributes
|
14
13
|
{ dados_ec: @dados_ec }
|
@@ -36,10 +35,12 @@ class Cieloz::Requisicao
|
|
36
35
|
end
|
37
36
|
|
38
37
|
def submit
|
39
|
-
@
|
40
|
-
@versao = "1.2.0" if versao.blank?
|
38
|
+
@dados_ec = Cieloz::Configuracao.credenciais
|
41
39
|
|
42
40
|
if valid?
|
41
|
+
@id = SecureRandom.uuid if id.blank?
|
42
|
+
@versao = "1.2.0" if versao.blank?
|
43
|
+
|
43
44
|
http = Net::HTTP.new Cieloz::Configuracao.host, 443
|
44
45
|
http.use_ssl = true
|
45
46
|
http.open_timeout = 5 * 1000
|
data/lib/cieloz/version.rb
CHANGED
@@ -25,9 +25,10 @@ describe "Integration test" do
|
|
25
25
|
autorizacao.nao_capturar_automaticamente
|
26
26
|
|
27
27
|
txn = autorizacao.submit
|
28
|
-
|
28
|
+
|
29
|
+
assert_equal _::Transacao, txn.class, "#{txn.status}:\n#{txn.xml}"
|
29
30
|
assert_equal({}, autorizacao.errors.messages)
|
30
|
-
assert txn.criada
|
31
|
+
assert txn.criada?, "#{autorizacao.to_xml}\n#{txn.xml}"
|
31
32
|
|
32
33
|
assert_equal "302", post_credit_card_on_cielo_page(txn.url_autenticacao).code
|
33
34
|
|
@@ -36,26 +37,28 @@ describe "Integration test" do
|
|
36
37
|
consulta = Cieloz::RequisicaoConsulta.new params
|
37
38
|
cst = consulta.submit
|
38
39
|
assert_equal({}, consulta.errors.messages)
|
39
|
-
assert cst.autorizada
|
40
|
+
assert cst.autorizada?, "#{consulta.to_xml}\n#{cst.xml}"
|
40
41
|
|
41
42
|
captura = Cieloz::RequisicaoCaptura.new params
|
42
43
|
cap = captura.submit
|
43
44
|
assert_equal({}, captura.errors.messages)
|
44
|
-
assert cap.capturada
|
45
|
+
assert cap.capturada?, "#{captura.to_xml}\n#{cap.xml}"
|
45
46
|
|
46
47
|
cancelar = Cieloz::RequisicaoCancelamento.new params
|
47
48
|
cnc = cancelar.submit
|
48
49
|
assert_equal({}, cancelar.errors.messages)
|
49
|
-
assert cnc.cancelada
|
50
|
+
assert cnc.cancelada?, "#{cancelar.to_xml}\n#{cnc.xml}"
|
50
51
|
end
|
51
52
|
|
52
53
|
it "Captura Automaticamente, Consulta e Cancela" do
|
53
54
|
autorizacao.capturar_automaticamente
|
54
55
|
|
55
56
|
txn = autorizacao.submit
|
56
|
-
|
57
|
+
p autorizacao.to_xml
|
58
|
+
|
59
|
+
assert_equal _::Transacao, txn.class, "#{txn.status}:\n#{txn.xml}"
|
57
60
|
assert_equal({}, autorizacao.errors.messages)
|
58
|
-
assert txn.criada
|
61
|
+
assert txn.criada?, "#{autorizacao.to_xml}\n#{txn.xml}"
|
59
62
|
|
60
63
|
assert_equal "302", post_credit_card_on_cielo_page(txn.url_autenticacao).code
|
61
64
|
|
@@ -64,12 +67,12 @@ describe "Integration test" do
|
|
64
67
|
consulta = Cieloz::RequisicaoConsulta.new params
|
65
68
|
cst = consulta.submit
|
66
69
|
assert_equal({}, consulta.errors.messages)
|
67
|
-
assert cst.capturada
|
70
|
+
assert cst.capturada?, "#{consulta.to_xml}\n#{cst.xml}"
|
68
71
|
|
69
72
|
cancelar = Cieloz::RequisicaoCancelamento.new params
|
70
73
|
cnc = cancelar.submit
|
71
74
|
assert_equal({}, cancelar.errors.messages)
|
72
|
-
assert cnc.cancelada
|
75
|
+
assert cnc.cancelada?, "#{cancelar.to_xml}\n#{cnc.xml}"
|
73
76
|
end
|
74
77
|
|
75
78
|
def post_credit_card_on_cielo_page url_cielo, bandeira=:visa,
|
data/test/unit/builder_test.rb
CHANGED
@@ -7,6 +7,9 @@ describe Cieloz::Builder do
|
|
7
7
|
@source = Object.new
|
8
8
|
def @source.numero ; 123456 end
|
9
9
|
def @source.valor ; 7890 end
|
10
|
+
|
11
|
+
def @source.number ; 24680 end
|
12
|
+
def @source.value ; 13579 end
|
10
13
|
end
|
11
14
|
|
12
15
|
describe "Pedido building" do
|
@@ -35,8 +38,6 @@ describe Cieloz::Builder do
|
|
35
38
|
|
36
39
|
describe "opts given" do
|
37
40
|
before do
|
38
|
-
def @source.number ; 24680 end
|
39
|
-
def @source.value ; 13579 end
|
40
41
|
def @source.description ; "abc" end
|
41
42
|
def @source.time ; Time.at 0 end
|
42
43
|
def @source.currency ; 123 end
|
@@ -209,4 +210,76 @@ describe Cieloz::Builder do
|
|
209
210
|
}
|
210
211
|
end
|
211
212
|
end
|
213
|
+
|
214
|
+
describe "TID ops Building" do
|
215
|
+
before do
|
216
|
+
def @source.tid ; "A1B2C3" end
|
217
|
+
def @source.transaction_id ; "Z3Y2X1" end
|
218
|
+
end
|
219
|
+
|
220
|
+
describe "Consulta" do
|
221
|
+
it "from tid when missing opts" do
|
222
|
+
_.consulta(@source).tid.must_equal @source.tid
|
223
|
+
end
|
224
|
+
|
225
|
+
it "from mapped attributes" do
|
226
|
+
_.consulta(@source, tid: :transaction_id).tid.must_equal @source.transaction_id
|
227
|
+
end
|
228
|
+
|
229
|
+
it "from values" do
|
230
|
+
transaction_id = "ABC123"
|
231
|
+
_.consulta(@source, tid: transaction_id).tid.must_equal transaction_id
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
describe "Captura" do
|
236
|
+
it "is a RequisicaoCaptura" do
|
237
|
+
_.captura(@source).is_a? _::RequisicaoCaptura
|
238
|
+
end
|
239
|
+
|
240
|
+
it "from tid and valor when missing opts" do
|
241
|
+
captura = _.captura @source
|
242
|
+
captura.tid.must_equal @source.tid
|
243
|
+
captura.valor.must_equal @source.valor
|
244
|
+
end
|
245
|
+
|
246
|
+
it "from mapped attributes" do
|
247
|
+
captura = _.captura @source, tid: :transaction_id, valor: :value
|
248
|
+
captura.tid.must_equal @source.transaction_id
|
249
|
+
captura.valor.must_equal @source.value
|
250
|
+
end
|
251
|
+
|
252
|
+
it "from values" do
|
253
|
+
tid, valor = "ABC123", 34567
|
254
|
+
captura = _.captura @source, tid: tid, valor: valor
|
255
|
+
captura.tid.must_equal tid
|
256
|
+
captura.valor.must_equal valor
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
describe "Cancelamento" do
|
261
|
+
it "is a RequisicaoCaptura" do
|
262
|
+
_.cancelamento(@source).is_a? _::RequisicaoCancelamento
|
263
|
+
end
|
264
|
+
|
265
|
+
it "from tid and valor when missing opts" do
|
266
|
+
cancelamento = _.cancelamento @source
|
267
|
+
cancelamento.tid.must_equal @source.tid
|
268
|
+
cancelamento.valor.must_equal @source.valor
|
269
|
+
end
|
270
|
+
|
271
|
+
it "from mapped attributes" do
|
272
|
+
cancelamento = _.cancelamento @source, tid: :transaction_id, valor: :value
|
273
|
+
cancelamento.tid.must_equal @source.transaction_id
|
274
|
+
cancelamento.valor.must_equal @source.value
|
275
|
+
end
|
276
|
+
|
277
|
+
it "from values" do
|
278
|
+
tid, valor = "ABC123", 34567
|
279
|
+
cancelamento = _.cancelamento @source, tid: tid, valor: valor
|
280
|
+
cancelamento.tid.must_equal tid
|
281
|
+
cancelamento.valor.must_equal valor
|
282
|
+
end
|
283
|
+
end
|
284
|
+
end
|
212
285
|
end
|
@@ -43,18 +43,24 @@ describe Cieloz::Configuracao do
|
|
43
43
|
|
44
44
|
describe "credenciais" do
|
45
45
|
describe "not set" do
|
46
|
+
let(:loja_ec) { Cieloz::Requisicao::DadosEc.new Cieloz::Homologacao::Credenciais::LOJA }
|
47
|
+
let(:cielo_ec) { Cieloz::Requisicao::DadosEc.new Cieloz::Homologacao::Credenciais::CIELO }
|
48
|
+
|
46
49
|
it "defaults to Homologacao::Credenciais::CIELO" do
|
47
|
-
_.credenciais.must_equal
|
50
|
+
_.credenciais.numero.must_equal cielo_ec.numero
|
51
|
+
_.credenciais.chave.must_equal cielo_ec.chave
|
48
52
|
end
|
49
53
|
|
50
54
|
it "returns Homologacao::LOJA at store_mode" do
|
51
55
|
_.store_mode!
|
52
|
-
_.credenciais.must_equal
|
56
|
+
_.credenciais.numero.must_equal loja_ec.numero
|
57
|
+
_.credenciais.chave.must_equal loja_ec.chave
|
53
58
|
end
|
54
59
|
|
55
60
|
it "returns Homologacao::CIELO at cielo_mode" do
|
56
61
|
_.cielo_mode!
|
57
|
-
_.credenciais.must_equal
|
62
|
+
_.credenciais.numero.must_equal cielo_ec.numero
|
63
|
+
_.credenciais.chave.must_equal cielo_ec.chave
|
58
64
|
end
|
59
65
|
end
|
60
66
|
|
@@ -4,16 +4,11 @@ describe Cieloz::RequisicaoAutorizacaoTid do
|
|
4
4
|
let(:_) { subject.class }
|
5
5
|
let(:dir) { File.dirname __FILE__ }
|
6
6
|
let(:opts) { { root: "requisicao-autorizacao-tid" } }
|
7
|
-
let(:ec) {
|
7
|
+
let(:ec) { Cieloz::Configuracao.credenciais }
|
8
8
|
|
9
9
|
it "serializes tid" do
|
10
10
|
tid = 12345
|
11
11
|
subject.tid = tid
|
12
12
|
assert_equal expected_xml(opts) { "<tid>#{tid}</tid>" }, subject.to_xml
|
13
13
|
end
|
14
|
-
|
15
|
-
it "serializes dados-ec" do
|
16
|
-
subject.dados_ec = ec
|
17
|
-
assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
|
18
|
-
end
|
19
14
|
end
|
@@ -4,7 +4,7 @@ describe Cieloz::RequisicaoCancelamento do
|
|
4
4
|
let(:_) { subject.class }
|
5
5
|
let(:dir) { File.dirname __FILE__ }
|
6
6
|
let(:opts) { { root: "requisicao-cancelamento" } }
|
7
|
-
let(:ec) {
|
7
|
+
let(:ec) { Cieloz::Configuracao.credenciais }
|
8
8
|
|
9
9
|
it "serializes tid" do
|
10
10
|
tid = 12345
|
@@ -12,11 +12,6 @@ describe Cieloz::RequisicaoCancelamento do
|
|
12
12
|
assert_equal expected_xml(opts) { "<tid>#{tid}</tid>" }, subject.to_xml
|
13
13
|
end
|
14
14
|
|
15
|
-
it "serializes dados-ec" do
|
16
|
-
subject.dados_ec = ec
|
17
|
-
assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
|
18
|
-
end
|
19
|
-
|
20
15
|
it "serializes valor" do
|
21
16
|
val = 123
|
22
17
|
subject.valor = val
|
@@ -4,7 +4,7 @@ describe Cieloz::RequisicaoCaptura do
|
|
4
4
|
let(:_) { subject.class }
|
5
5
|
let(:dir) { File.dirname __FILE__ }
|
6
6
|
let(:opts) { { root: "requisicao-captura" } }
|
7
|
-
let(:ec) {
|
7
|
+
let(:ec) { Cieloz::Configuracao.credenciais }
|
8
8
|
|
9
9
|
it "serializes tid" do
|
10
10
|
tid = 12345
|
@@ -12,11 +12,6 @@ describe Cieloz::RequisicaoCaptura do
|
|
12
12
|
assert_equal expected_xml(opts) { "<tid>#{tid}</tid>" }, subject.to_xml
|
13
13
|
end
|
14
14
|
|
15
|
-
it "serializes dados-ec" do
|
16
|
-
subject.dados_ec = ec
|
17
|
-
assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
|
18
|
-
end
|
19
|
-
|
20
15
|
it "serializes valor" do
|
21
16
|
val = 123
|
22
17
|
subject.valor = val
|
@@ -4,16 +4,11 @@ describe Cieloz::RequisicaoConsulta do
|
|
4
4
|
let(:_) { subject.class }
|
5
5
|
let(:dir) { File.dirname __FILE__ }
|
6
6
|
let(:opts) { { root: "requisicao-consulta" } }
|
7
|
-
let(:ec) {
|
7
|
+
let(:ec) { Cieloz::Configuracao.credenciais }
|
8
8
|
|
9
9
|
it "serializes tid" do
|
10
10
|
tid = 12345
|
11
11
|
subject.tid = tid
|
12
12
|
assert_equal expected_xml(opts) { "<tid>#{tid}</tid>" }, subject.to_xml
|
13
13
|
end
|
14
|
-
|
15
|
-
it "serializes dados-ec" do
|
16
|
-
subject.dados_ec = ec
|
17
|
-
assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
|
18
|
-
end
|
19
14
|
end
|
@@ -13,10 +13,6 @@ describe Cieloz::Requisicao do
|
|
13
13
|
subject.versao = versao
|
14
14
|
end
|
15
15
|
|
16
|
-
it "serializes" do
|
17
|
-
assert_equal expected_xml(opts), subject.to_xml
|
18
|
-
end
|
19
|
-
|
20
16
|
describe "value attributes" do
|
21
17
|
before do
|
22
18
|
subject.class_eval do
|
@@ -44,18 +40,11 @@ describe Cieloz::Requisicao do
|
|
44
40
|
end
|
45
41
|
|
46
42
|
describe "complex attributes" do
|
47
|
-
let(:
|
48
|
-
let(:ec) { _::DadosEc.new attributes }
|
43
|
+
let(:ec) { Cieloz::Configuracao.credenciais }
|
49
44
|
let(:xml) { expected_xml(opts) { xml_for :ec, dir, binding } }
|
50
45
|
|
51
46
|
it "serializes" do
|
52
|
-
subject.dados_ec
|
53
|
-
assert_equal xml, subject.to_xml
|
54
|
-
end
|
55
|
-
|
56
|
-
it "ignores nils" do
|
57
|
-
attributes.merge! ignore_me: nil
|
58
|
-
subject.dados_ec = ec
|
47
|
+
subject.submit # @dados_ec is set on submission
|
59
48
|
assert_equal xml, subject.to_xml
|
60
49
|
end
|
61
50
|
end
|
@@ -70,7 +59,6 @@ describe Cieloz::Requisicao do
|
|
70
59
|
end
|
71
60
|
|
72
61
|
it "sends to test web service" do
|
73
|
-
subject.dados_ec = _::DadosEc.new Cieloz::Homologacao::Credenciais::CIELO
|
74
62
|
erro = subject.submit
|
75
63
|
assert_equal({}, subject.errors.messages)
|
76
64
|
assert_equal err, erro.codigo
|
@@ -3,7 +3,7 @@ describe Cieloz::RequisicaoTransacao do
|
|
3
3
|
let(:dir) { File.dirname __FILE__ }
|
4
4
|
let(:opts) { { root: "requisicao-transacao" } }
|
5
5
|
|
6
|
-
let(:ec) {
|
6
|
+
let(:ec) { Cieloz::Configuracao.credenciais }
|
7
7
|
let(:portador) { _::DadosPortador::TEST::VISA }
|
8
8
|
|
9
9
|
let(:now) { Time.now }
|
@@ -14,7 +14,7 @@ describe Cieloz::RequisicaoTransacao do
|
|
14
14
|
let(:pagamento) { _::FormaPagamento.new.credito "visa" }
|
15
15
|
|
16
16
|
it "serializes dados-ec" do
|
17
|
-
subject.dados_ec
|
17
|
+
subject.submit # @dados_ec is set on submission
|
18
18
|
assert_equal expected_xml(opts) { xml_for :ec, dir, binding }, subject.to_xml
|
19
19
|
end
|
20
20
|
|
@@ -62,7 +62,6 @@ describe Cieloz::RequisicaoTransacao do
|
|
62
62
|
Cieloz::Configuracao.reset!
|
63
63
|
subject.id = SecureRandom.uuid
|
64
64
|
subject.versao = "1.2.0"
|
65
|
-
subject.dados_ec = ec
|
66
65
|
# txn.dados_portador = portador # buy page loja only!
|
67
66
|
subject.dados_pedido = pedido
|
68
67
|
subject.forma_pagamento = pagamento
|
@@ -1,12 +1,10 @@
|
|
1
|
+
describe Cieloz::Requisicao do
|
2
|
+
it { must validate_presence_of :dados_ec }
|
3
|
+
end
|
4
|
+
|
1
5
|
describe Cieloz::Requisicao::DadosEc do
|
2
6
|
it { must validate_presence_of :numero }
|
3
7
|
it { must validate_presence_of :chave }
|
4
|
-
|
5
|
-
it "is validated inside RequisicaoTransacao" do
|
6
|
-
txn = Cieloz::RequisicaoTransacao.new dados_ec: subject
|
7
|
-
refute txn.valid?
|
8
|
-
refute txn.errors[:dados_ec].empty?
|
9
|
-
end
|
10
8
|
end
|
11
9
|
|
12
10
|
describe Cieloz::RequisicaoTransacao::DadosPortador do
|
@@ -209,16 +207,9 @@ describe Cieloz::RequisicaoTransacao::FormaPagamento do
|
|
209
207
|
end
|
210
208
|
end
|
211
209
|
|
212
|
-
describe Cieloz::Requisicao do
|
213
|
-
it { must validate_presence_of :id }
|
214
|
-
it { must validate_presence_of :versao }
|
215
|
-
it { must validate_presence_of :dados_ec }
|
216
|
-
end
|
217
|
-
|
218
210
|
describe Cieloz::RequisicaoTransacao do
|
219
211
|
let(:_) { subject.class }
|
220
212
|
|
221
|
-
it { must validate_presence_of :dados_ec }
|
222
213
|
it { must validate_presence_of :dados_pedido }
|
223
214
|
it { must validate_presence_of :forma_pagamento }
|
224
215
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cieloz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|