Class: Altadata::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/altadata/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key) ⇒ Client

Sets the api key and api urls required to access the Altadata API.



12
13
14
15
16
# File 'lib/altadata/client.rb', line 12

def initialize(api_key)
  @api_key = api_key
  @data_api_url = 'https://www.altadata.io/data/api/'
  @subscription_api_url = "https://www.altadata.io/subscription/api/subscriptions?api_key=#{@api_key}"
end

Instance Attribute Details

#api_keyObject

Returns the value of attribute api_key.



8
9
10
# File 'lib/altadata/client.rb', line 8

def api_key
  @api_key
end

Instance Method Details

#condition_in(condition_column, condition_value) ⇒ Object

‘In’ condition by given column and value in the retrieve data process



169
170
171
172
173
174
175
176
177
# File 'lib/altadata/client.rb', line 169

def condition_in(condition_column, condition_value)
  check_parameter('condition_column', condition_column, String)
  check_parameter('condition_value', condition_value, Array)

  condition_value_text = condition_value.join(',')
  @request_url_base += "&#{condition_column}_in=#{condition_value_text}"

  self
end

#condition_not_in(condition_column, condition_value) ⇒ Object

‘Not in’ condition by given column and value in the retrieve data process



181
182
183
184
185
186
187
188
189
# File 'lib/altadata/client.rb', line 181

def condition_not_in(condition_column, condition_value)
  check_parameter('condition_column', condition_column, String)
  check_parameter('condition_value', condition_value, Array)

  condition_value_text = condition_value.join(',')
  @request_url_base += "&#{condition_column}_notin=#{condition_value_text}"

  self
end

#equal(condition_column, condition_value) ⇒ Object

‘Equal’ condition by given column and value in the retrieve data process



109
110
111
112
113
114
115
# File 'lib/altadata/client.rb', line 109

def equal(condition_column, condition_value)
  check_parameter('condition_column', condition_column, String)

  @request_url_base += "&#{condition_column}_eq=#{condition_value}"

  self
end

#get_data(product_code, limit = nil) ⇒ Object

Initializes retrieve data process



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/altadata/client.rb', line 69

def get_data(product_code, limit = nil)
  check_parameter('product_code', product_code, String)

  unless limit.nil?
    check_parameter('limit', limit, Integer)
    raise 'limit parameter must be greater than 0' unless limit.positive?
  end

  @limit = limit
  @request_url_base = "#{@data_api_url}#{product_code}/?format=json"

  self
end

#get_header(product_code) ⇒ Object

Retrieves data header as an array



59
60
61
62
63
64
65
# File 'lib/altadata/client.rb', line 59

def get_header(product_code)
  check_parameter('product_code', product_code, String)

  request_url = "#{@data_api_url}#{product_code}/?format=json&page=1&api_key=#{@api_key}"
  response = Faraday.get(request_url)
  JSON.parse(response.body)[0].keys
end

#greater_than(condition_column, condition_value) ⇒ Object

‘Greater than’ condition by given column and value in the retrieve data process



129
130
131
132
133
134
135
# File 'lib/altadata/client.rb', line 129

def greater_than(condition_column, condition_value)
  check_parameter('condition_column', condition_column, String)

  @request_url_base += "&#{condition_column}_gt=#{condition_value}"

  self
end

#greater_than_equal(condition_column, condition_value) ⇒ Object

‘Greater than equal’ condition by given column and value in the retrieve data process



139
140
141
142
143
144
145
# File 'lib/altadata/client.rb', line 139

def greater_than_equal(condition_column, condition_value)
  check_parameter('condition_column', condition_column, String)

  @request_url_base += "&#{condition_column}_gte=#{condition_value}"

  self
end

#less_than(condition_column, condition_value) ⇒ Object

‘Less than’ condition by given column and value in the retrieve data process



149
150
151
152
153
154
155
# File 'lib/altadata/client.rb', line 149

def less_than(condition_column, condition_value)
  check_parameter('condition_column', condition_column, String)

  @request_url_base += "&#{condition_column}_lt=#{condition_value}"

  self
end

#less_than_equal(condition_column, condition_value) ⇒ Object

‘Less than equal’ condition by given column and value in the retrieve data process



159
160
161
162
163
164
165
# File 'lib/altadata/client.rb', line 159

def less_than_equal(condition_column, condition_value)
  check_parameter('condition_column', condition_column, String)

  @request_url_base += "&#{condition_column}_lte=#{condition_value}"

  self
end

#list_subscriptionObject

Retrieves customer’s subscription info



45
46
47
48
49
# File 'lib/altadata/client.rb', line 45

def list_subscription
  response = Faraday.get(@subscription_api_url)
  response_json = JSON.parse(response.body)
  fix_response(response_json)
end

#loadObject

Fetch data with configurations given before



193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/altadata/client.rb', line 193

def load
  data = []
  page = 1
  total_size = 0

  loop do
    request_url = "#{@request_url_base}&page=#{page}&api_key=#{@api_key}"
    response = Faraday.get(request_url)

    response_json = JSON.parse(response.body)

    break if response_json.empty?

    response_json.each do |item|
      data << item
    end

    unless @limit.nil?
      total_size += response_json.length

      break if total_size > @limit
    end

    page += 1
  end

  data = data.first(@limit) unless @limit.nil?

  data
end

#not_equal(condition_column, condition_value) ⇒ Object

‘Not Equal’ condition by given column and value in the retrieve data process



119
120
121
122
123
124
125
# File 'lib/altadata/client.rb', line 119

def not_equal(condition_column, condition_value)
  check_parameter('condition_column', condition_column, String)

  @request_url_base += "&#{condition_column}_neq=#{condition_value}"

  self
end

#select(selected_column) ⇒ Object

Select specific columns in the retrieve data process



85
86
87
88
89
90
91
92
# File 'lib/altadata/client.rb', line 85

def select(selected_column)
  check_parameter('selected_column', selected_column, Array)

  selected_column_text = selected_column.join(',')
  @request_url_base += "&columns=#{selected_column_text}"

  self
end

#sort(order_column, order_method = 'asc') ⇒ Object

Sort data by given column and method in the retrieve data process



96
97
98
99
100
101
102
103
104
105
# File 'lib/altadata/client.rb', line 96

def sort(order_column, order_method = 'asc')
  check_parameter('order_column', order_column, String)
  check_parameter('order_method', order_method, String)
  order_method_array = %w[asc desc]
  raise "order_method parameter must be 'asc' or 'desc'" unless order_method_array.include? order_method

  @request_url_base += "&order_by=#{order_column}_#{order_method}"

  self
end