honeymaker 0.7.6 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d25081bad4edcf7602d9c4a56b1d6be5c20a6d260179edea60d6e5afedadde2
4
- data.tar.gz: e719fd522db012f018fdb2aff9a3148999b3a9f6c0877cced4b5c22b28bc75bf
3
+ metadata.gz: 329432e2569d62afa1bd99352d9f9075dbfb93004b27856f3ae535e03aba2a00
4
+ data.tar.gz: fe3f83098b328ad88e41c385efd8fe855ba8386c838beae26caab2d02a479a45
5
5
  SHA512:
6
- metadata.gz: 38ab067d57398b919d663394410f43c7e440e9d4bcf5348fbe435d647ca4ecdbf9526d9ea6cbcaf5eea46299b265c8ba442cddbbd123dc0046803035c6745190
7
- data.tar.gz: 8ec7b4f41707748a5098bbe3999699bc4434265a692a07f44acba59400dc93b3dd568b42cbfae37b2d70a699371d652a97e95008cde2587957bd44a6bac22be2
6
+ metadata.gz: 1f38749e06bf4b3fbf03da5830bcc68bfe581b8f901f566894ee51d81a0b6883cd59bd8646ed98ca2fa119db70beee055b10dce2068387b85377b1b1e6cef6bc
7
+ data.tar.gz: b83aa96da78eab87f3004321175b470ade7caa34b7843f326c72a3b479d548cedf223328a70700afadc46e96bca17844002ab6467fc9cfd31313bd7ea5118825
@@ -10,6 +10,18 @@ module Honeymaker
10
10
  }
11
11
  }.freeze
12
12
 
13
+ ERROR_PATTERNS = [].freeze
14
+
15
+ def classify_error(message)
16
+ return nil if message.nil?
17
+
18
+ self.class::ERROR_PATTERNS.each do |entry|
19
+ next unless (match = entry[:pattern].match(message))
20
+ return { code: entry[:code], **match.named_captures.transform_keys(&:to_sym) }
21
+ end
22
+ nil
23
+ end
24
+
13
25
  def get_tickers_info
14
26
  raise NotImplementedError, "#{self.class} must implement #get_tickers_info"
15
27
  end
@@ -9,6 +9,13 @@ module Honeymaker
9
9
  "COPM" # has the same external_id (ecomi) as OMI
10
10
  ].freeze
11
11
 
12
+ ERROR_PATTERNS = [
13
+ {
14
+ code: :regional_restriction,
15
+ pattern: /\AEAccount:Invalid permissions:(?<asset>\S+) trading restricted for (?<country>\w+)\.?\z/
16
+ }
17
+ ].freeze
18
+
12
19
  REAL_COSTMIN = {
13
20
  "AUD" => 10,
14
21
  "CAD" => 5,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Honeymaker
4
- VERSION = "0.7.6"
4
+ VERSION = "0.8.0"
5
5
  end
@@ -125,4 +125,14 @@ class Honeymaker::ExchangeTest < Minitest::Test
125
125
  exchange = Honeymaker::Exchange.new
126
126
  assert_equal 3600, exchange.cache_ttl
127
127
  end
128
+
129
+ def test_classify_error_returns_nil_when_no_patterns
130
+ exchange = Honeymaker::Exchange.new
131
+ assert_nil exchange.classify_error("anything")
132
+ end
133
+
134
+ def test_classify_error_returns_nil_for_nil_message
135
+ exchange = Honeymaker::Exchange.new
136
+ assert_nil exchange.classify_error(nil)
137
+ end
128
138
  end
@@ -80,6 +80,19 @@ class Honeymaker::Exchanges::KrakenTest < Minitest::Test
80
80
  assert result.failure?
81
81
  end
82
82
 
83
+ def test_classify_error_regional_restriction
84
+ result = @exchange.classify_error("EAccount:Invalid permissions:XAUT trading restricted for DK.")
85
+ assert_equal({ code: :regional_restriction, asset: "XAUT", country: "DK" }, result)
86
+ end
87
+
88
+ def test_classify_error_returns_nil_for_unknown_message
89
+ assert_nil @exchange.classify_error("EGeneral:Internal error")
90
+ end
91
+
92
+ def test_classify_error_returns_nil_for_nil_message
93
+ assert_nil @exchange.classify_error(nil)
94
+ end
95
+
83
96
  private
84
97
 
85
98
  def stub_request(body)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeymaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.6
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Deltabadger