kucoin_ruby 0.1.3 → 0.1.4

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
  SHA1:
3
- metadata.gz: 7093c1d401923d5deeb7111db6667a17477cd6d5
4
- data.tar.gz: d800824977fbe1a591cc3b2cfb482c05ecfe0932
3
+ metadata.gz: 0aa51631734d147b3f984554ada24a022a8335e0
4
+ data.tar.gz: 8c2879a026e145796e9a87a11bcafd349c163900
5
5
  SHA512:
6
- metadata.gz: c2d9b1e2c16be588a59cae9535d56b3cfd4797f72bca4f6f4e8f05d43eb40e3481d0b6090d7d6cb42f724853a19cd74c892c099ec0323bc876e1060f0c8df4bd
7
- data.tar.gz: 950f3bf435e53e8ca7960ac9d97c52272ddda5de9b773742627cfd1fdd13d642f646e7ce219dead23e08408aa02620a482b7edf3ac9b12d4d553f816d8c07ccb
6
+ metadata.gz: 4d032f9ecf36485febf7f2218d0ecb38ff92b04ec625b2556023fb3d8b13c1187c2b488398ebfe47ea9fbc0a17f59c2a87c48fdabbb3797984c03f932fa76e2f
7
+ data.tar.gz: 18e992c7e9069af0ea63e6961a6fd98d985cf1235507c030bfcf721351c7566a4282d9e5a2e229164f30954602a09a63217ef24a634b062ff35fbc4e8a8e6426
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.1.4
2
+
3
+ ### Changed
4
+
5
+ - Fix error with to_param ruby compatibility
6
+ - Add Exceptions
7
+ - Handel Kucoin API response
8
+
1
9
  ## 0.1.3
2
10
 
3
11
  ### Changed
data/Gemfile.lock CHANGED
@@ -1,17 +1,26 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kucoin_ruby (0.1.3)
4
+ kucoin_ruby (0.1.4)
5
+ addressable
5
6
  httparty
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
11
+ addressable (2.5.2)
12
+ public_suffix (>= 2.0.2, < 4.0)
13
+ coderay (1.1.2)
10
14
  diff-lcs (1.3)
11
15
  httparty (0.15.6)
12
16
  multi_xml (>= 0.5.2)
17
+ method_source (0.9.0)
13
18
  multi_xml (0.6.0)
14
19
  openssl (2.0.6)
20
+ pry (0.11.3)
21
+ coderay (~> 1.1.0)
22
+ method_source (~> 0.9.0)
23
+ public_suffix (3.0.1)
15
24
  rake (10.5.0)
16
25
  rspec (3.7.0)
17
26
  rspec-core (~> 3.7.0)
@@ -34,6 +43,7 @@ DEPENDENCIES
34
43
  bundler (~> 1.16)
35
44
  kucoin_ruby!
36
45
  openssl
46
+ pry
37
47
  rake (~> 10.0)
38
48
  rspec
39
49
 
data/kucoin_ruby.gemspec CHANGED
@@ -25,6 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "rake", "~> 10.0"
26
26
  spec.add_development_dependency "rspec"
27
27
  spec.add_development_dependency "openssl"
28
+ spec.add_development_dependency "pry"
28
29
 
29
30
  spec.add_dependency "httparty"
31
+ spec.add_dependency "addressable"
30
32
  end
