Class: DhanHQ::BaseAPI

Inherits:
Object
  • Object
show all
Includes:
APIHelper, AttributeHelper
Defined in:
lib/DhanHQ/core/base_api.rb

Overview

Base class for all API resource classes. Delegates HTTP requests to Client and exposes helpers shared by resource wrappers.

Constant Summary collapse

API_TYPE =

Default API type used when a subclass does not override #initialize.

:non_trading_api
HTTP_PATH =

Root path prepended to each endpoint segment.

""

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from AttributeHelper

#camelize_keys, #inspect, #normalize_keys, #snake_case, #titleize_keys

Methods included from APIHelper

#handle_response

Constructor Details

#initialize(api_type: self.class::API_TYPE) ⇒ BaseAPI

Initializes the BaseAPI with the appropriate Client instance

Parameters:

  • api_type (Symbol) (defaults to: self.class::API_TYPE)

    API type (:order_api, :data_api, :non_trading_api)



21
22
23
# File 'lib/DhanHQ/core/base_api.rb', line 21

def initialize(api_type: self.class::API_TYPE)
  @client = DhanHQ::Client.new(api_type: api_type)
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



16
17
18
# File 'lib/DhanHQ/core/base_api.rb', line 16

def client
  @client
end

Instance Method Details

#delete(endpoint) ⇒ Hash, Array

Perform a DELETE request via Client

Parameters:

  • endpoint (String)

    API endpoint

Returns:

  • (Hash, Array)

    The parsed API response



59
60
61
62
# File 'lib/DhanHQ/core/base_api.rb', line 59

def delete(endpoint)
  formatted_params = format_params(endpoint, {})
  handle_response(client.delete(build_path(endpoint), formatted_params))
end

#get(endpoint, params: {}) ⇒ Hash, Array

Perform a GET request via Client

Parameters:

  • endpoint (String)

    API endpoint

  • params (Hash) (defaults to: {})

    Query parameters

Returns:

  • (Hash, Array)

    The parsed API response



30
31
32
33
# File 'lib/DhanHQ/core/base_api.rb', line 30

def get(endpoint, params: {})
  formatted_params = format_params(endpoint, params)
  handle_response(client.get(build_path(endpoint), formatted_params))
end

#post(endpoint, params: {}) ⇒ Hash, Array

Perform a POST request via Client

Parameters:

  • endpoint (String)

    API endpoint

  • params (Hash) (defaults to: {})

    Request body

Returns:

  • (Hash, Array)

    The parsed API response



40
41
42
43
# File 'lib/DhanHQ/core/base_api.rb', line 40

def post(endpoint, params: {})
  formatted_params = format_params(endpoint, params)
  handle_response(client.post(build_path(endpoint), formatted_params))
end

#put(endpoint, params: {}) ⇒ Hash, Array

Perform a PUT request via Client

Parameters:

  • endpoint (String)

    API endpoint

  • params (Hash) (defaults to: {})

    Request body

Returns:

  • (Hash, Array)

    The parsed API response



50
51
52
53
# File 'lib/DhanHQ/core/base_api.rb', line 50

def put(endpoint, params: {})
  formatted_params = format_params(endpoint, params)
  handle_response(client.put(build_path(endpoint), formatted_params))
end