Class: Alpaca::News::Api::Rest::Client

Inherits:
Base
  • Object
show all
Defined in:
lib/alpaca/news/api/rest/client.rb

Instance Method Summary collapse

Methods inherited from Base

#client

Instance Method Details

#get(endpoint, params = {}, custom_headers = {}) ⇒ Hash

Send GET request to the specific endpoint

Parameters:

  • endpoint (String)

    API request endpoint

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

    API request parameters

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

    API request custom headers

Returns:

  • (Hash)

    API response

Raises:



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/alpaca/news/api/rest/client.rb', line 18

def get(endpoint, params = {}, custom_headers = {})
  args = {
    method: :get,
    url: url_for(endpoint, params),
    headers: custom_headers.merge(headers)
  }
  body = RestClient::Request.execute(args).body
  JSON.parse(body).deep_transform_keys { |key| key.to_s.underscore.to_sym }
rescue RestClient::Exception => e
  raise Alpaca::News::Api::Error, e.message
end

#headersHash

API headers Apca-Api-Key-Id, Apca-Api-Secret-Key, User-Agent

Returns:

  • (Hash)


42
43
44
45
46
47
48
# File 'lib/alpaca/news/api/rest/client.rb', line 42

def headers
  {
    'Apca-Api-Key-Id': Alpaca::News::Api.configure.key_id,
    'Apca-Api-Secret-Key': Alpaca::News::Api.configure.secret_key,
    'User-Agent': Alpaca::News::Api.configure.user_agent
  }
end

#url_for(endpoint, params = {}) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/alpaca/news/api/rest/client.rb', line 30

def url_for(endpoint, params = {})
  URI::HTTPS.build(
    host: Alpaca::News::Api.configure.host,
    query: URI.encode_www_form(params || {}),
    path: endpoint
  ).to_s
end