Sha256: 3bea93ffe096f6d7dc08be4ee2521f733fbebb42acb4d7de4e6f87130571ab07

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

require 'plausible_api/stats/realtime/visitors'
require 'plausible_api/stats/aggregate'
require 'plausible_api/stats/timeseries'

require 'json'
require "net/http"
require "uri"
require "cgi"

module PlausibleApi
  class Client
    
    BASE_URL = 'https://plausible.io'

    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 realtime_visitors
      call PlausibleApi::Stats::Realtime::Visitors.new
    end

    def test
      realtime_visitors.is_a? Integer
    end

    private
    def call(api)      
      url = "#{BASE_URL}#{api.request_url.gsub('$SITE_ID', @site_id)}"
      uri = URI.parse(url)

      req = Net::HTTP::Get.new(uri.request_uri)
      req.add_field('Authorization', "Bearer #{@token}")

      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = true  

      JSON.parse http.request(req).body
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
plausible_api-0.1.2 lib/plausible_api/client.rb