fb-auth 0.1.0 → 0.1.1
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/.gitignore +1 -0
- data/CHANGELOG.md +4 -0
- data/README.md +17 -3
- data/fb-auth.gemspec +2 -2
- data/lib/fb/auth/version.rb +1 -1
- data/lib/fb/configuration.rb +2 -2
- data/lib/fb/metric.rb +35 -0
- data/lib/fb/page.rb +35 -1
- data/lib/fb/user.rb +4 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4091f0bb97d9c056731edce37fbd6e62c36fe29
|
4
|
+
data.tar.gz: 52896b096eb97caa7a4b7b6cf032a4295bd65fca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e87ad08d25287b42cd3614cf13459a47afe203ca70998efbbec7e912e7ed7bd91cefa736fb928377d41c2f099349851938694a896a030b6d56949d9bb81f98c4
|
7
|
+
data.tar.gz: 1a1a4f22a83d45152865844bdf84342eb4674c72bb8a841505bab192c3e18d18c6a7417661c326eac99f44613bc5dd31904f0a8c8fc8b424c8fa3930c39a90c0
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,10 @@ 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
|
+
## 0.1.1 - 2017/06/29
|
10
|
+
|
11
|
+
* [FEATURE] Add `Fb::Page#insights`
|
12
|
+
|
9
13
|
## 0.1.0 - 2017/06/29
|
10
14
|
|
11
15
|
* [FEATURE] Add `Fb::Auth#url`
|
data/README.md
CHANGED
@@ -10,7 +10,6 @@ Fb::Auth can authenticate a Facebook user and return an access token with permis
|
|
10
10
|
[](http://rubygems.org/gems/fb-auth)
|
11
11
|
|
12
12
|
The **source code** is available on [GitHub](https://github.com/Fullscreen/fb-auth) and the **documentation** on [RubyDoc](http://www.rubydoc.info/gems/fb-auth/frames).
|
13
|
-
|
14
13
|
### Installing and Configuring Fb::Auth
|
15
14
|
|
16
15
|
First, add fb-auth to your Gemfile:
|
@@ -67,7 +66,7 @@ array of type Fb::Page, each with an id and name.
|
|
67
66
|
```ruby
|
68
67
|
access_token = Fb::Auth.new(redirect_uri: redirect_uri, code: code).access_token
|
69
68
|
Fb::User.new(access_token).pages
|
70
|
-
# => [#<Fb::Page:
|
69
|
+
# => [#<Fb::Page: id="1234", name="sample1">, #<Fb::Page: id="5678", name="sample2">]
|
71
70
|
```
|
72
71
|
|
73
72
|
Fb::User#email
|
@@ -81,6 +80,21 @@ Fb::User.new(access_token).email
|
|
81
80
|
# => "john.smith@example.com"
|
82
81
|
```
|
83
82
|
|
83
|
+
Fb::Page#insights
|
84
|
+
---------------------
|
85
|
+
|
86
|
+
For each page object created, you can get these pre-defined metrics: page_views_total, page_fan_adds_unique, page_engaged_users, page_video_views. The insights method will fetch the cumulative value of these metrics 7 days prior to two weeks ago (e.g. if today is July 6, 2017, the value of the metric will be for the 7 days prior to and ending on June 22, 2017). The selection of metrics and aggregate period will be options in a future patch.
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
Fb::User.new('token').pages.insights
|
90
|
+
# => {"page_fan_adds_unique"=>#<Fb::Metric:0x123abc
|
91
|
+
@name="page_fans", @description="Weekly: The
|
92
|
+
number of new people who have liked your Page (Unique Users)",
|
93
|
+
@value=123>,..}
|
94
|
+
```
|
95
|
+
|
96
|
+
A full list of page/insights metrics are available at [metrics](https://developers.facebook.com/docs/graph-api/reference/v2.9/insights#availmetrics).
|
97
|
+
|
84
98
|
Fb::Error
|
85
99
|
-------------
|
86
100
|
|
@@ -114,4 +128,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/Fullsc
|
|
114
128
|
|
115
129
|
## License
|
116
130
|
|
117
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
131
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/fb-auth.gemspec
CHANGED
@@ -6,8 +6,8 @@ require "fb/auth/version"
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "fb-auth"
|
8
8
|
spec.version = Fb::Auth::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Aaron Dao', 'Claudio Baccigalupo']
|
10
|
+
spec.email = ['aaron.dao@fullscreen.com', 'claudio@fullscreen.net']
|
11
11
|
|
12
12
|
spec.summary = %q{Ruby client to authenticate a Facebook user.}
|
13
13
|
spec.description = %q{Fb::Auth provides methods to obtain an access token to
|
data/lib/fb/auth/version.rb
CHANGED
data/lib/fb/configuration.rb
CHANGED
@@ -15,7 +15,7 @@ module Fb
|
|
15
15
|
# convention is to use [Fb.configure].
|
16
16
|
#
|
17
17
|
# @example
|
18
|
-
# Fb.configuration.
|
18
|
+
# Fb.configuration.client_id = 1234
|
19
19
|
def self.configuration
|
20
20
|
@configuration ||= Configuration.new
|
21
21
|
end
|
@@ -25,7 +25,7 @@ module Fb
|
|
25
25
|
#
|
26
26
|
# @example
|
27
27
|
# Fb.configure do |config|
|
28
|
-
# config.
|
28
|
+
# config.client_id = 1234
|
29
29
|
# end
|
30
30
|
def self.configure
|
31
31
|
yield(configuration) if block_given?
|
data/lib/fb/metric.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Ruby client to authenticate a Facebook user.
|
2
|
+
# @see http://www.rubydoc.info/gems/Fb/
|
3
|
+
module Fb
|
4
|
+
# Fb::Metric reprensents a Facebook page's metric.
|
5
|
+
# For a list of all available metrics, refer to:
|
6
|
+
# @see https://developers.facebook.com/docs/graph-api/reference/v2.9/insights
|
7
|
+
# Provides methods to read name, description, and value.
|
8
|
+
class Metric
|
9
|
+
|
10
|
+
# @return [String] the name of the metric (e.g. page_fans).
|
11
|
+
attr_reader :name
|
12
|
+
|
13
|
+
# @return [String] a description for the metric.
|
14
|
+
attr_reader :description
|
15
|
+
|
16
|
+
# @return [Integer] the value of the metric when last requested.
|
17
|
+
attr_reader :value
|
18
|
+
|
19
|
+
# @param [Hash] options the options to initialize an instance of Fb::Metric.
|
20
|
+
# @option [String] :name of the metric.
|
21
|
+
# @option [String] :title of the metric.
|
22
|
+
# @option [String] :description of the metric.
|
23
|
+
# @option [Integer] :value of this metric when last requested.
|
24
|
+
def initialize(options = {})
|
25
|
+
@name = options["name"]
|
26
|
+
@description = options["description"]
|
27
|
+
@value = options["values"].first["value"]
|
28
|
+
end
|
29
|
+
|
30
|
+
# @return [String] the representation of the metric.
|
31
|
+
def to_s
|
32
|
+
"#<#{self.class.name} name=#{@name}, description=#{@description}, value=#{@value}>"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/fb/page.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'date'
|
2
|
+
require 'fb/request'
|
3
|
+
require 'fb/metric'
|
2
4
|
# Ruby client to authenticate a Facebook user.
|
3
5
|
# @see http://www.rubydoc.info/gems/Fb/
|
4
6
|
module Fb
|
@@ -17,12 +19,44 @@ module Fb
|
|
17
19
|
def initialize(options = {})
|
18
20
|
@name = options["name"]
|
19
21
|
@id = options["id"]
|
22
|
+
@user = options["user"]
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Hash] a collection of metrics with metric name as key
|
26
|
+
# and metric object as value.
|
27
|
+
# @example
|
28
|
+
# Fb::User.new('token').pages.insights
|
29
|
+
# => {"page_fan_adds_unique"=>#<Fb::Metric:0x123abc
|
30
|
+
# @name="page_fans", @description="Weekly: The
|
31
|
+
# number of new people who have liked your Page (Unique Users)",
|
32
|
+
# @value=123>,..}
|
33
|
+
def insights
|
34
|
+
@insights ||= begin
|
35
|
+
response_body = Fb::Request.new(
|
36
|
+
path: "/v2.9/#{@id}/insights",
|
37
|
+
params: insights_params).run
|
38
|
+
response_body["data"].map do |metric_data|
|
39
|
+
[metric_data["name"], Fb::Metric.new(metric_data)]
|
40
|
+
end.to_h
|
41
|
+
end
|
20
42
|
end
|
21
43
|
|
22
44
|
# @return [String] the representation of the page.
|
23
45
|
def to_s
|
24
46
|
"#<#{self.class.name} id=#{@id}, name=#{@name}>"
|
25
47
|
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def insights_params
|
52
|
+
{}.tap do |params|
|
53
|
+
params[:since] = (Time.now - 14 * 86400).strftime("%Y-%m-%d")
|
54
|
+
params[:until] = Date.parse(params[:since]) + 1
|
55
|
+
params[:period] = :week
|
56
|
+
params[:metric] = 'page_views_total,page_fan_adds_unique,
|
57
|
+
page_engaged_users,page_video_views'
|
58
|
+
params[:access_token] = @user.send(:access_token)
|
59
|
+
end
|
60
|
+
end
|
26
61
|
end
|
27
62
|
end
|
28
|
-
|
data/lib/fb/user.rb
CHANGED
@@ -25,9 +25,12 @@ module Fb
|
|
25
25
|
response_body = Fb::Request.new(path: '/me/accounts',
|
26
26
|
params: {access_token: @access_token}).run
|
27
27
|
response_body["data"].map do |page_data|
|
28
|
-
Fb::Page.new page_data
|
28
|
+
Fb::Page.new page_data.merge('user' => self)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
private
|
34
|
+
attr_reader :access_token
|
32
35
|
end
|
33
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fb-auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Dao
|
8
|
+
- Claudio Baccigalupo
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date: 2017-
|
12
|
+
date: 2017-07-11 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
@@ -85,6 +86,7 @@ description: |-
|
|
85
86
|
manage pages of a Facebook user.
|
86
87
|
email:
|
87
88
|
- aaron.dao@fullscreen.com
|
89
|
+
- claudio@fullscreen.net
|
88
90
|
executables: []
|
89
91
|
extensions: []
|
90
92
|
extra_rdoc_files: []
|
@@ -105,6 +107,7 @@ files:
|
|
105
107
|
- lib/fb/auth/version.rb
|
106
108
|
- lib/fb/configuration.rb
|
107
109
|
- lib/fb/error.rb
|
110
|
+
- lib/fb/metric.rb
|
108
111
|
- lib/fb/page.rb
|
109
112
|
- lib/fb/request.rb
|
110
113
|
- lib/fb/user.rb
|