Sha256: 0be9dad3c78708bcc766eb6d62c228ecd27414ad0b54459f47d929cf3d23f468
Contents?: true
Size: 1.56 KB
Versions: 1
Compression:
Stored size: 1.56 KB
Contents
module SimpleAnalyticsApi class Resource BASE_URL = 'https://simpleanalytics.com' attr_accessor :client, :fields, :filters, :domain def initialize(client:, domain: nil, fields: [], filters: {}) @client = client @fields = fields @filters = filters @domain = domain || client.domain @filters[:version] = 5 unless @filters[:version] @fields = [:pageviews] unless @fields.any? end def fields_and_filters fields_and_filters = filters fields_and_filters = filters.merge({ fields: fields.join(',') }) if fields.any? fields_and_filters.sort_by{|k,v| k}.to_h end def parse_response(body) Object.new JSON.parse(body) end def url url = "#{BASE_URL}/#{domain}.json" url << "?#{fields_and_filters.to_a.map { |x| "#{x[0]}=#{x[1]}" }.join("&") }" if fields_and_filters.any? url end def run uri = URI.parse url req = Net::HTTP::Get.new(uri.request_uri) req.add_field('Content-Type', 'application/json') req.add_field('Api-Key', client.api_key) unless client.api_key.empty? req.add_field('User-Id', client.user_id) unless client.user_id.empty? http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true response = http.request(req) raise SimpleAnalyticsApi::Error.new "Api request failed (#{response.body})" unless response.code == "200" raise SimpleAnalyticsApi::Error.new "Api request returned nil (#{response.body})" if response.body.nil? parse_response response.body end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
simple_analytics_api-0.0.2 | lib/simple_analytics_api/resource.rb |