Class: Altadata::Client
- Inherits:
-
Object
- Object
- Altadata::Client
- Defined in:
- lib/altadata/client.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
Returns the value of attribute api_key.
Instance Method Summary collapse
-
#condition_in(condition_column, condition_value) ⇒ Object
‘In’ condition by given column and value in the retrieve data process.
-
#condition_not_in(condition_column, condition_value) ⇒ Object
‘Not in’ condition by given column and value in the retrieve data process.
-
#equal(condition_column, condition_value) ⇒ Object
‘Equal’ condition by given column and value in the retrieve data process.
-
#get_data(product_code, limit = nil) ⇒ Object
Initializes retrieve data process.
-
#get_header(product_code) ⇒ Object
Retrieves data header as an array.
-
#greater_than(condition_column, condition_value) ⇒ Object
‘Greater than’ condition by given column and value in the retrieve data process.
-
#greater_than_equal(condition_column, condition_value) ⇒ Object
‘Greater than equal’ condition by given column and value in the retrieve data process.
-
#initialize(api_key) ⇒ Client
constructor
Sets the api key and api urls required to access the Altadata API.
-
#less_than(condition_column, condition_value) ⇒ Object
‘Less than’ condition by given column and value in the retrieve data process.
-
#less_than_equal(condition_column, condition_value) ⇒ Object
‘Less than equal’ condition by given column and value in the retrieve data process.
-
#list_subscription ⇒ Object
Retrieves customer’s subscription info.
-
#load ⇒ Object
Fetch data with configurations given before.
-
#not_equal(condition_column, condition_value) ⇒ Object
‘Not Equal’ condition by given column and value in the retrieve data process.
-
#select(selected_column) ⇒ Object
Select specific columns in the retrieve data process.
-
#sort(order_column, order_method = 'asc') ⇒ Object
Sort data by given column and method in the retrieve data process.
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_key ⇒ Object
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_subscription ⇒ Object
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 |
#load ⇒ Object
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 |