Sha256: 0a7663f2fae9b80f0558a9c5bb7ba4da50e383b71ee701c60a4cbd88ffb5ed41
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
# frozen_string_literal: true require "plausible_api/stats/base" require "plausible_api/stats/realtime/visitors" require "plausible_api/stats/aggregate" require "plausible_api/stats/timeseries" require "plausible_api/stats/breakdown" require "plausible_api/event/base" require "plausible_api/event/post" require "json" require "net/http" require "uri" require "cgi" module PlausibleApi class Client def initialize(site_id, token) @site_id = site_id.to_s @token = token.to_s end def aggregate(options = {}) call PlausibleApi::Stats::Aggregate.new(options) end def timeseries(options = {}) call PlausibleApi::Stats::Timeseries.new(options) end def breakdown(options = {}) call PlausibleApi::Stats::Breakdown.new(options) end def realtime_visitors call PlausibleApi::Stats::Realtime::Visitors.new end def valid? realtime_visitors true rescue false end def event(options = {}) call PlausibleApi::Event::Post.new(options.merge(domain: @site_id)) end private SUCCESS_CODES = %w[200 202].freeze def call(api) raise Error, api.errors unless api.valid? raise ConfigurationError, PlausibleApi.configuration.errors unless PlausibleApi.configuration.valid? url = "#{PlausibleApi.configuration.base_url}#{api.request_url.gsub("$SITE_ID", @site_id)}" uri = URI.parse(url) req = api.request_class.new(uri.request_uri) req.initialize_http_header(api.request_headers) req.add_field("authorization", "Bearer #{@token}") if api.request_auth? req.body = api.request_body if api.request_body? http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true response = http.request(req) if SUCCESS_CODES.include?(response.code) api.parse_response response.body else raise StandardError.new response.body end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
plausible_api-0.3 | lib/plausible_api/client.rb |