Class: Kucoin::Rest::Client

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Private::Markets

#favorite_symbols, #stick_symbols, #user_market_symbols

Methods included from Private::Trading

#active_orders, #active_orders_map, #cancel_all_orders, #cancel_order, #create_buy_order, #create_order, #create_sell_order, #dealt_orders, #order_detail, #symbol_dealt_orders

Methods included from Private::Balances

#balance, #coin_balance, #wallet_records

Methods included from Private::Transfers

#cancel_withdrawal, #create_withdrawal, #get_coin_address

Methods included from Private::Invitations

#invitation_count, #promotion_reward, #promotion_summary

Methods included from Private::Languages

#change_language

Methods included from Private::User

#user_info

Methods included from Public::Klines

#chart_kline_data, #chart_symbol, #kline_config, #kline_data

Methods included from Public::Markets

#coin_info, #coins, #market_symbols, #markets, #trending_symbols

Methods included from Public::Trades

#trades

Methods included from Public::Orders

#buy_orders, #orders, #sell_orders

Methods included from Public::Ticker

#ticker

Methods included from Public::Languages

#languages

Methods included from Public::Currencies

#exchange_rates

Methods included from Authentication

#authenticate!, #compose_params, #nonce, #sign_message

Methods included from Errors

#error?

Constructor Details

#initialize(configuration: ::Kucoin.configuration) ⇒ Client

Returns a new instance of Client.



6
7
8
9
# File 'lib/kucoin/rest/client.rb', line 6

def initialize(configuration: ::Kucoin.configuration)
  self.configuration    =   configuration
  self.url              =   "#{self.configuration.api_url}/v#{self.configuration.api_version}"
end

Instance Attribute Details

#configurationObject

Returns the value of attribute configuration.



4
5
6
# File 'lib/kucoin/rest/client.rb', line 4

def configuration
  @configuration
end

#urlObject

Returns the value of attribute url.



4
5
6
# File 'lib/kucoin/rest/client.rb', line 4

def url
  @url
end

Instance Method Details

#check_credentials!Object



34
35
36
37
38
# File 'lib/kucoin/rest/client.rb', line 34

def check_credentials!
  unless configured?
    raise ::Kucoin::Errors::MissingConfigError.new("Kucoin gem hasn't been properly configured.")
  end
end

#configured?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/kucoin/rest/client.rb', line 30

def configured?
  !self.configuration.key.to_s.empty? && !self.configuration.secret.to_s.empty?
end

#get(path, params: {}, options: {}) ⇒ Object



53
54
55
# File 'lib/kucoin/rest/client.rb', line 53

def get(path, params: {}, options: {})
  request path, method: :get, params: params, options: options
end

#parse(response) ⇒ Object



48
49
50
51
# File 'lib/kucoin/rest/client.rb', line 48

def parse(response)
  error?(response)
  response
end

#post(path, params: {}, data: {}, options: {}) ⇒ Object



57
58
59
# File 'lib/kucoin/rest/client.rb', line 57

def post(path, params: {}, data: {}, options: {})
  request path, method: :post, params: params, data: data, options: options
end

#request(path, method: :get, params: {}, data: {}, options: {}) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/kucoin/rest/client.rb', line 61

def request(path, method: :get, params: {}, data: {}, options: {})
  should_auth   =   options.fetch(:authenticate, false)
  user_agent    =   options.fetch(:user_agent, self.configuration.faraday.fetch(:user_agent, nil))
  proxy         =   options.fetch(:proxy, nil)
    
  connection    =   Faraday.new(url: to_uri(path)) do |builder|
    builder.headers["User-Agent"]       =   user_agent if !user_agent.to_s.empty?
    builder.headers["Accept-Language"]  =   "en_EN"
    
    builder.headers.merge!(authenticate!(path, params)) if should_auth && method.eql?(:get)
    builder.headers.merge!(authenticate!(path, data))   if should_auth && method.eql?(:post)
    
    builder.request  :url_encoded if method.eql?(:post)
    builder.response :logger      if self.configuration.verbose_faraday?
    builder.response :json

    if proxy
      puts "[Kucoin::Rest::Client] - Will connect to Kucoin using proxy: #{proxy.inspect}" if self.configuration.verbose_faraday?
      builder.proxy = proxy
    end

    builder.adapter self.configuration.faraday.fetch(:adapter, :net_http)
  end
    
  response = case method
    when :get
      connection.get do |request|
        request.params  =   params if params && !params.empty?
      end&.body
    when :post
      connection.post do |request|
        request.body    =   data
        request.params  =   params if params && !params.empty?
      end&.body
  end
  
  parse(response)
end

#signature_path(path) ⇒ Object



44
45
46
# File 'lib/kucoin/rest/client.rb', line 44

def signature_path(path)
  "/v#{self.configuration.api_version}#{path}"
end

#to_uri(path) ⇒ Object



40
41
42
# File 'lib/kucoin/rest/client.rb', line 40

def to_uri(path)
  "#{self.url}#{path}"
end