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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cd370b13b668a5a3ad75b2259835fcbf713162e6
4
- data.tar.gz: 9b4fcedecb44992d5da07cb225bbe8f12fe08a3d
3
+ metadata.gz: 3fb2abdf9afc29c30e819f9903f01784c7121a94
4
+ data.tar.gz: 5b1dff193a71c2cf801bd372e17d8a20611cc374
5
5
  SHA512:
6
- metadata.gz: 6f656da1218c81ea95a91cf6141305f178a26f2193f48b50a98680638669734752d7861ca9e095e1e38ab1572b8e3885a70c9482570aa5ff1b809a4a51584c1b
7
- data.tar.gz: bd91ec61d956df7a990cb6c974d92c0b5dc327c74c447e10a5e61519a97121b232052495d01598ea701bb4b525b3262aae13d2b93045a12d184c54266c435e73
6
+ metadata.gz: a31e2a6f3cc3f2e227233c5ebadc1501cf7b654a07fca2973e9e9688b38f9e01084196c23f9a0b759e7f4fc5e6edab04c0e8022042165684bcd3196877b74243
7
+ data.tar.gz: 953856f3b875b80a412d61026d4440780dbe67492852c668dc3a128429f5d9f3acc5ad31b55d5a1ec56fb2dbb41b5173c0524fa2de1395f0e7915de6b48193d9
data/Gemfile CHANGED
@@ -1,6 +1,11 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ group :development do
4
+ gem 'pry'
5
+ end
6
+
3
7
  group :test do
8
+ gem 'rspec', '~> 3.0'
4
9
  gem 'simplecov', require: false
5
10
  gem "codeclimate-test-reporter", require: nil
6
11
  end
