honeymaker 0.7.4 → 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: dab41088f0ca358c6bb6d507339bc02ef10ec52a1ddaf7b87c3228abc7e6e626
4
- data.tar.gz: 040666174ca1cec541e218243573b61bad1ca3616acbbc47c74adeb931554d1e
3
+ metadata.gz: 329432e2569d62afa1bd99352d9f9075dbfb93004b27856f3ae535e03aba2a00
4
+ data.tar.gz: fe3f83098b328ad88e41c385efd8fe855ba8386c838beae26caab2d02a479a45
5
5
  SHA512:
6
- metadata.gz: d737bb0b41ea2510ddb39e27a6ddf7ac89032cf8262c71f6b02e46933f67e075de5d42863f88158b98fd3a8164a6088fd62607a8fbe80151aef10f741d4b93a7
7
- data.tar.gz: 7e00c0658eb29f2bd794f9dc059acd94aa9b305bb1026987c552b3186db7336d7e8948d20bd820489d557b2d7d9bb571925eddbe6e0a635cc6034d5457ce7572
6
+ metadata.gz: 1f38749e06bf4b3fbf03da5830bcc68bfe581b8f901f566894ee51d81a0b6883cd59bd8646ed98ca2fa119db70beee055b10dce2068387b85377b1b1e6cef6bc
7
+ data.tar.gz: b83aa96da78eab87f3004321175b470ade7caa34b7843f326c72a3b479d548cedf223328a70700afadc46e96bca17844002ab6467fc9cfd31313bd7ea5118825
data/Rakefile CHANGED
@@ -11,10 +11,44 @@ end
11
11
 
12
12
  task default: :test
13
13
 
14
- Rake::Task[:build].enhance([:release_preflight])
14
+ VERSION_FILE = "lib/honeymaker/version.rb"
15
+
16
+ def current_version
17
+ File.read(VERSION_FILE).match(/VERSION = "(.+)"/)[1]
18
+ end
19
+
20
+ def bump_version(segment)
21
+ major, minor, patch = current_version.split(".").map(&:to_i)
22
+ new_version = case segment
23
+ when :major then [major + 1, 0, 0]
24
+ when :minor then [major, minor + 1, 0]
25
+ when :patch then [major, minor, patch + 1]
26
+ end.join(".")
27
+ content = File.read(VERSION_FILE)
28
+ File.write(VERSION_FILE, content.sub(/VERSION = ".+"/, "VERSION = \"#{new_version}\""))
29
+ puts "Bumped version to #{new_version}"
30
+ end
31
+
32
+ task :bump_version do
33
+ bump_version(@bump_segment || :patch)
34
+ end
15
35
 
16
- task :release_preflight do
36
+ task release_preflight: :bump_version do
17
37
  sh "bundle install"
18
38
  Rake::Task[:test].invoke
19
39
  sh 'git add -A && git diff --cached --quiet || git commit -m "$(ruby -e "require_relative \'lib/honeymaker/version\'; puts Honeymaker::VERSION")"'
20
40
  end
41
+
42
+ Rake::Task[:build].enhance([:release_preflight])
43
+
44
+ namespace :release do
45
+ task :minor do
46
+ @bump_segment = :minor
47
+ Rake::Task[:release].invoke
48
+ end
49
+
50
+ task :major do
51
+ @bump_segment = :major
52
+ Rake::Task[:release].invoke
53
+ end
54
+ end
@@ -95,6 +95,22 @@ module Honeymaker
95
95
  })
96
96
  end
97
97
 
98
+ def deposit_history(coin: nil, status: nil, start_time: nil, end_time: nil, offset: nil, limit: 1000, recv_window: 5000)
99
+ get_signed("/api/v1/capital/deposit/hisrec", {
100
+ coin: coin, status: status,
101
+ startTime: start_time, endTime: end_time,
102
+ offset: offset, limit: limit, recvWindow: recv_window
103
+ })
104
+ end
105
+
106
+ def withdraw_history(coin: nil, status: nil, start_time: nil, end_time: nil, offset: nil, limit: 1000, recv_window: 5000)
107
+ get_signed("/api/v1/capital/withdraw/history", {
108
+ coin: coin, status: status,
109
+ startTime: start_time, endTime: end_time,
110
+ offset: offset, limit: limit, recvWindow: recv_window
111
+ })
112
+ end
113
+
98
114
  # --- Futures ---
99
115
 
100
116
  def futures_account(recv_window: 5000)
@@ -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.4"
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.4
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Deltabadger