aurfy 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -0
- data/README.md +7 -4
- data/aurfy.gemspec +4 -4
- data/lib/aurfy.rb +4 -1
- data/lib/aurfy/client.rb +8 -12
- data/lib/aurfy/configure.rb +39 -44
- data/lib/aurfy/parser.rb +1 -3
- data/lib/aurfy/response.rb +5 -5
- data/lib/aurfy/version.rb +2 -2
- data/spec/aurfy/client_spec.rb +10 -10
- data/spec/aurfy/configure_spec.rb +19 -21
- data/spec/aurfy/parser_spec.rb +2 -2
- data/spec/aurfy/response_spec.rb +17 -17
- metadata +16 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fb2abdf9afc29c30e819f9903f01784c7121a94
|
4
|
+
data.tar.gz: 5b1dff193a71c2cf801bd372e17d8a20611cc374
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a31e2a6f3cc3f2e227233c5ebadc1501cf7b654a07fca2973e9e9688b38f9e01084196c23f9a0b759e7f4fc5e6edab04c0e8022042165684bcd3196877b74243
|
7
|
+
data.tar.gz: 953856f3b875b80a412d61026d4440780dbe67492852c668dc3a128429f5d9f3acc5ad31b55d5a1ec56fb2dbb41b5173c0524fa2de1395f0e7915de6b48193d9
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -27,12 +27,15 @@ Usage
|
|
27
27
|
```rb
|
28
28
|
require "aurfy"
|
29
29
|
|
30
|
-
|
31
|
-
|
30
|
+
options = {
|
31
|
+
merchantid: "M000000000",
|
32
|
+
trade_certificate: "D0123456789012345678901234567890",
|
33
|
+
test: false
|
34
|
+
}
|
32
35
|
|
33
|
-
client = Aurfy::Client.new(
|
36
|
+
client = Aurfy::Client.new(options)
|
34
37
|
|
35
|
-
client.
|
38
|
+
client.purchase(
|
36
39
|
cardnumber: "0123456789012345",
|
37
40
|
expirydate: "1701",
|
38
41
|
cv2: "123",
|
data/aurfy.gemspec
CHANGED
@@ -14,8 +14,8 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.files = `git ls-files`.split($/)
|
15
15
|
s.require_paths = ['lib']
|
16
16
|
|
17
|
-
s.
|
18
|
-
s.
|
19
|
-
s.
|
20
|
-
s.
|
17
|
+
s.add_dependency "activesupport", "~> 4.2"
|
18
|
+
s.add_dependency 'credit_card_reader', '~> 0.0.4'
|
19
|
+
s.add_dependency 'faraday', '~> 0.9.0'
|
20
|
+
s.add_dependency "rack", "~> 1.6"
|
21
21
|
end
|
data/lib/aurfy.rb
CHANGED
data/lib/aurfy/client.rb
CHANGED
@@ -5,21 +5,17 @@ module Aurfy
|
|
5
5
|
class Client
|
6
6
|
attr_reader :api_url, :merchantid, :trade_certificate
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@api_url = test ? TEST_API_URL : API_URL
|
10
|
-
@merchantid = merchantid
|
11
|
-
@trade_certificate = trade_certificate
|
8
|
+
def initialize(options = {})
|
9
|
+
@api_url = options[:test] ? TEST_API_URL : API_URL
|
10
|
+
@merchantid = options[:merchantid]
|
11
|
+
@trade_certificate = options[:trade_certificate]
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
configure
|
14
|
+
def purchase(options = {})
|
15
|
+
configure = Configure.new(options.merge(merchantid: merchantid, trade_certificate: trade_certificate))
|
16
16
|
|
17
|
-
|
18
|
-
Response.new(
|
19
|
-
end
|
20
|
-
|
21
|
-
def configure
|
22
|
-
@configure ||= Configure.new
|
17
|
+
response = Faraday.post api_url, configure.params
|
18
|
+
Response.new(response)
|
23
19
|
end
|
24
20
|
end
|
25
21
|
end
|
data/lib/aurfy/configure.rb
CHANGED
@@ -1,69 +1,64 @@
|
|
1
1
|
module Aurfy
|
2
2
|
class Configure
|
3
|
+
CREDIT_CARD_ORIGINAL_NAMES = { union_pay: "UP", visa: "VISA", jcb: "JCB", master: "MC" }
|
4
|
+
|
3
5
|
def self.keys
|
4
|
-
[:
|
5
|
-
:
|
6
|
-
:
|
6
|
+
[:cardnumber, :cardtype, :charset, :cv2, :expirydate, :orderamount, :ordercurrency, :orderdescription, :orderid,
|
7
|
+
:ordertime, :merchantid, :signmethod, :trade_certificate, :transtype, :txnremark1, :txnremark2, :version,
|
8
|
+
:website]
|
7
9
|
end
|
8
10
|
|
9
|
-
def initialize
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
@
|
16
|
-
@transtype = "PURCHASE"
|
17
|
-
@txnremark1 = ""
|
18
|
-
@txnremark2 = ""
|
19
|
-
@version = "1.0"
|
20
|
-
@website = ""
|
11
|
+
def initialize(values = {})
|
12
|
+
Configure.keys.each do |key|
|
13
|
+
next unless value = (values[key] || default_values[key])
|
14
|
+
instance_variable_set(:"@#{key}", value)
|
15
|
+
end
|
16
|
+
|
17
|
+
@cardtype = values[:card_type] || cardtype
|
21
18
|
end
|
22
19
|
|
23
20
|
def params
|
24
|
-
sorted_variables.merge(
|
21
|
+
sorted_variables.merge(signature: signature)
|
25
22
|
end
|
26
23
|
|
27
|
-
def
|
28
|
-
|
29
|
-
next unless Configure.keys.include? key
|
30
|
-
instance_variable_set(:"@#{key}", value)
|
31
|
-
end
|
32
|
-
@cardtype ||= cardtype
|
33
|
-
options
|
24
|
+
def signature_key
|
25
|
+
sorted_variables.except(:signmethod).to_query + "&#{@trade_certificate}"
|
34
26
|
end
|
35
27
|
|
36
28
|
def sorted_variables
|
37
|
-
variables = instance_variables
|
38
|
-
Hash[variables.
|
39
|
-
end
|
40
|
-
|
41
|
-
def signature_key
|
42
|
-
sorted_variables.delete_if { |k, _| k == :signmethod }.map {|p| "#{p.first}=#{p.last}" }.join("&") + "&#{@trade_certificate}"
|
29
|
+
variables = (instance_variables - [:@trade_certificate]).sort
|
30
|
+
Hash[variables.map { |v| [v.to_s.sub("@", "").to_sym, instance_variable_get(v)] }]
|
43
31
|
end
|
44
32
|
|
45
33
|
private
|
46
34
|
|
47
|
-
def signature
|
48
|
-
Digest::MD5.hexdigest(signature_key)
|
49
|
-
end
|
50
|
-
|
51
35
|
def cardtype
|
52
|
-
|
53
|
-
|
54
|
-
when :union_pay
|
55
|
-
"UP"
|
56
|
-
when :vise
|
57
|
-
"VISA"
|
58
|
-
when :jcb
|
59
|
-
"JCB"
|
60
|
-
when :master
|
61
|
-
"MC"
|
62
|
-
end
|
36
|
+
card_information = credit_card_detector.detect(@cardnumber)
|
37
|
+
CREDIT_CARD_ORIGINAL_NAMES[card_information.brand]
|
63
38
|
end
|
64
39
|
|
65
40
|
def credit_card_detector
|
66
41
|
CreditCardReader::Detector.new
|
67
42
|
end
|
43
|
+
|
44
|
+
def default_values
|
45
|
+
{
|
46
|
+
charset: "UTF-8",
|
47
|
+
ordercurrency: "USD",
|
48
|
+
orderdescription: "",
|
49
|
+
orderid: DateTime.now.strftime("%Y%m%d%H%M%S%N"),
|
50
|
+
ordertime: DateTime.now.strftime("%Y%m%d%H%M%S"),
|
51
|
+
signmethod: "MD5",
|
52
|
+
transtype: "PURCHASE",
|
53
|
+
txnremark1: "",
|
54
|
+
txnremark2: "",
|
55
|
+
version: "1.0",
|
56
|
+
website: ""
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
def signature
|
61
|
+
Digest::MD5.hexdigest(signature_key)
|
62
|
+
end
|
68
63
|
end
|
69
64
|
end
|
data/lib/aurfy/parser.rb
CHANGED
@@ -7,9 +7,7 @@ module Aurfy
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def parse
|
10
|
-
|
11
|
-
params = params.map { |p| p.length >= 2 ? p : p.push("") }
|
12
|
-
Hash[params].each_with_object({}) { |(k, v), a| a[k.to_s.to_sym] = v }
|
10
|
+
Rack::Utils.parse_nested_query(body).symbolize_keys
|
13
11
|
end
|
14
12
|
end
|
15
13
|
end
|
data/lib/aurfy/response.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Aurfy
|
2
2
|
class Response
|
3
|
-
attr_reader :
|
3
|
+
attr_reader :response, :merchantid, :orderamount, :ordercurrency, :orderid, :ordertime, :respcode, :respmsg,
|
4
4
|
:signature, :signmethod, :txnid, :txnremark1, :txnremark2, :txnstatus, :txntime
|
5
5
|
|
6
6
|
def self.keys
|
@@ -8,15 +8,15 @@ module Aurfy
|
|
8
8
|
:txnid, :txnremark1, :txnremark2, :txnstatus, :txntime]
|
9
9
|
end
|
10
10
|
|
11
|
-
def initialize(
|
12
|
-
@
|
11
|
+
def initialize(response)
|
12
|
+
@response = response
|
13
13
|
|
14
|
-
parsed_params = Parser.new(
|
14
|
+
parsed_params = Parser.new(response.body).parse
|
15
15
|
assign_variables(parsed_params)
|
16
16
|
end
|
17
17
|
|
18
18
|
def success?
|
19
|
-
respcode
|
19
|
+
respcode === "00"
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
data/lib/aurfy/version.rb
CHANGED
data/spec/aurfy/client_spec.rb
CHANGED
@@ -1,33 +1,33 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Aurfy::Client do
|
4
|
-
|
4
|
+
let(:client) { described_class.new(merchantid: "merchant_id", trade_certificate: "trade_certificate") }
|
5
5
|
|
6
6
|
describe "#initialize" do
|
7
7
|
it "assigns parameters for payment" do
|
8
|
-
expect(
|
9
|
-
expect(
|
10
|
-
expect(
|
8
|
+
expect(client.merchantid).to eq "merchant_id"
|
9
|
+
expect(client.trade_certificate).to eq "trade_certificate"
|
10
|
+
expect(client.api_url).to eq Aurfy::API_URL
|
11
11
|
end
|
12
12
|
|
13
13
|
context "with test argumaent" do
|
14
|
-
|
14
|
+
let(:client) { described_class.new(merchantid: "merchant_id", trade_certificate: "trade_certificate", test: true) }
|
15
15
|
|
16
16
|
it "assigns parameters for payment" do
|
17
|
-
expect(
|
18
|
-
expect(
|
19
|
-
expect(
|
17
|
+
expect(client.merchantid).to eq "merchant_id"
|
18
|
+
expect(client.trade_certificate).to eq "trade_certificate"
|
19
|
+
expect(client.api_url).to eq Aurfy::TEST_API_URL
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
describe "#
|
24
|
+
describe "#purchase" do
|
25
25
|
context "with valid credit card" do
|
26
26
|
it "returns successful Aurfy::Response instance" do
|
27
27
|
response = double(Faraday::Response, body: "merchantid=M000000000&orderamount=600.00&ordercurrency=USD&orderid=20150429115552415102000&ordertime=20150429115552&respcode=00&respmsg=The payment is successful.&signature=d2c4c43a7b2447d512ee3ef3c33754f4&signmethod=MD5&txnid=21150428000000006409&txnremark1=&txnremark2=&txnstatus=0&txntime=")
|
28
28
|
allow_any_instance_of(Faraday).to receive(:post) { response }
|
29
29
|
|
30
|
-
expect(
|
30
|
+
expect(client.purchase).to be_a Aurfy::Response
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -1,13 +1,18 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Aurfy::Configure do
|
4
|
-
|
4
|
+
let(:configure) { described_class.new }
|
5
|
+
|
6
|
+
it "returns CREDIT_CARD_ORIGINAL_NAMES hash" do
|
7
|
+
hash = { union_pay: "UP", visa: "VISA", jcb: "JCB", master: "MC" }
|
8
|
+
expect(described_class::CREDIT_CARD_ORIGINAL_NAMES).to eq hash
|
9
|
+
end
|
5
10
|
|
6
11
|
describe ".keys" do
|
7
12
|
it "returns configure keys" do
|
8
|
-
|
9
|
-
|
10
|
-
|
13
|
+
keys = [:cardnumber, :cardtype, :charset, :cv2, :expirydate, :orderamount, :ordercurrency, :orderdescription, :orderid,
|
14
|
+
:ordertime, :merchantid, :signmethod, :trade_certificate, :transtype, :txnremark1, :txnremark2, :version,
|
15
|
+
:website]
|
11
16
|
|
12
17
|
expect(described_class.keys).to eq keys
|
13
18
|
end
|
@@ -15,40 +20,33 @@ describe Aurfy::Configure do
|
|
15
20
|
|
16
21
|
describe "#params" do
|
17
22
|
it "returns configure params" do
|
18
|
-
allow(
|
19
|
-
allow(
|
20
|
-
|
21
|
-
expect(subject.params).to eq({ signature: "signature" })
|
22
|
-
end
|
23
|
-
end
|
23
|
+
allow(configure).to receive(:sorted_variables) { {} }
|
24
|
+
allow(configure).to receive(:signature) { "signature" }
|
24
25
|
|
25
|
-
|
26
|
-
it "assigns variable for option" do
|
27
|
-
expect do
|
28
|
-
subject.options = { merchantid: "merchantid" }
|
29
|
-
end.to change { subject.instance_variable_get(:"@merchantid") } .from(nil).to("merchantid")
|
26
|
+
expect(configure.params).to eq({ signature: "signature" })
|
30
27
|
end
|
31
28
|
end
|
32
29
|
|
33
30
|
describe "#sorted_variables" do
|
34
31
|
it "returns sorted instance variables" do
|
35
|
-
|
36
|
-
|
32
|
+
configure = described_class.new(trade_certificate: "test", cardnumber: "6200123456789012", orderid: "orderid",
|
33
|
+
ordertime: "20150429124533")
|
37
34
|
sorted_variables = { cardnumber: "6200123456789012", cardtype: "UP", charset: "UTF-8", ordercurrency: "USD",
|
38
35
|
orderdescription: "", orderid: "orderid", ordertime: "20150429124533", signmethod: "MD5",
|
39
36
|
transtype: "PURCHASE", txnremark1: "", txnremark2: "", version: "1.0", website: "" }
|
40
37
|
|
41
|
-
expect(
|
38
|
+
expect(configure.sorted_variables).to eq(sorted_variables)
|
42
39
|
end
|
43
40
|
end
|
44
41
|
|
45
42
|
describe "#signature_key" do
|
46
43
|
it "returns sorted instance variables" do
|
47
|
-
|
48
|
-
|
44
|
+
configure = described_class.new(cardnumber: "6200123456789012", signmethod: "MD5",
|
45
|
+
trade_certificate: "trade_certificate", orderid: "orderid",
|
46
|
+
ordertime: "20150429124533")
|
49
47
|
signature_key = "cardnumber=6200123456789012&cardtype=UP&charset=UTF-8&ordercurrency=USD&orderdescription=&orderid=orderid&ordertime=20150429124533&transtype=PURCHASE&txnremark1=&txnremark2=&version=1.0&website=&trade_certificate"
|
50
48
|
|
51
|
-
expect(
|
49
|
+
expect(configure.signature_key).to eq(signature_key)
|
52
50
|
end
|
53
51
|
end
|
54
52
|
end
|
data/spec/aurfy/parser_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Aurfy::Parser do
|
4
|
-
|
4
|
+
let(:parser) { described_class.new(body) }
|
5
5
|
let(:body) { "merchantid=M000000000&orderamount=600.00&ordercurrency=USD&orderid=20150429115552415102000&ordertime=20150429115552&respcode=00&respmsg=The payment is successful.&signature=d2c4c43a7b2447d512ee3ef3c33754f4&signmethod=MD5&txnid=21150428000000006409&txnremark1=&txnremark2=&txnstatus=0&txntime=" }
|
6
6
|
|
7
7
|
describe "#parse" do
|
@@ -12,7 +12,7 @@ describe Aurfy::Parser do
|
|
12
12
|
signmethod: "MD5", txnid: "21150428000000006409", txnremark1: "", txnremark2: "",
|
13
13
|
txnstatus: "0", txntime: "" }
|
14
14
|
|
15
|
-
expect(
|
15
|
+
expect(parser.parse).to eq parsed_params
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/spec/aurfy/response_spec.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Aurfy::Response do
|
4
|
-
|
4
|
+
let(:response) { described_class.new(result) }
|
5
5
|
|
6
6
|
let(:result) { double(Faraday::Response, body: "merchantid=M000000000&orderamount=600.00&ordercurrency=USD&orderid=20150429115552415102000&ordertime=20150429115552&respcode=00&respmsg=The payment is successful.&signature=d2c4c43a7b2447d512ee3ef3c33754f4&signmethod=MD5&txnid=21150428000000006409&txnremark1=&txnremark2=&txnstatus=0&txntime=") }
|
7
7
|
|
8
8
|
it "assigns params" do
|
9
|
-
expect(
|
10
|
-
expect(
|
11
|
-
expect(
|
12
|
-
expect(
|
13
|
-
expect(
|
14
|
-
expect(
|
15
|
-
expect(
|
16
|
-
expect(
|
17
|
-
expect(
|
18
|
-
expect(
|
19
|
-
expect(
|
20
|
-
expect(
|
21
|
-
expect(
|
22
|
-
expect(
|
9
|
+
expect(response.merchantid).to eq "M000000000"
|
10
|
+
expect(response.orderamount).to eq "600.00"
|
11
|
+
expect(response.ordercurrency).to eq "USD"
|
12
|
+
expect(response.orderid).to eq "20150429115552415102000"
|
13
|
+
expect(response.ordertime).to eq "20150429115552"
|
14
|
+
expect(response.respcode).to eq "00"
|
15
|
+
expect(response.respmsg).to eq "The payment is successful."
|
16
|
+
expect(response.signature).to eq "d2c4c43a7b2447d512ee3ef3c33754f4"
|
17
|
+
expect(response.signmethod).to eq "MD5"
|
18
|
+
expect(response.txnid).to eq "21150428000000006409"
|
19
|
+
expect(response.txnremark1).to eq ""
|
20
|
+
expect(response.txnremark2).to eq ""
|
21
|
+
expect(response.txnstatus).to eq "0"
|
22
|
+
expect(response.txntime).to eq ""
|
23
23
|
end
|
24
24
|
|
25
25
|
describe ".keys" do
|
@@ -34,7 +34,7 @@ describe Aurfy::Response do
|
|
34
34
|
describe "#success?" do
|
35
35
|
context "with successful result" do
|
36
36
|
it "returns true" do
|
37
|
-
expect(
|
37
|
+
expect(response.success?).to be_truthy
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -42,7 +42,7 @@ describe Aurfy::Response do
|
|
42
42
|
let(:result) { double(Faraday::Response, body: "merchantid=M000000000&orderamount=600.00&ordercurrency=USD&orderid=20150429115552415102000&ordertime=20150429115552&respcode=97&respmsg=Internal error.&signature=d2c4c43a7b2447d512ee3ef3c33754f4&signmethod=MD5&txnid=21150428000000006409&txnremark1=&txnremark2=&txnstatus=0&txntime=") }
|
43
43
|
|
44
44
|
it "returns false" do
|
45
|
-
expect(
|
45
|
+
expect(response.success?).to be_falsey
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
metadata
CHANGED
@@ -1,77 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aurfy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro Saito
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '4.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '4.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: credit_card_reader
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.0.4
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.0.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: faraday
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
48
|
-
type: :
|
47
|
+
version: 0.9.0
|
48
|
+
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.9.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rack
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: 3.0.0
|
65
|
-
type: :development
|
61
|
+
version: '1.6'
|
62
|
+
type: :runtime
|
66
63
|
prerelease: false
|
67
64
|
version_requirements: !ruby/object:Gem::Requirement
|
68
65
|
requirements:
|
69
66
|
- - "~>"
|
70
67
|
- !ruby/object:Gem::Version
|
71
|
-
version: '
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 3.0.0
|
68
|
+
version: '1.6'
|
75
69
|
description: Ruby client for Aurfy
|
76
70
|
email:
|
77
71
|
- camelmasa@gmail.com
|