module GrepdataClient::Utils
Public Class Methods
cache_buster()
click to toggle source
# File lib/grepdata_client/utils.rb, line 7 def self.cache_buster Time.now.getutc.to_i.to_s end
check_attributes(name, options)
click to toggle source
# File lib/grepdata_client/utils.rb, line 24 def self.check_attributes(name, options) params = options[:params] required = options[:required] missing = [] required.each_key do |key| if not params[key].is_a? required[key] message = "#{name} missing required attribute #{key.to_s} of type #{required[key].name}" missing.push message puts "Warning: #{message}" end end raise "Error: #{name} missing required attributes" if missing.length > 0 end
date_format()
click to toggle source
# File lib/grepdata_client/utils.rb, line 3 def self.date_format "%Y%m%d%H%M" end
default_expiration()
click to toggle source
# File lib/grepdata_client/utils.rb, line 11 def self.default_expiration (Time.now.utc + (24*60*60)).strftime Utils.date_format end
format_params(action, params)
click to toggle source
# File lib/grepdata_client/utils.rb, line 46 def self.format_params(action, params) result = {} result[:endpoint] = params[:endpoint] if params[:endpoint] result[:datamart] = params[:datamart] if params[:datamart] result[:metrics] = params[:metrics].join(',') if params[:metrics] result[:dimensions] = params[:dimensions].join(',') if params[:dimensions] result[:computed_dimensions] = params[:computed_dimensions] if params[:computed_dimensions] result[:filters] = params[:filters].to_json if params[:filters] result[:time_interval] = params[:time_interval] if params[:time_interval] result[:type] = params[:type] if params[:type] result[:order_by] = params[:order_by].join(',') if params[:order_by] result[:max_rows] = params[:max_rows] if params[:max_rows] result[:limit] = params[:limit] if params[:limit] result[:limit_after_max] = params[:limit_after_max] if params[:limit_after_max] result[:offset] = params[:offset] if params[:offset] if params[:sortMetric] limit_by_metric = params[:sortMetric] elsif params[:limit_by_metric] limit_by_metric = params[:limit_by_metric] end result[:limit_by_metric] = limit_by_metric if limit_by_metric result[:include_remainder] = params[:include_remainder] if params[:include_remainder] result[:include_dimension_lists] = params[:include_dimension_lists] if params[:include_dimension_lists] result[:include_zero_values] = params[:include_zero_values] if params[:include_zero_values] if action == "funneling" steps = [] params[:steps].each do |step| step[:start_date] = params[:start_date] step[:end_date] = params[:end_date] steps.push step end result[:steps] = { :steps => steps }.to_json result[:funnel_dimension] = params[:funnel_dimension] else result[:start_date] = params[:start_date] result[:end_date] = params[:end_date] end result[:api_key] = params[:api_key] if params[:api_key] result[:token] = params[:token] if params[:token] result[:signature] = params[:signature] if params[:signature] result[:restricted] = params[:restricted] if params[:restricted] result[:expiration] = params[:expiration] if params[:expiration] result end
generate_key(api_key, options)
click to toggle source
# File lib/grepdata_client/utils.rb, line 15 def self.generate_key(api_key, options) identity = "#{options[:datamart]}\n" identity += "#{options[:values]}\n" if options[:values].length > 0 identity += options[:expiration] #hash identity using HMAC-SHA1. return as base64 encoded string Base64.encode64(OpenSSL::HMAC.digest('sha1', api_key, identity)).chomp end
preprocess_dates(params, attributes)
click to toggle source
# File lib/grepdata_client/utils.rb, line 39 def self.preprocess_dates(params, attributes) attributes.each do |attr| date = DateTime.parse params[attr] params[attr] = date.strftime Utils.date_format end end