plausible_api 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +41 -5
- data/lib/plausible_api/api/client.rb +15 -5
- data/lib/plausible_api/api/realtime/visitors.rb +5 -2
- data/lib/plausible_api/api/stats/aggregate.rb +13 -7
- data/lib/plausible_api/api/stats/timeseries.rb +15 -2
- data/lib/plausible_api/version.rb +1 -1
- data/plausible_api.gemspec +3 -2
- metadata +8 -9
- data/lib/plausible_api/request.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8be1224dad0283128a3e21c2d4e53061845ddc2424e2a89655eb4a129925cb4d
|
4
|
+
data.tar.gz: b665e6e0dea74c2fe9e1f1309a418cbfe2a5f9be55a4ac0f14845ba6a207fc70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 645bd976b0dc10c743232daa6752bee9bb5d9e29ee96235ac0d6efa541ffa1d3fe8e3518e510701de377dd3621e44a4c9b0c54cb99a7b50ffe8b85879036ce8c
|
7
|
+
data.tar.gz: 312e92ef37577f2e58e7ffabf72320bc8c9fc431c651779f0ccd2d264d0aa144e08a10ac8a4c71375ceaed5a17d0814b7d36e8d4446cbcc41278d7b775f3d43b
|
data/README.md
CHANGED
@@ -4,13 +4,50 @@ It's based on the WIP [API guide](https://plausible.io/docs/stats-api)
|
|
4
4
|
|
5
5
|
## Usage
|
6
6
|
Add this gem to your Gemfile:
|
7
|
-
```
|
7
|
+
```rb
|
8
8
|
gem 'plausible_api'
|
9
9
|
```
|
10
|
-
Then you need to initialize a Client
|
11
|
-
```
|
10
|
+
Then you need to initialize a Client with your `site_id` (the domain) and your `token`.
|
11
|
+
```rb
|
12
12
|
c = PlausibleApi::Client.new(site_id: 'dailytics.com', token: '123123')
|
13
|
-
|
13
|
+
```
|
14
|
+
|
15
|
+
### Stats > Aggregate
|
16
|
+
|
17
|
+
You have all these options to get the aggregate stats
|
18
|
+
```rb
|
19
|
+
# Use the default parameters (3mo period + the 4 main metrics)
|
20
|
+
c.aggregate
|
21
|
+
|
22
|
+
# Set parameters (period, metrics, filter, date)
|
23
|
+
c.aggregate({ period: '3d' })
|
24
|
+
c.aggregate({ period: '3d', metrics: 'visitors,pageviews' })
|
25
|
+
c.aggregate({ period: '3d', metrics: 'visitors,pageviews', filter: 'event:page==/order/confirmation' })
|
26
|
+
|
27
|
+
# You'll get something like this:
|
28
|
+
=> {"bounce_rate"=>{"value"=>81.0}, "pageviews"=>{"value"=>29}, "visit_duration"=>{"value"=>247.0}, "visitors"=>{"value"=>14}}
|
29
|
+
```
|
30
|
+
|
31
|
+
### Stats > Timeseries
|
32
|
+
|
33
|
+
You have all these options to get the timeseries
|
34
|
+
```rb
|
35
|
+
# Use the default parameters (3mo period)
|
36
|
+
c.timeseries
|
37
|
+
|
38
|
+
# Set parameters (period, metrics, filter, date)
|
39
|
+
c.timeseries({ period: '3d' })
|
40
|
+
c.timeseries({ period: '3d', filter: 'event:page==/order/confirmation', date: '2020/02/10' })
|
41
|
+
|
42
|
+
# You'll get something like this:
|
43
|
+
=> [{"date"=>"2021-01-11", "value"=>100}, {"date"=>"2021-01-12", "value"=>120}, {"date"=>"2021-01-13", "value"=>80}]
|
44
|
+
```
|
45
|
+
|
46
|
+
### Realtime >> Visitors
|
47
|
+
|
48
|
+
You have a uniq way to call this data
|
49
|
+
```rb
|
50
|
+
c.realtime_visitors
|
14
51
|
```
|
15
52
|
|
16
53
|
## Development
|
@@ -24,5 +61,4 @@ irb(main) > c.aggregate(period: '1w', metrics: 'visitors,pageviews,bounce_rate,v
|
|
24
61
|
```
|
25
62
|
|
26
63
|
## Todo
|
27
|
-
- Add support for other endpoints
|
28
64
|
- Tests
|
@@ -14,16 +14,26 @@ module PlausibleApi
|
|
14
14
|
|
15
15
|
def initialize(site_id:, token:)
|
16
16
|
@site_id = site_id.to_s
|
17
|
-
@token = token
|
17
|
+
@token = token.to_s
|
18
18
|
end
|
19
19
|
|
20
|
-
def aggregate(
|
21
|
-
call PlausibleApi::Stats::Aggregate.new(
|
20
|
+
def aggregate(options = {})
|
21
|
+
call PlausibleApi::Stats::Aggregate.new(options)
|
22
|
+
end
|
23
|
+
|
24
|
+
def timeseries(options = {})
|
25
|
+
call PlausibleApi::Stats::Timeseries.new(options)
|
26
|
+
end
|
27
|
+
|
28
|
+
def realtime_visitors
|
29
|
+
call PlausibleApi::Realtime::Visitors.new
|
22
30
|
end
|
23
31
|
|
24
32
|
private
|
25
|
-
def call(
|
26
|
-
|
33
|
+
def call(api)
|
34
|
+
url = "#{BASE_URL}#{api.request_url.gsub('$SITE_ID', @site_id)}"
|
35
|
+
puts url
|
36
|
+
res = Faraday.get(url) do |req|
|
27
37
|
req.headers['Authorization'] = "Bearer #{@token}"
|
28
38
|
end
|
29
39
|
JSON.parse res.body
|
@@ -1,18 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'plausible_api/request'
|
4
|
-
|
5
3
|
module PlausibleApi
|
6
4
|
module Stats
|
7
5
|
class Aggregate
|
8
|
-
|
9
|
-
|
10
|
-
@
|
11
|
-
@
|
6
|
+
def initialize(options = {})
|
7
|
+
@period = options[:period] || '3mo'
|
8
|
+
@metrics = options[:metrics] || 'visitors,pageviews,bounce_rate,visit_duration'
|
9
|
+
@filter = options[:filter]
|
10
|
+
@date = options[:date]
|
12
11
|
end
|
13
12
|
|
14
13
|
def request_url
|
15
|
-
"api/v1/stats/aggregate?site_id=$SITE_ID&period=#{@period}&metrics=#{@metrics}"
|
14
|
+
url = "/api/v1/stats/aggregate?site_id=$SITE_ID&period=#{@period}&metrics=#{@metrics}"
|
15
|
+
if @filter
|
16
|
+
url += "&filter=#{CGI.escape(@filter)}"
|
17
|
+
end
|
18
|
+
if @date
|
19
|
+
url += "&date=#{@date}"
|
20
|
+
end
|
21
|
+
url
|
16
22
|
end
|
17
23
|
end
|
18
24
|
end
|
@@ -1,11 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'plausible_api/request'
|
4
|
-
|
5
3
|
module PlausibleApi
|
6
4
|
module Stats
|
7
5
|
class Timeseries
|
6
|
+
def initialize(options = {})
|
7
|
+
@period = options[:period] || '3mo'
|
8
|
+
@filter = options[:filter]
|
9
|
+
@date = options[:date]
|
10
|
+
end
|
8
11
|
|
12
|
+
def request_url
|
13
|
+
url = "/api/v1/stats/timeseries?site_id=$SITE_ID&period=#{@period}"
|
14
|
+
if @filter
|
15
|
+
url += "&filter=#{CGI.escape(@filter)}"
|
16
|
+
end
|
17
|
+
if @date
|
18
|
+
url += "&date=#{@date}"
|
19
|
+
end
|
20
|
+
url
|
21
|
+
end
|
9
22
|
end
|
10
23
|
end
|
11
24
|
end
|
data/plausible_api.gemspec
CHANGED
@@ -12,10 +12,11 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.description = 'A very humble wrapper for the new API by Plausible'
|
13
13
|
s.authors = ['Gustavo Garcia']
|
14
14
|
s.email = 'gustavo@dailytics.com'
|
15
|
-
s.homepage = 'https://
|
15
|
+
s.homepage = 'https://github.com/dailytics/plausible-api'
|
16
16
|
s.license = 'MIT'
|
17
17
|
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec)/}) }
|
18
18
|
s.require_paths = ['lib']
|
19
19
|
|
20
|
-
s.add_dependency 'faraday'
|
20
|
+
s.add_dependency 'faraday', '~> 1.0'
|
21
|
+
s.required_ruby_version = '>= 2.4'
|
21
22
|
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plausible_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gustavo Garcia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '1.0'
|
27
27
|
description: A very humble wrapper for the new API by Plausible
|
28
28
|
email: gustavo@dailytics.com
|
29
29
|
executables: []
|
@@ -37,10 +37,9 @@ files:
|
|
37
37
|
- lib/plausible_api/api/realtime/visitors.rb
|
38
38
|
- lib/plausible_api/api/stats/aggregate.rb
|
39
39
|
- lib/plausible_api/api/stats/timeseries.rb
|
40
|
-
- lib/plausible_api/request.rb
|
41
40
|
- lib/plausible_api/version.rb
|
42
41
|
- plausible_api.gemspec
|
43
|
-
homepage: https://
|
42
|
+
homepage: https://github.com/dailytics/plausible-api
|
44
43
|
licenses:
|
45
44
|
- MIT
|
46
45
|
metadata: {}
|
@@ -52,7 +51,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
52
51
|
requirements:
|
53
52
|
- - ">="
|
54
53
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
54
|
+
version: '2.4'
|
56
55
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
56
|
requirements:
|
58
57
|
- - ">="
|