fb-core 1.0.0.alpha5 → 1.0.0.alpha6
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/CHANGELOG.md +2 -1
- data/README.md +34 -4
- data/lib/fb/core/version.rb +1 -1
- data/lib/fb/page.rb +20 -13
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eba1fc16c8b7532b533f2f9de7dab75ce28207e3
|
4
|
+
data.tar.gz: b1a2873d94e44bc65d4f8f1da60924c9df6a43ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 817e444187eb6b6487c78386bc10c34e087ccac19762821d8eb7274331096138e7ab1bfdc8f2889f56a61dc40027883658e0ae08e72cb0fe44435d3ddf4d0a9f
|
7
|
+
data.tar.gz: c2373650288e74af845087a8d28d51caa515844465f452a58accbd6ac1b9d23d58f2bfda297bdcccf310f46607a4139d0ba9105f530c2b3d4355faaed34f58c7
|
data/CHANGELOG.md
CHANGED
@@ -13,4 +13,5 @@ For more information about changelogs, check
|
|
13
13
|
* [FEATURE] Added `Fb::Page#posts`
|
14
14
|
* [FEATURE] Added `Fb::Page#like_count`
|
15
15
|
* [FEATURE] Added `Fb::Page#view_count`
|
16
|
-
* [FEATURE] Added `Fb::Page#
|
16
|
+
* [FEATURE] Added `Fb::Page#weekly_insights`
|
17
|
+
* [FEATURE] Added `Fb::Page#metric_insights`
|
data/README.md
CHANGED
@@ -88,10 +88,10 @@ page.view_count until: Date.today - 7
|
|
88
88
|
# => 10000
|
89
89
|
```
|
90
90
|
|
91
|
-
Fb::Page#
|
91
|
+
Fb::Page#weekly_insights
|
92
92
|
--------------
|
93
93
|
|
94
|
-
`
|
94
|
+
`weekly_insights` allows you to get metrics that are available weekly such as
|
95
95
|
`page_views_total`, `page_impressions`, `page_fan_adds`, etc. Refer to
|
96
96
|
[metrics](https://developers.facebook.com/docs/graph-api/reference/v2.9/insights#availmetrics)
|
97
97
|
for a list of available weekly metrics.
|
@@ -103,17 +103,47 @@ then the values will be for July 14 - July 20.
|
|
103
103
|
```ruby
|
104
104
|
metrics = %i(page_impressions page_fan_adds)
|
105
105
|
page = Fb::Page.new access_token: '--valid-access-token--', id: '--valid-id--'
|
106
|
-
page.
|
106
|
+
page.weekly_insights metrics # sum for July 14 - 20
|
107
107
|
# => {:page_impressions => 1234, :page_fan_adds => 5678}
|
108
108
|
```
|
109
109
|
|
110
110
|
Pass an `until` (`Date`) option such as `Date.today - 7` to fetch 7 days prior to July 14th.
|
111
111
|
|
112
112
|
```ruby
|
113
|
-
page.
|
113
|
+
page.weekly_insights metrics, until: Date.today - 7 # sum for July 8 - 14
|
114
114
|
# => {:page_impressions => 1234, :page_fan_adds => 5678}
|
115
115
|
```
|
116
116
|
|
117
|
+
Fb::Page#metric_insights
|
118
|
+
--------------
|
119
|
+
|
120
|
+
You can get an individual metric through using `metric_insights` which takes a
|
121
|
+
metric, period, and options (since & until). Refer to
|
122
|
+
[metrics](https://developers.facebook.com/docs/graph-api/reference/v2.9/insights#availmetrics)
|
123
|
+
for a list of available weekly metrics and periods.
|
124
|
+
|
125
|
+
**Ensure that the period that you are using is supported by the metric**.
|
126
|
+
For example, `page_views_total` (page views) is available for `week`, `week`, and `days_28`
|
127
|
+
whereas `page_fans` (page likes) is only available as `lifetime`.
|
128
|
+
|
129
|
+
`metric_insights` returns a hash of Dates mapped to values. Passing `since` only return dates ahead
|
130
|
+
to this date (lower bound) and passing `until` will return dates previous to this day
|
131
|
+
(upper bound & defaults to 2 days ago). Combining both options will return the dates in between.
|
132
|
+
|
133
|
+
```ruby
|
134
|
+
page = Fb::Page.new access_token: '--valid-access-token--', id: '--valid-id--'
|
135
|
+
metric_insights = page.metric_insights 'page_views_total', :day # let today be August 7th
|
136
|
+
# => {#<Date: 2017-08-04> => 598, <Date: 2017-08-05> => 548}
|
137
|
+
```
|
138
|
+
|
139
|
+
With `until` (`Date`) and `since` (`Date`).
|
140
|
+
|
141
|
+
```ruby
|
142
|
+
options = {since: Date.today - 9, until: Date.today}
|
143
|
+
metric_insights = page.metric_insights metric, :day, options
|
144
|
+
# => {#<Date: 2017-08-01> => 639,..,#<Date: 2017-08-05 => 548}
|
145
|
+
```
|
146
|
+
|
117
147
|
## Development
|
118
148
|
|
119
149
|
To run tests, obtain a long-term access token for a Facebook user who manages
|
data/lib/fb/core/version.rb
CHANGED
data/lib/fb/page.rb
CHANGED
@@ -23,10 +23,24 @@ module Fb
|
|
23
23
|
@access_token = options[:access_token]
|
24
24
|
end
|
25
25
|
|
26
|
+
# @return [Hash<Date, Integer>] a hash of Dates mapped to their values.
|
27
|
+
# @param [String] :metric the metric to fetch.
|
28
|
+
# @param [<String, Symbol>] :period the aggregate period (day, week, days_28).
|
29
|
+
# @option [Date] :since only return dates ahead to this date (lower bound).
|
30
|
+
# @option [Date] :until only return dates previous to this day (upper bound).
|
31
|
+
def metric_insights(metric, period, options = {})
|
32
|
+
insights = insights Array(metric), options.merge(period: period)
|
33
|
+
values = insights.find{|data| data['name'] == metric}['values']
|
34
|
+
values.map do |v|
|
35
|
+
[Date.strptime(v['end_time'], '%Y-%m-%dT%H:%M:%S+0000'), v.fetch('value', 0)]
|
36
|
+
end.to_h
|
37
|
+
end
|
38
|
+
|
39
|
+
#values.map {|v| [Date.strptime(v['end_time'], '%Y-%m-%dT%H:%M:%S+0000'), v.fetch('value', 0)]}.to_h
|
26
40
|
# @return [Hash] a hash of metrics mapped to their values.
|
27
41
|
# @param [Array<String, Symbol>] :metrics the metrics to fetch.
|
28
42
|
# @option [Date] :until only sum seven days before this date.
|
29
|
-
def
|
43
|
+
def weekly_insights(metrics, options = {})
|
30
44
|
since_date = options.fetch :until, Date.today - 1
|
31
45
|
params = {period: :week, since: since_date, until: since_date + 2}
|
32
46
|
metrics = insights Array(metrics), params
|
@@ -37,11 +51,9 @@ module Fb
|
|
37
51
|
# @param [Hash] options the options
|
38
52
|
# @option [Date] :until only count the views until this day.
|
39
53
|
def view_count(options = {})
|
40
|
-
views =
|
41
|
-
if options[:until]
|
42
|
-
|
43
|
-
end
|
44
|
-
views.sum{|x| x.fetch('value', 0)}
|
54
|
+
views = metric_insights 'page_views_total', 'day', since: '1652 days ago'
|
55
|
+
views.select!{|date, _| date < options[:until]} if options[:until]
|
56
|
+
views.values.sum
|
45
57
|
end
|
46
58
|
|
47
59
|
# @return [Integer] the number of likes of the page.
|
@@ -49,8 +61,8 @@ module Fb
|
|
49
61
|
# @option [Date] :until only count the likes until this day.
|
50
62
|
def like_count(options = {})
|
51
63
|
since_date = options.fetch :until, Date.today - 1
|
52
|
-
likes =
|
53
|
-
likes
|
64
|
+
likes = metric_insights 'page_fans', 'lifetime', since: since_date, until: since_date + 2
|
65
|
+
likes[since_date+1]
|
54
66
|
end
|
55
67
|
|
56
68
|
# @return [Array<Fb::Post>] the posts published on the page.
|
@@ -72,11 +84,6 @@ module Fb
|
|
72
84
|
|
73
85
|
private
|
74
86
|
|
75
|
-
def single_metric(metric, options = {})
|
76
|
-
insights = insights Array(metric), options
|
77
|
-
insights.find{|data| data['name'] == metric}['values']
|
78
|
-
end
|
79
|
-
|
80
87
|
def insights(metrics, options = {})
|
81
88
|
params = options.merge metric: metrics.join(','), access_token: @access_token
|
82
89
|
request = HTTPRequest.new path: "/v2.9/#{@id}/insights", params: params
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fb-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.alpha6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claudio Baccigalupo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fb-support
|