data/README.md CHANGED
@@ -27,12 +27,15 @@ Usage
27
27
  ```rb
28
28
  require "aurfy"
29
29
 
30
- merchant_id = "M000000000"
31
- trade_certificate = "D0123456789012345678901234567890"
30
+ options = {
31
+ merchantid: "M000000000",
32
+ trade_certificate: "D0123456789012345678901234567890",
33
+ test: false
34
+ }
32
35
 
33
- client = Aurfy::Client.new(merchant_id, trade_certificate)
36
+ client = Aurfy::Client.new(options)
34
37
 
35
- client.request(
38
+ client.purchase(
36
39
  cardnumber: "0123456789012345",
37
40
  expirydate: "1701",
38
41
  cv2: "123",
@@ -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.add_runtime_dependency 'credit_card_reader', '~> 0.0.0'
18
- s.add_runtime_dependency 'faraday', '~> 0.9.0'
19
- s.add_development_dependency "pry", "~> 0.10.0"
20
- s.add_development_dependency 'rspec', '~> 3.0', '>= 3.0.0'
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
@@ -1,5 +1,8 @@
1
- require 'faraday'
1
+ require 'active_support/core_ext/object'
2
+ require 'active_support/core_ext/hash'
2
3
  require 'credit_card_reader'
4
+ require 'faraday'
5
+ require 'rack'
3
6
 
4
7
  require 'aurfy/client'
5
8
  require 'aurfy/configure'
@@ -5,21 +5,17 @@ module Aurfy
5
5
  class Client
6
6
  attr_reader :api_url, :merchantid, :trade_certificate
7
7
 
8
- def initialize(merchantid, trade_certificate, test = false)
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 request(options = {})
15
- configure.options = options.merge(merchantid: merchantid, trade_certificate: trade_certificate)
14
+ def purchase(options = {})
15
+ configure = Configure.new(options.merge(merchantid: merchantid, trade_certificate: trade_certificate))
16
16
 
17
- result = Faraday.post @api_url, configure.params
18
- Response.new(result)
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
@@ -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
- [:merchantid, :orderid, :ordertime, :ordercurrency, :orderamount, :orderdescription, :txnremark1, :txnremark2,
5
- :charset, :clientip, :version, :transtype, :website, :cardtype, :cardnumber, :cv2, :expirydate, :signmethod,
6
- :trade_certificate]
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
- @charset = "UTF-8"
11
- @ordercurrency = "USD"
12
- @orderdescription = ""
13
- @orderid = DateTime.now.strftime("%Y%m%d%H%M%S%N")
14
- @ordertime = DateTime.now.strftime("%Y%m%d%H%M%S")
15
- @signmethod = "MD5"
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({ signature: signature })
21
+ sorted_variables.merge(signature: signature)
25
22
  end
26
23
 
27
- def options=(options = {})
28
- options.each_pair do |key, value|
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.map { |v| [v.to_s.sub("@", "").to_sym, instance_variable_get(v)] }
38
- Hash[variables.delete_if { |k, _| k == :trade_certificate }.sort]
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
- credit_card = credit_card_detector.detect(@cardnumber)
53
- case credit_card.brand
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
@@ -7,9 +7,7 @@ module Aurfy
7
7
  end
8
8
 
9
9
  def parse
10
- params = body.split("&").map { |p| p.split("=") }
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
@@ -1,6 +1,6 @@
1
1
  module Aurfy
2
2
  class Response
3
- attr_reader :result, :merchantid, :orderamount, :ordercurrency, :orderid, :ordertime, :respcode, :respmsg,
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(result)
12
- @result = result
11
+ def initialize(response)
12
+ @response = response
13
13
 
14
- parsed_params = Parser.new(result.body).parse
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 == "00"
19
+ respcode === "00"
20
20
  end
21
21
 
22
22
  private
@@ -1,6 +1,6 @@
1
1
  module Aurfy
2
- MAJOR = 0
3
- MINOR = 2
2
+ MAJOR = 1
3
+ MINOR = 0
4
4
  PATCH = 0
5
5
  VERSION = [MAJOR, MINOR, PATCH].join('.').freeze
6
6
  end
@@ -1,33 +1,33 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Aurfy::Client do
4
- subject { described_class.new("merchant_id", "trade_certificate") }
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(subject.merchantid).to eq "merchant_id"
9
- expect(subject.trade_certificate).to eq "trade_certificate"
10
- expect(subject.api_url).to eq Aurfy::API_URL
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
- subject { described_class.new("merchant_id", "trade_certificate", true) }
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(subject.merchantid).to eq "merchant_id"
18
- expect(subject.trade_certificate).to eq "trade_certificate"
19
- expect(subject.api_url).to eq Aurfy::TEST_API_URL
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 "#request" do
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(subject.request).to be_a Aurfy::Response
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
- subject { described_class.new }
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
- keys = [:merchantid, :orderid, :ordertime, :ordercurrency, :orderamount, :orderdescription, :txnremark1,
9
- :txnremark2, :charset, :clientip, :version, :transtype, :website, :cardtype, :cardnumber, :cv2,
10
- :expirydate, :signmethod, :trade_certificate]
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(subject).to receive(:sorted_variables) { {} }
19
- allow(subject).to receive(:signature) { "signature" }
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
- describe "#options=" do
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
- subject.options = { trade_certificate: "test", cardnumber: "6200123456789012", orderid: "orderid",
36
- ordertime: "20150429124533" }
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(subject.sorted_variables).to eq(sorted_variables)
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
- subject.options = { cardnumber: "6200123456789012", signmethod: "MD5", trade_certificate: "trade_certificate", orderid: "orderid",
48
- ordertime: "20150429124533" }
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(subject.signature_key).to eq(signature_key)
49
+ expect(configure.signature_key).to eq(signature_key)
52
50
  end
53
51
  end
54
52
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Aurfy::Parser do
4
- subject { described_class.new(body) }
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(subject.parse).to eq parsed_params
15
+ expect(parser.parse).to eq parsed_params
16
16
  end
17
17
  end
18
18
  end
@@ -1,25 +1,25 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Aurfy::Response do
4
- subject { described_class.new(result) }
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(subject.merchantid).to eq "M000000000"
10
- expect(subject.orderamount).to eq "600.00"
11
- expect(subject.ordercurrency).to eq "USD"
12
- expect(subject.orderid).to eq "20150429115552415102000"
13
- expect(subject.ordertime).to eq "20150429115552"
14
- expect(subject.respcode).to eq "00"
15
- expect(subject.respmsg).to eq "The payment is successful."
16
- expect(subject.signature).to eq "d2c4c43a7b2447d512ee3ef3c33754f4"
17
- expect(subject.signmethod).to eq "MD5"
18
- expect(subject.txnid).to eq "21150428000000006409"
19
- expect(subject.txnremark1).to eq ""
20
- expect(subject.txnremark2).to eq ""
21
- expect(subject.txnstatus).to eq "0"
22
- expect(subject.txntime).to eq ""
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(subject.success?).to be_truthy
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(subject.success?).to be_falsey
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.2.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: 2015-05-02 00:00:00.000000000 Z
11
+ date: 2016-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: credit_card_reader
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.0
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: 0.0.0
26
+ version: '4.2'
27
27
  - !ruby/object:Gem::Dependency
28
- name: faraday
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.9.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.9.0
40
+ version: 0.0.4
41
41
  - !ruby/object:Gem::Dependency
42
- name: pry
42
+ name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.10.0
48
- type: :development
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.10.0
54
+ version: 0.9.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec
56
+ name: rack
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.0'
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: '3.0'
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