module Kucoin::Api::Endpoints

Public Class Methods

endpoint_method(client_klass, name, result, parent_var = nil) click to toggle source
# File lib/kucoin/api/endpoints.rb, line 86
def self.endpoint_method client_klass, name, result, parent_var = nil
  child_endpoint_klass = Endpoints.get_klass(name, (parent_var && parent_var.class))

  if parent_var
    parent_var.define_singleton_method name do
      endpoint_var = "@#{name}"
      var = instance_variable_get(endpoint_var) || instance_variable_set(endpoint_var, child_endpoint_klass.new(parent_var.client))
      client_klass.generate_endpoint_methods result: result, parent_var: var
      var
    end
  else
    client_klass.class_exec do
      define_method name do
        endpoint_var = "@#{name}"
        var = instance_variable_get(endpoint_var) || instance_variable_set(endpoint_var, child_endpoint_klass.new(self))
        client_klass.generate_endpoint_methods result: result, parent_var: var
        var
      end
    end
  end
end
get_klass(name, parent=nil) click to toggle source
# File lib/kucoin/api/endpoints.rb, line 82
def self.get_klass name, parent=nil
  Object.const_get("#{parent || 'Kucoin::Api::Endpoints'}::#{name.to_s.split('_').map(&:capitalize).join}")
end

Public Instance Methods

generate_endpoint_methods(result: ENDPOINTS, parent_var: nil) click to toggle source
# File lib/kucoin/api/endpoints.rb, line 108
def generate_endpoint_methods result: ENDPOINTS, parent_var: nil
  result.each do |endpoint_name, _result|
    if _result.is_a?(Hash)
      Kucoin::Api::Endpoints.endpoint_method(self, endpoint_name, _result, parent_var)
    end
  end
end