@@ -0,0 +1,6 @@
1
+ module KucoinRuby
2
+ module Exceptions
3
+ class Base < StandardError
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,30 @@
1
+ module KucoinRuby
2
+ module Exceptions
3
+ class ResponseError < Base
4
+ attr_reader :response
5
+
6
+ def initialize(response)
7
+ @response = response
8
+ end
9
+
10
+ def to_s
11
+ super +
12
+ format(' (%s)', data.map { |k, v| %(#{k}: "#{v}") }.join(', '))
13
+ end
14
+
15
+ def error_code
16
+ data[:error_code] || data['error_code']
17
+ end
18
+
19
+ private
20
+
21
+ def data
22
+ @data ||= begin
23
+ JSON.parse(response.body)
24
+ rescue JSON::ParserError
25
+ { error_code: response.status, uri: response.env.url.to_s }
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -5,11 +5,11 @@ module KucoinRuby
5
5
  API_HOST = 'https://api.kucoin.com'
6
6
 
7
7
  def self.key
8
- ENV['KUCOIN_KEY']
8
+ ENV['KUCOIN_KEY'] || 'fake_key'
9
9
  end
10
10
 
11
11
  def self.secret
12
- ENV['KUCOIN_SECRET']
12
+ ENV['KUCOIN_SECRET'] || 'fake_secret'
13
13
  end
14
14
 
15
15
  def self.headers(nonce, signature)
@@ -24,26 +24,35 @@ module KucoinRuby
24
24
 
25
25
  def self.get(endpoint)
26
26
  uri = "#{API_HOST}#{endpoint}"
27
- HTTParty.get(uri)
27
+ handle_response(HTTParty.get(uri))
28
28
  end
29
29
 
30
30
  def self.signed_get(endpoint, query_string = nil)
31
31
  nonce, signature = KucoinRuby::Util.sign_message(endpoint, query_string)
32
32
  uri = "#{API_HOST}#{endpoint}?#{query_string}"
33
- HTTParty.get(
33
+ response = HTTParty.get(
34
34
  uri,
35
35
  headers: headers(nonce, signature)
36
36
  )
37
+ handle_response(response)
37
38
  end
38
39
 
39
40
  def self.signed_post(endpoint, payload = nil)
40
41
  nonce, signature = KucoinRuby::Util.sign_message(endpoint)
41
42
  uri = "#{API_HOST}#{endpoint}"
42
- HTTParty.post(
43
+ response = HTTParty.post(
43
44
  uri,
44
45
  headers: headers(nonce, signature),
45
46
  body: payload
46
47
  )
48
+ handle_response(response)
49
+ end
50
+
51
+ def self.handle_response(response)
52
+ if response.code != 200
53
+ raise KucoinRuby::Exceptions::ResponseError.new(response)
54
+ end
55
+ JSON.parse(response.body)
47
56
  end
48
57
  end
49
58
  end
@@ -4,8 +4,8 @@ module KucoinRuby
4
4
  (Time.now.to_f * 1000).to_i.to_s
5
5
  end
6
6
 
7
- def self.build_message(endpoint, nonce, queryString = '')
8
- "#{endpoint}/#{nonce}/#{queryString.to_param}"
7
+ def self.build_message(endpoint, nonce, query_string = '')
8
+ "#{endpoint}/#{nonce}/#{query_string}"
9
9
  end
10
10
 
11
11
  def self.sign(string)
@@ -13,15 +13,23 @@ module KucoinRuby
13
13
  sign_hmac(base)
14
14
  end
15
15
 
16
- def self.sign_message(endpoint, queryString = '')
16
+ def self.sign_message(endpoint, query_string = nil)
17
17
  nc = nonce
18
- [nc, sign(build_message(endpoint, nc, queryString.to_param))]
18
+ query_string = compose_query_string(query_string)
19
+ [nc, sign(build_message(endpoint, nc, query_string))]
19
20
  end
20
21
 
21
22
  private
22
23
 
23
24
  def self.sign_hmac(string)
24
- OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), KucoinRuby::NetConfig.secret, string)
25
+ OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), KucoinRuby::Net.secret, string)
26
+ end
27
+
28
+ def self.compose_query_string(query_string)
29
+ return query_string unless query_string.is_a? Hash
30
+ uri = Addressable::URI.new
31
+ uri.query_values = query_string
32
+ uri.query
25
33
  end
26
34
  end
27
35
  end
@@ -1,3 +1,3 @@
1
1
  module KucoinRuby
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
data/lib/kucoin_ruby.rb CHANGED
@@ -9,8 +9,12 @@ require "kucoin_ruby/operations"
9
9
  require "kucoin_ruby/trading"
10
10
  require "kucoin_ruby/market"
11
11
 
12
+ require "kucoin_ruby/exceptions/base"
13
+ require "kucoin_ruby/exceptions/response_error"
14
+
12
15
  require "openssl"
13
16
  require "httparty"
17
+ require "addressable/uri"
14
18
 
15
19
  module KucoinRuby
16
20
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kucoin_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - lalo
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: httparty
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,20 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: addressable
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  description: KuCoin Ruby API Gem
84
112
  email:
85
113
  - abelardogilm@gmail.com
@@ -100,6 +128,8 @@ files:
100
128
  - kucoin_ruby.gemspec
101
129
  - lib/kucoin_ruby.rb
102
130
  - lib/kucoin_ruby/currency.rb
131
+ - lib/kucoin_ruby/exceptions/base.rb
132
+ - lib/kucoin_ruby/exceptions/response_error.rb
103
133
  - lib/kucoin_ruby/inviting.rb
104
134
  - lib/kucoin_ruby/language.rb
105
135
  - lib/kucoin_ruby/market.rb