fb-core 1.0.0.beta10 → 1.0.0.beta11
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 +5 -5
- data/CHANGELOG.md +21 -0
- data/lib/fb/core.rb +1 -0
- data/lib/fb/core/version.rb +1 -1
- data/lib/fb/page.rb +13 -6
- data/lib/fb/post.rb +20 -10
- data/lib/fb/video.rb +4 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3d5d9595ad06f96e9cd804a1795e01798482dbf95a6cad93731de6074bbdee36
|
4
|
+
data.tar.gz: c37aab3d7991f3eb33300871007a54751b31bd2c21ba38d69a354ca03a795a56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5e271e36f438510e4f3fef268fb5b1c2f57359763192980fa6c39412a5e1618d799eb75275e79d9aea7f41831dec619fe166b9ea2bed8ddcd186780a7de65d0
|
7
|
+
data.tar.gz: e4fd05041ec08593d03e03e3d1d6e05c11702f2218a1b02efc86d94ba99f6f334076fe14dc05f60de86e108419c2e3d681e473427abdb16dbfca3c7b7ed9a088
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,27 @@ For more information about changelogs, check
|
|
6
6
|
[Keep a Changelog](http://keepachangelog.com) and
|
7
7
|
[Vandamme](http://tech-angels.github.io/vandamme).
|
8
8
|
|
9
|
+
|
10
|
+
## 1.0.0.beta11
|
11
|
+
|
12
|
+
* [IMPROVEMENT] Return UTC time for String value of `created_time`, `backdated_time`,
|
13
|
+
`end_time`, etc from Facebook to have exact time.
|
14
|
+
* [FEATURE] Add `Fb::Post#lifetime_insights` method to get metrics of each post.
|
15
|
+
* [BUGFIX] Return empty hash instead of nil when a metric returns empty array.
|
16
|
+
|
17
|
+
**How to upgrade**
|
18
|
+
|
19
|
+
If your code calls `.consumptions` then you must replace that code with `.clicks`
|
20
|
+
since those metrics will no longer be supported by Facebook API as of
|
21
|
+
[August 1, 2018](https://developers.facebook.com/docs/graph-api/reference/v2.9/insights#newnames).
|
22
|
+
If your code calls `fan_reach` from a Fb::Post then you must remove that code
|
23
|
+
because Facebook removed that metric from [version 3.0](https://developers.facebook.com/docs/graph-api/changelog/version3.0) and they already applied the change to v2.9 the version currently
|
24
|
+
fb-core uses.
|
25
|
+
|
26
|
+
* [REMOVAL] Remove `#consumptions` method for posts
|
27
|
+
* [REMOVAL] Remove `#fan_reach` method for posts
|
28
|
+
* [FEATURE] Add `#clicks` method for posts
|
29
|
+
|
9
30
|
## 1.0.0.beta10 - 2018/05/01
|
10
31
|
|
11
32
|
* [FEATURE] Add `:since` and `:until` option to `Page#videos` method.
|
data/lib/fb/core.rb
CHANGED
data/lib/fb/core/version.rb
CHANGED
data/lib/fb/page.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
1
3
|
module Fb
|
2
4
|
# Provides methods to interact with Facebook pages through the Graph API.
|
3
5
|
# @see https://developers.facebook.com/docs/graph-api/reference/page/
|
@@ -11,6 +13,8 @@ module Fb
|
|
11
13
|
# @option [String] the page’s category.
|
12
14
|
attr_reader :category
|
13
15
|
|
16
|
+
attr_reader :access_token
|
17
|
+
|
14
18
|
# @param [Hash] options to initialize a Page object.
|
15
19
|
# @option [String] :id The page’s unique ID.
|
16
20
|
# @option [String] :name The page’s name.
|
@@ -30,9 +34,10 @@ module Fb
|
|
30
34
|
# @option [Date] :until only return dates previous to this day (upper bound).
|
31
35
|
def metric_insights(metric, period, options = {})
|
32
36
|
insights = page_insights Array(metric), options.merge(period: period)
|
33
|
-
|
37
|
+
return {} if insights.empty?
|
38
|
+
values = insights.find(->{{}}){|data| data['name'] == metric}['values']
|
34
39
|
values.map do |v|
|
35
|
-
[Date.
|
40
|
+
[Date.parse(v['end_time']), v.fetch('value', 0)]
|
36
41
|
end.to_h
|
37
42
|
end
|
38
43
|
|
@@ -70,10 +75,11 @@ module Fb
|
|
70
75
|
# @option [Boolean] :with_metrics whether to include insights for the posts.
|
71
76
|
def posts(options = {})
|
72
77
|
@posts ||= begin
|
78
|
+
with_metrics = options.delete :with_metrics
|
73
79
|
params = posts_params.merge options
|
74
80
|
request = PaginatedRequest.new path: "/v2.9/#{@id}/posts", params: params
|
75
81
|
data = request.run.body['data']
|
76
|
-
|
82
|
+
with_metrics ? posts_with_metrics_from(data) : posts_from(data)
|
77
83
|
end
|
78
84
|
end
|
79
85
|
|
@@ -95,10 +101,11 @@ module Fb
|
|
95
101
|
# @option [Boolean] :without_lifetime_metrics whether to include insights for the videos.
|
96
102
|
def videos(options = {})
|
97
103
|
@videos ||= begin
|
104
|
+
without_lifetime_metrics = options.delete :without_lifetime_metrics
|
98
105
|
params = video_params.merge options
|
99
106
|
request = PaginatedRequest.new path: "/v2.9/#{@id}/videos", params: params
|
100
107
|
data = request.run.body['data']
|
101
|
-
|
108
|
+
without_lifetime_metrics ? videos_from(data) : videos_with_metrics_from(data)
|
102
109
|
end
|
103
110
|
end
|
104
111
|
|
@@ -164,8 +171,8 @@ module Fb
|
|
164
171
|
post_impressions_paid post_impressions_paid_unique post_impressions_fan
|
165
172
|
post_impressions_fan_unique post_impressions_fan_paid post_impressions_fan_paid_unique
|
166
173
|
post_impressions_organic post_impressions_organic_unique post_impressions_viral
|
167
|
-
|
168
|
-
|
174
|
+
post_clicks post_engaged_users post_negative_feedback post_engaged_fan
|
175
|
+
post_reactions_like_total post_reactions_love_total
|
169
176
|
post_reactions_wow_total post_reactions_haha_total post_reactions_sorry_total
|
170
177
|
post_reactions_anger_total post_video_avg_time_watched post_video_complete_views_organic
|
171
178
|
post_video_complete_views_organic_unique post_video_complete_views_paid
|
data/lib/fb/post.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'time'
|
2
|
+
|
3
3
|
module Fb
|
4
4
|
# Fb::Post reprensents a Facebook post. Post provides getters for:
|
5
5
|
# :id, :url, :created_at, :type, :message, :length, engaged_users,
|
6
6
|
# video_views, video_views_organic, video_views_paid, and so on.
|
7
7
|
# @see https://developers.facebook.com/docs/graph-api/reference/v2.10/post
|
8
|
-
class Post
|
8
|
+
class Post < Resource
|
9
9
|
attr_accessor :custom_labels
|
10
10
|
|
11
11
|
# @option [String] the post’s unique ID.
|
@@ -100,7 +100,7 @@ module Fb
|
|
100
100
|
|
101
101
|
# @option [Integer] the number of times people clicked on anywhere
|
102
102
|
# in your posts without generating a story.
|
103
|
-
attr_reader :
|
103
|
+
attr_reader :clicks
|
104
104
|
|
105
105
|
# @option [Integer] the number of people who clicked anywhere on the post.
|
106
106
|
attr_reader :engaged_users
|
@@ -111,9 +111,6 @@ module Fb
|
|
111
111
|
# @option [Integer] people who have liked your page and engaged with your post.
|
112
112
|
attr_reader :engaged_fan
|
113
113
|
|
114
|
-
# @option [Integer] post reach by people who like your page.
|
115
|
-
attr_reader :fan_reach
|
116
|
-
|
117
114
|
# @option [Integer] total "like" reactions of a post.
|
118
115
|
attr_reader :reactions_like_total
|
119
116
|
|
@@ -236,7 +233,7 @@ module Fb
|
|
236
233
|
def initialize(options = {})
|
237
234
|
@id = options[:id]
|
238
235
|
@url = options[:permalink_url]
|
239
|
-
@created_at = Time.
|
236
|
+
@created_at = Time.parse(options[:created_time]) if options[:created_time]
|
240
237
|
@type = options[:type]
|
241
238
|
@message = options[:message]
|
242
239
|
@length = options.fetch(:properties, []).find(-> { {'text' => 'n/a'} }) do |property|
|
@@ -263,11 +260,10 @@ module Fb
|
|
263
260
|
@impressions_organic = options[:post_impressions_organic]
|
264
261
|
@impressions_organic_unique = options[:post_impressions_organic_unique]
|
265
262
|
@impressions_viral = options[:post_impressions_viral]
|
266
|
-
@
|
263
|
+
@clicks = options[:post_clicks]
|
267
264
|
@engaged_users = options[:post_engaged_users]
|
268
265
|
@negative_feedback = options[:post_negative_feedback]
|
269
266
|
@engaged_fan = options[:post_engaged_fan]
|
270
|
-
@fan_reach = options[:post_fan_reach]
|
271
267
|
@reactions_like_total = options[:post_reactions_like_total]
|
272
268
|
@reactions_love_total = options[:post_reactions_love_total]
|
273
269
|
@reactions_wow_total = options[:post_reactions_wow_total]
|
@@ -300,6 +296,20 @@ module Fb
|
|
300
296
|
@video_view_time_organic = options[:post_video_view_time_organic]
|
301
297
|
end
|
302
298
|
|
299
|
+
# @return [Hash] a hash of metrics mapped to their values.
|
300
|
+
# @param [Array<String, Symbol>] :metrics the metrics to fetch.
|
301
|
+
# @param [String] :page_access_token page access token of its page.
|
302
|
+
def lifetime_insights(metrics, page_access_token)
|
303
|
+
params = { metric: Array(metrics).join(","), access_token: page_access_token, period: "lifetime", ids: id }
|
304
|
+
request = HTTPRequest.new path: "/v2.9/insights", params: params
|
305
|
+
insights = request.run.body
|
306
|
+
|
307
|
+
data = insights[id]['data'].map do |metric|
|
308
|
+
[metric['name'], metric['values'].last.fetch('value', 0)]
|
309
|
+
end.to_h
|
310
|
+
symbolize_keys data
|
311
|
+
end
|
312
|
+
|
303
313
|
# @return [String] the representation of the post.
|
304
314
|
def to_s
|
305
315
|
%Q(#<#{self.class.name} #{@id} "#{@type}">)
|
data/lib/fb/video.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'time'
|
2
|
+
|
1
3
|
module Fb
|
2
4
|
# Fb::Video represents a Facebook video. Fb::Video provides getter methods.
|
3
5
|
# @see https://developers.facebook.com/docs/graph-api/reference/video/
|
@@ -97,8 +99,8 @@ module Fb
|
|
97
99
|
@content_tags = options[:content_tags] ? Array(options[:content_tags]) : []
|
98
100
|
@ad_breaks = options[:ad_breaks] ? Array(options[:ad_breaks]) : []
|
99
101
|
@length = options[:length]
|
100
|
-
@created_at = Time.
|
101
|
-
@backdated_time = Time.
|
102
|
+
@created_at = Time.parse(options[:created_time]) if options[:created_time]
|
103
|
+
@backdated_time = Time.parse(options[:backdated_time]) if options[:backdated_time]
|
102
104
|
|
103
105
|
@total_views = options[:total_video_views]
|
104
106
|
@total_views_unique = options[:total_video_views_unique]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.beta11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claudio Baccigalupo
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-08-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fb-support
|
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
145
|
version: 1.3.1
|
146
146
|
requirements: []
|
147
147
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.6
|
148
|
+
rubygems_version: 2.7.6
|
149
149
|
signing_key:
|
150
150
|
specification_version: 4
|
151
151
|
summary: Ruby client to interact with Facebook Graph API.
|