cns 2.1.7 → 2.1.9

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: dfc8b7b9035f9c9b1e4b6f5582f34f0ea84a3f21c386579ffb056399fb42a900
4
- data.tar.gz: 15ad03176b40ee6889c8eabc5e2623fc6d41a22aa5f31fb76af12d53bf229b5c
3
+ metadata.gz: f5e34a759d5a3dc566f918d6e0822311511ef817a26b4f5cda3792129306e2d9
4
+ data.tar.gz: 31748b2db5858844b87ae861ba7353a58c07bb5d3ab71e452257a8f731ce33cc
5
5
  SHA512:
6
- metadata.gz: f8603ef653033e2c3b073abcd7a6562ff30c3cc5f34e28b3f4a7c1828b6c82d4bc7bf25d9911b367f0519b6f6127430241a703f61313849d713f44cabcf3f474
7
- data.tar.gz: 2f9fa82bf4c9c23693dbb0e1047abc4111f8b30dd2e9dcd413294e80e8d722369ac87117a19b79386ff18aca1204d4d609c6436b9e8a734f79a645751e6fca27
6
+ metadata.gz: 9eba36bdb69b39ebe7e87dd42860d05ce72fb47cf0ff9ad164e387cf8ca4ea7cb138f840cd956a9591b8c0daf74c3ee9042b8c652ce3d64930425c9904955630
7
+ data.tar.gz: d77d6f77d9754994e3282e21c0394389644ba5df1f54e83f4548dbf820128b434a404a8dc08a72661df8fcdc7b79620937ffad941ad8e96510309cc080326351
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cns (2.1.7)
4
+ cns (2.1.9)
5
5
  curb
6
6
  faraday
7
7
  faraday-retry
@@ -112,7 +112,7 @@ GEM
112
112
  multi_json (1.19.1)
113
113
  net-http (0.9.1)
114
114
  uri (>= 0.11.1)
115
- nokogiri (1.19.0-x86_64-linux-gnu)
115
+ nokogiri (1.19.1-x86_64-linux-gnu)
116
116
  racc (~> 1.4)
117
117
  observer (0.1.2)
118
118
  open3 (0.2.1)
data/lib/cns/apice.rb CHANGED
@@ -40,30 +40,25 @@ module Cns
40
40
  # @return [Array<Hash>] trades bitcoinde
41
41
  def trades_de(tsp = nil)
42
42
  prm = {state: 1}
43
- prm[:date_start] = Time.at(tsp).utc.iso8601 if tsp
44
- pag_de_req("#{API[:de]}/trades", {state: 1}, :trades)
43
+ # Bitcoin.de API needs round UTC Time down to nearest 15-minute mark (00,15,30,45) and format as RFC 3339 with +00:00
44
+ prm[:date_start] = Time.at(tsp).utc.then { |t| Time.utc(t.year, t.month, t.day, t.hour, 0, 0).strftime('%Y-%m-%dT%H:%M:%S+00:00') } if tsp
45
+ pag_de_req("#{API[:de]}/trades", prm, :trades)
45
46
  rescue Curl::Err::CurlError
46
47
  []
47
48
  end
48
49
 
49
50
  # Get deposits from Bitcoin.de, uniformly formatted
50
- # @param [Integer] tsp optional unix timestamp (seconds) to fetch deposits from (start date on bitcoin.de API)
51
51
  # @return [Array<Hash>] depositos uniformizados bitcoinde
52
- def deposits_de(tsp = nil)
53
- prm = {state: 2}
54
- prm[:date_start] = Time.at(tsp).utc.iso8601 if tsp
55
- pag_de_req("#{API[:de]}/btc/deposits", {state: 2}, :deposits) { |i| i.map { |h| deposit_unif(h) } }
52
+ def deposits_de
53
+ pag_de_req("#{API[:de]}/btc/deposits", {}, :deposits) { |i| i.map { |h| deposit_unif(h) } }
56
54
  rescue Curl::Err::CurlError
57
55
  []
58
56
  end
59
57
 
60
58
  # Get withdrawals from Bitcoin.de, uniformly formatted
61
- # @param [Integer] tsp optional unix timestamp (seconds) to fetch withdrawals from (start date on bitcoin.de API)
62
59
  # @return [Array<Hash>] withdrawals uniformizadas bitcoinde
63
60
  def withdrawals_de(tsp = nil)
64
- prm = {state: 1}
65
- prm[:date_start] = Time.at(tsp).utc.iso8601 if tsp
66
- pag_de_req("#{API[:de]}/btc/withdrawals", {state: 1}, :withdrawals) { |i| i.map { |h| withdrawal_unif(h) } }
61
+ pag_de_req("#{API[:de]}/btc/withdrawals", {}, :withdrawals) { |i| i.map { |h| withdrawal_unif(h) } }
67
62
  rescue Curl::Err::CurlError
68
63
  []
69
64
  end
@@ -130,6 +125,10 @@ module Cns
130
125
  sleep(@lpag - Time.now + 2) if @lpag && Time.now - @lpag < 2
131
126
  ops = prm.merge({nonce: nnc, ofs: ofs})
132
127
  rcrl(@curl, "#{API[:us]}/#{uri}", method: 'POST', post_data: ops, headers: hus(uri, ops))
128
+ unless @curl.response_code == 200
129
+ puts("Kraken API returned non-200 status: #{@curl.response_code} for #{uri}")
130
+ break
131
+ end
133
132
  bth = pjsn(@curl).fetch(:result, {}).fetch(key, []).map { |k, v| us_unif(k, v) }
134
133
  break if bth.empty?
135
134
 
@@ -152,10 +151,16 @@ module Cns
152
151
  loop do
153
152
  url = "#{uri}?#{URI.encode_www_form(prm.merge(page: pag))}"
154
153
  rcrl(@curl, url, headers: hde(url))
154
+ unless @curl.response_code == 200
155
+ puts("Bitcoin.de API returned non-200 status: #{@curl.response_code} for #{url}")
156
+ break
157
+ end
155
158
  res = pjsn(@curl)
156
159
  bth = res.fetch(key, [])
157
160
  ary.concat(block_given? ? yield(bth) : bth)
158
- break if res[:page]&.fetch(:current, 0)&.>= res[:page]&.fetch(:last, 0)
161
+ current = res.dig(:page, :current) || 1
162
+ last = res.dig(:page, :last) || 1
163
+ break if current >= last || bth.empty?
159
164
 
160
165
  pag += 1
161
166
  end
data/lib/cns/bitcoinde.rb CHANGED
@@ -161,7 +161,7 @@ module Cns
161
161
  memoize def exd
162
162
  # unix timestamp para obter transacoes 24x60x60 = 86400 segundos
163
163
  tsp = ops&.[](:d)&.positive? ? Integer(Time.now - (ops[:d] * 86_400)) : nil
164
- {sl: pdea(api.account_de), tt: pdet(api.trades_de(tsp)), tl: pdel(api.deposits_de(tsp) + api.withdrawals_de(tsp))}
164
+ {sl: pdea(api.account_de), tt: pdet(api.trades_de(tsp)), tl: pdel(api.deposits_de + api.withdrawals_de)}
165
165
  end
166
166
 
167
167
  # @return [Array<String>] indices trades bigquery
data/lib/cns/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cns
4
- VERSION = '2.1.7'
4
+ VERSION = '2.1.9'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cns
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.7
4
+ version: 2.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hernâni Rodrigues Vaz