fb_graph 1.6.1 → 1.6.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/fb_graph.gemspec +17 -5
- data/lib/fb_graph/album.rb +0 -94
- data/lib/fb_graph/application.rb +0 -17
- data/lib/fb_graph/auth.rb +0 -15
- data/lib/fb_graph/checkin.rb +0 -6
- data/lib/fb_graph/connections/accounts.rb +0 -45
- data/lib/fb_graph/connections/albums.rb +0 -75
- data/lib/fb_graph/connections/checkins.rb +0 -8
- data/lib/fb_graph/connections/feed.rb +0 -69
- data/lib/fb_graph/education.rb +1 -1
- data/lib/fb_graph/klass.rb +31 -0
- data/lib/fb_graph/page/category_attributes.rb +108 -0
- data/lib/fb_graph/page.rb +5 -34
- data/lib/fb_graph/project.rb +1 -22
- data/lib/fb_graph/work.rb +8 -1
- data/lib/fb_graph.rb +3 -1
- data/spec/fake_json/pages/categories/local_business.json +33 -65
- data/spec/fake_json/pages/categories/movie.json +15 -0
- data/spec/fake_json/pages/categories/music.json +16 -0
- data/spec/fake_json/pages/categories/person.json +12 -0
- data/spec/fake_json/pages/categories/product.json +15 -0
- data/spec/fb_graph/page/local_business_spec.rb +60 -0
- data/spec/fb_graph/page/movie_spec.rb +25 -0
- data/spec/fb_graph/page/music_spec.rb +25 -0
- data/spec/fb_graph/page/person_spec.rb +23 -0
- data/spec/fb_graph/page/product_spec.rb +36 -0
- data/spec/fb_graph/page_spec.rb +31 -49
- metadata +19 -7
- data/lib/fb_graph/page/categories/local_business.rb +0 -38
- data/lib/fb_graph/page/categories.rb +0 -9
- data/spec/fb_graph/page/categories/local_business_spec.rb +0 -34
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.6.
|
1
|
+
1.6.2
|
data/fb_graph.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{fb_graph}
|
8
|
-
s.version = "1.6.
|
8
|
+
s.version = "1.6.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["nov matake"]
|
@@ -86,14 +86,14 @@ Gem::Specification.new do |s|
|
|
86
86
|
"lib/fb_graph/friend_list.rb",
|
87
87
|
"lib/fb_graph/group.rb",
|
88
88
|
"lib/fb_graph/insight.rb",
|
89
|
+
"lib/fb_graph/klass.rb",
|
89
90
|
"lib/fb_graph/link.rb",
|
90
91
|
"lib/fb_graph/location.rb",
|
91
92
|
"lib/fb_graph/message.rb",
|
92
93
|
"lib/fb_graph/node.rb",
|
93
94
|
"lib/fb_graph/note.rb",
|
94
95
|
"lib/fb_graph/page.rb",
|
95
|
-
"lib/fb_graph/page/
|
96
|
-
"lib/fb_graph/page/categories/local_business.rb",
|
96
|
+
"lib/fb_graph/page/category_attributes.rb",
|
97
97
|
"lib/fb_graph/photo.rb",
|
98
98
|
"lib/fb_graph/place.rb",
|
99
99
|
"lib/fb_graph/post.rb",
|
@@ -131,6 +131,10 @@ Gem::Specification.new do |s|
|
|
131
131
|
"spec/fake_json/events/noreply/smartday_private.json",
|
132
132
|
"spec/fake_json/groups/members/emacs_private.json",
|
133
133
|
"spec/fake_json/pages/categories/local_business.json",
|
134
|
+
"spec/fake_json/pages/categories/movie.json",
|
135
|
+
"spec/fake_json/pages/categories/music.json",
|
136
|
+
"spec/fake_json/pages/categories/person.json",
|
137
|
+
"spec/fake_json/pages/categories/product.json",
|
134
138
|
"spec/fake_json/pages/checkins/gowalla_private.json",
|
135
139
|
"spec/fake_json/pages/checkins/gowalla_public.json",
|
136
140
|
"spec/fake_json/pages/insights/FbGraph_private.json",
|
@@ -282,7 +286,11 @@ Gem::Specification.new do |s|
|
|
282
286
|
"spec/fb_graph/message_spec.rb",
|
283
287
|
"spec/fb_graph/node_spec.rb",
|
284
288
|
"spec/fb_graph/note_spec.rb",
|
285
|
-
"spec/fb_graph/page/
|
289
|
+
"spec/fb_graph/page/local_business_spec.rb",
|
290
|
+
"spec/fb_graph/page/movie_spec.rb",
|
291
|
+
"spec/fb_graph/page/music_spec.rb",
|
292
|
+
"spec/fb_graph/page/person_spec.rb",
|
293
|
+
"spec/fb_graph/page/product_spec.rb",
|
286
294
|
"spec/fb_graph/page_spec.rb",
|
287
295
|
"spec/fb_graph/photo_spec.rb",
|
288
296
|
"spec/fb_graph/place_spec.rb",
|
@@ -374,7 +382,11 @@ Gem::Specification.new do |s|
|
|
374
382
|
"spec/fb_graph/message_spec.rb",
|
375
383
|
"spec/fb_graph/node_spec.rb",
|
376
384
|
"spec/fb_graph/note_spec.rb",
|
377
|
-
"spec/fb_graph/page/
|
385
|
+
"spec/fb_graph/page/local_business_spec.rb",
|
386
|
+
"spec/fb_graph/page/movie_spec.rb",
|
387
|
+
"spec/fb_graph/page/music_spec.rb",
|
388
|
+
"spec/fb_graph/page/person_spec.rb",
|
389
|
+
"spec/fb_graph/page/product_spec.rb",
|
378
390
|
"spec/fb_graph/page_spec.rb",
|
379
391
|
"spec/fb_graph/photo_spec.rb",
|
380
392
|
"spec/fb_graph/place_spec.rb",
|
data/lib/fb_graph/album.rb
CHANGED
@@ -1,98 +1,4 @@
|
|
1
1
|
module FbGraph
|
2
|
-
# = Authentication
|
3
|
-
#
|
4
|
-
# * Access token is required to fetch album info.
|
5
|
-
#
|
6
|
-
# = Attributes
|
7
|
-
#
|
8
|
-
# +from+:: FbGraph::User or FbGraph::Page
|
9
|
-
# +name+:: String
|
10
|
-
# +description+:: String
|
11
|
-
# +location+:: String <em>ex.) "NYC"</em>
|
12
|
-
# +link+:: String
|
13
|
-
# +privacy+:: String <em>ex.) "everyone"</em>
|
14
|
-
# +count+:: Integer
|
15
|
-
# +type+:: String <em>ex.) "normal"</em>
|
16
|
-
# +created_time+:: Time (UTC)
|
17
|
-
# +updated_time+:: Time (UTC)
|
18
|
-
#
|
19
|
-
# = Connections
|
20
|
-
#
|
21
|
-
# +photos+:: Array of FbGraph::Photo
|
22
|
-
# +comments+:: Array of FbGraph::Comment
|
23
|
-
# +likes+:: Array of FbGraph::Page
|
24
|
-
#
|
25
|
-
# = Examples
|
26
|
-
#
|
27
|
-
# == Fetch album info
|
28
|
-
#
|
29
|
-
# album = FbGraph::Album.new(ALBUM_ID)
|
30
|
-
# album.fetch(:access_token => ACCESS_TOKEN)
|
31
|
-
#
|
32
|
-
# or
|
33
|
-
#
|
34
|
-
# FbGraph::album.fetch(ALBUM_ID, :access_token => ACCESS_TOKEN)
|
35
|
-
#
|
36
|
-
# == Fetch connection
|
37
|
-
#
|
38
|
-
# photos = album.photos
|
39
|
-
# likes = album.likes
|
40
|
-
# comments = album.comments
|
41
|
-
#
|
42
|
-
# === Pagination
|
43
|
-
#
|
44
|
-
# photos = album.photos
|
45
|
-
# photos_next = photos.next
|
46
|
-
# photos_previous = photos.previous
|
47
|
-
# photos = album.photos(:since => '2010-09-01', :until => '2010-10-01')
|
48
|
-
# photos = album.photos(:offset => 20, :limit => 20)
|
49
|
-
#
|
50
|
-
# == Creat new album
|
51
|
-
#
|
52
|
-
# See RDoc for FbGraph::Connections::Albums
|
53
|
-
#
|
54
|
-
# == Upload a photo
|
55
|
-
#
|
56
|
-
# album.photo!(
|
57
|
-
# :image => File.new(File.join(File.dirname(__FILE__), 'nov.gif')),
|
58
|
-
# :name => "name",
|
59
|
-
# :message => 'message'
|
60
|
-
# )
|
61
|
-
#
|
62
|
-
# == Post a comment
|
63
|
-
#
|
64
|
-
# album.comment!(
|
65
|
-
# :access_token => ACCESS_TOKEN,
|
66
|
-
# :message => 'Hey, I\'m testing you!'
|
67
|
-
# )
|
68
|
-
#
|
69
|
-
# == Delete a comment
|
70
|
-
#
|
71
|
-
# comment = album.comments.last
|
72
|
-
# comment.destroy
|
73
|
-
#
|
74
|
-
# == Like and unlike
|
75
|
-
#
|
76
|
-
# album.like!
|
77
|
-
# album.unlike!
|
78
|
-
#
|
79
|
-
# = Notes
|
80
|
-
#
|
81
|
-
# == Attribute +from+
|
82
|
-
#
|
83
|
-
# Both facebook user and page can have albums, so +from+ can be either FbGraph::User or FbGraph::Page.
|
84
|
-
# * When you called +ablums+ connection of FbGraph::User, all +from+ should be FbGraph::User.
|
85
|
-
# * When you called +ablums+ connection of FbGraph::Page, all +from+ should be FbGraph::Page.
|
86
|
-
# * When you fetched an album by objedt id, +from+ can be either FbGraph::User or FbGraph::Page.
|
87
|
-
#
|
88
|
-
# == Cached +comments+
|
89
|
-
#
|
90
|
-
# When album object fetched, several comments are included in the response.
|
91
|
-
# So first time you called +album.comments+, those cached comments will be returned.
|
92
|
-
# If you put any option parameter like +album.comments(:access_token => ACCESS_TOKEN)+,
|
93
|
-
# fb_graph ignores those cached comments and fetch comments via Graph API.
|
94
|
-
#
|
95
|
-
# <em>If cached "album.comments" are blank, probably the album has no comments yet.</em>
|
96
2
|
class Album < Node
|
97
3
|
include Connections::Photos
|
98
4
|
include Connections::Comments
|
data/lib/fb_graph/application.rb
CHANGED
@@ -26,23 +26,6 @@ module FbGraph
|
|
26
26
|
@secret = attributes[:secret]
|
27
27
|
end
|
28
28
|
|
29
|
-
# == Get OAuth access token
|
30
|
-
#
|
31
|
-
# Obtain an OAuth access token associated with your application via the OAuth Client Credentials Flow.
|
32
|
-
#
|
33
|
-
# ref) http://developers.facebook.com/docs/api#analytics
|
34
|
-
#
|
35
|
-
# app = FbGraph::Application.new(APP_ID)
|
36
|
-
# app.get_access_token
|
37
|
-
# # => access token as String
|
38
|
-
# app.access_token # once get_access_token is called, access token is cached.
|
39
|
-
# # => access token as String
|
40
|
-
#
|
41
|
-
# This method is automatically called when access token needed and application secret has already given.
|
42
|
-
#
|
43
|
-
# app = FbGraph::Application.new(APP_ID, :secret => APP_SECRET)
|
44
|
-
# app.subscriptions # get_access_token is called automatically
|
45
|
-
# # => Array of FbGraph::Subscription
|
46
29
|
def get_access_token(secret = nil)
|
47
30
|
self.secret ||= secret
|
48
31
|
auth = Auth.new(self.identifier, self.secret)
|
data/lib/fb_graph/auth.rb
CHANGED
@@ -1,19 +1,4 @@
|
|
1
1
|
module FbGraph
|
2
|
-
# = Parse & verify facebook auth cookie
|
3
|
-
#
|
4
|
-
# Used with Facebook JavaScript SDK
|
5
|
-
#
|
6
|
-
# app = FbGraph::Auth.new(APP_ID, APP_SECRET)
|
7
|
-
# app.from_cookie(cookie_hash)
|
8
|
-
# auth.access_token
|
9
|
-
# # => OAuth2::AccessToken (not String!)
|
10
|
-
# auth.user # only initialized
|
11
|
-
# auth.user.fetch # fetch whole profile
|
12
|
-
#
|
13
|
-
# This method is called automatically if cookie is given when initializing
|
14
|
-
#
|
15
|
-
# auth = FbGraph::Auth.new(APP_ID, APP_SECRET, :cookie => {..})
|
16
|
-
# auth.access_token # already parsed
|
17
2
|
class Auth
|
18
3
|
class VerificationFailed < Exception; end
|
19
4
|
|
data/lib/fb_graph/checkin.rb
CHANGED
@@ -34,13 +34,7 @@ module FbGraph
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
# == Search for recent check-ins for an authorized user and his or her friends:
|
38
|
-
#
|
39
|
-
# FbGraph::Checkin.search(:access_token => ACCESS_TOKEN)
|
40
|
-
# # => Array of FbGraph::Checkin
|
41
37
|
def self.search(options = {})
|
42
|
-
# NOTE:
|
43
|
-
# checkin search doesn't support "q=***" parameter
|
44
38
|
super(nil, options)
|
45
39
|
end
|
46
40
|
end
|
@@ -1,50 +1,5 @@
|
|
1
1
|
module FbGraph
|
2
2
|
module Connections
|
3
|
-
# = What's "accounts"?
|
4
|
-
#
|
5
|
-
# Pages owned by the current user.
|
6
|
-
#
|
7
|
-
# ref) http://developers.facebook.com/docs/api#impersonation
|
8
|
-
#
|
9
|
-
# = Authentication
|
10
|
-
#
|
11
|
-
# * Access token is required.
|
12
|
-
# * "manage_pages" permission is optional.
|
13
|
-
#
|
14
|
-
# If the "manage_pages" permission has been granted,
|
15
|
-
# this connection also yields access_tokens that can be used to query the Graph API on behalf of the page.
|
16
|
-
#
|
17
|
-
# ref) http://developers.facebook.com/docs/reference/api/user
|
18
|
-
#
|
19
|
-
# = Connected with
|
20
|
-
#
|
21
|
-
# * FbGraph::User
|
22
|
-
#
|
23
|
-
# == Fetch
|
24
|
-
#
|
25
|
-
# pages = FbGraph::User.me(ACCESS_TOKEN).accounts
|
26
|
-
# # => array of FbGraph::Page
|
27
|
-
# pages.first.access_token
|
28
|
-
# # => String if "manage_pages" permission has been granted, nil if not.
|
29
|
-
#
|
30
|
-
# = Notes
|
31
|
-
#
|
32
|
-
# == Access token of the page
|
33
|
-
#
|
34
|
-
# Using given access token, you can do those things as the page, not as yourself.
|
35
|
-
#
|
36
|
-
# * update the page's wall
|
37
|
-
# * create new page's album and upload photos into it
|
38
|
-
# * create and manage an event
|
39
|
-
# * etc.
|
40
|
-
#
|
41
|
-
# See RDoc for FbGraph::Page for more details.
|
42
|
-
#
|
43
|
-
# page = FbGraph::User.me(ACCESS_TOKEN).accounts.first
|
44
|
-
# page.access_token
|
45
|
-
# # => given because "manage_pages" permission has been granted.
|
46
|
-
# page.feed!(:message => 'Updating via FbGraph')
|
47
|
-
# # => update the page's wall, not the user's wall
|
48
3
|
module Accounts
|
49
4
|
def accounts(options = {})
|
50
5
|
accounts = self.connection(:accounts, options)
|
@@ -1,80 +1,5 @@
|
|
1
1
|
module FbGraph
|
2
2
|
module Connections
|
3
|
-
# = Authentication
|
4
|
-
#
|
5
|
-
# * Access token is required to fetch/create albums.
|
6
|
-
# * "publish_stream" permissin is required to create new album.
|
7
|
-
#
|
8
|
-
# = Connected with
|
9
|
-
#
|
10
|
-
# * FbGraph::Application
|
11
|
-
# * FbGraph::USer
|
12
|
-
# * FbGraph::Page
|
13
|
-
#
|
14
|
-
# = Example
|
15
|
-
#
|
16
|
-
# == Fetch albums
|
17
|
-
#
|
18
|
-
# me = FbGraph::User.me(ACCESS_TOKEN)
|
19
|
-
# me.albums
|
20
|
-
# # => Array of FbGraph::Album
|
21
|
-
#
|
22
|
-
# page = FbGraph::Page.new('fb_graph')
|
23
|
-
# page.albums
|
24
|
-
# # => Array of FbGraph::Album
|
25
|
-
#
|
26
|
-
# == Create an album
|
27
|
-
#
|
28
|
-
# me = FbGraph::User.me(ACCESS_TOKEN)
|
29
|
-
# album = me.album!(
|
30
|
-
# :name => 'FbGraph test',
|
31
|
-
# :message => 'hello world!',
|
32
|
-
# :description => 'hello world!'
|
33
|
-
# )
|
34
|
-
#
|
35
|
-
# page = FbGraph::Page.new('fb_graph', :access_token => ACCESS_TOKEN)
|
36
|
-
# album = page.album!(
|
37
|
-
# :name => 'FbGraph test',
|
38
|
-
# :message => 'hello world!',
|
39
|
-
# :description => 'hello world!'
|
40
|
-
# )
|
41
|
-
#
|
42
|
-
# = Notes
|
43
|
-
#
|
44
|
-
# == Attributes after created
|
45
|
-
#
|
46
|
-
# Only attributes you specified are saved in the created album object.
|
47
|
-
# If you want to access any other attributes, you need to fetch the album info via Graph API.
|
48
|
-
#
|
49
|
-
# me = FbGraph::User.me(ACCESS_TOKEN)
|
50
|
-
# album = me.album!(
|
51
|
-
# :name => 'FbGraph test',
|
52
|
-
# :message => 'hello world!',
|
53
|
-
# :description => 'hello world!'
|
54
|
-
# )
|
55
|
-
# album.name # => 'FbGraoh test'
|
56
|
-
# album.from # => nil
|
57
|
-
# album.created_time # => nil
|
58
|
-
# album.fetch
|
59
|
-
# album.from # => me
|
60
|
-
# album.created_time # => Sun Sep 12 01:18:36 +0900 2010
|
61
|
-
#
|
62
|
-
# == Bug of Graph API
|
63
|
-
#
|
64
|
-
# According facebook's document, the key for +description+ should be +description+ both when fetching and creating,
|
65
|
-
# but actually you need to use +message+ instead of +description+ only when creating.
|
66
|
-
# It probably facebook's bug, and it might be fixed suddenly.
|
67
|
-
# I highly recommend to send same value both as +description+ and +message+ when creating,
|
68
|
-
# then your code will work without any code change.
|
69
|
-
#
|
70
|
-
# ref) http://developers.facebook.com/docs/reference/api/album
|
71
|
-
#
|
72
|
-
# me = FbGraph::User.me(ACCESS_TOKEN)
|
73
|
-
# album = me.album!(
|
74
|
-
# :name => 'FbGraph test',
|
75
|
-
# :message => 'hello world!',
|
76
|
-
# :description => 'hello world!'
|
77
|
-
# )
|
78
3
|
module Albums
|
79
4
|
def albums(options = {})
|
80
5
|
albums = self.connection(:albums, options)
|
@@ -1,13 +1,5 @@
|
|
1
1
|
module FbGraph
|
2
2
|
module Connections
|
3
|
-
# == Fetch checkins
|
4
|
-
#
|
5
|
-
# * To get a user's check-ins, request the "user_checkins".
|
6
|
-
# * To see the user's friends' check-ins, request the "friends_checkins".
|
7
|
-
# ref) http://developers.facebook.com/docs/api#places
|
8
|
-
#
|
9
|
-
# FbGraph::User.new("matake").checkins(:access_token => ACCESS_TOKEN)
|
10
|
-
# FbGraph::Page.new("Tokyo").checkins(:access_token => ACCESS_TOKEN)
|
11
3
|
module Checkins
|
12
4
|
def checkins(options = {})
|
13
5
|
checkins = self.connection(:checkins, options)
|
@@ -1,32 +1,6 @@
|
|
1
1
|
module FbGraph
|
2
2
|
module Connections
|
3
3
|
module Feed
|
4
|
-
# == Fetching Wall posts
|
5
|
-
#
|
6
|
-
# === User Wall
|
7
|
-
#
|
8
|
-
# FbGraph::User.new(username).feed
|
9
|
-
# # => Array of FbGraph::Post
|
10
|
-
#
|
11
|
-
# === Page Wall
|
12
|
-
#
|
13
|
-
# FbGraph::Page.new(page_id).feed
|
14
|
-
# # => Array of FbGraph::Post
|
15
|
-
#
|
16
|
-
# === Application Wall
|
17
|
-
#
|
18
|
-
# FbGraph::Application.new(page_id).feed
|
19
|
-
# # => Array of FbGraph::Post
|
20
|
-
#
|
21
|
-
# === Event Wall
|
22
|
-
#
|
23
|
-
# FbGraph::Event.new(page_id).feed
|
24
|
-
# # => Array of FbGraph::Post
|
25
|
-
#
|
26
|
-
# === Group Wall
|
27
|
-
#
|
28
|
-
# FbGraph::Group.new(page_id).feed
|
29
|
-
# # => Array of FbGraph::Post
|
30
4
|
def feed(options = {})
|
31
5
|
posts = self.connection(:feed, options)
|
32
6
|
posts.map! do |post|
|
@@ -36,49 +10,6 @@ module FbGraph
|
|
36
10
|
end
|
37
11
|
end
|
38
12
|
|
39
|
-
# == Updating Wall
|
40
|
-
#
|
41
|
-
# * See supported arguments here http://developers.facebook.com/docs/reference/api/post
|
42
|
-
# * You need admin user's access_token to update Page/Application/Event/Group wall as itself
|
43
|
-
#
|
44
|
-
# === User Wall
|
45
|
-
#
|
46
|
-
# me = FbGraph::User.me(ACCESS_TOKEN)
|
47
|
-
# me.feed!(
|
48
|
-
# :message => 'Updating via FbGraph'
|
49
|
-
# )
|
50
|
-
#
|
51
|
-
# === Page Wall
|
52
|
-
#
|
53
|
-
# page = FbGraph::Page.new(page_id)
|
54
|
-
# page.feed!(
|
55
|
-
# :access_token => ACCESS_TOKEN,
|
56
|
-
# :message => 'Updating via FbGraph'
|
57
|
-
# )
|
58
|
-
#
|
59
|
-
# === Application Wall
|
60
|
-
#
|
61
|
-
# application = FbGraph::Page.new(application_id)
|
62
|
-
# application.feed!(
|
63
|
-
# :access_token => ACCESS_TOKEN,
|
64
|
-
# :message => 'Updating via FbGraph'
|
65
|
-
# )
|
66
|
-
#
|
67
|
-
# === Event Wall
|
68
|
-
#
|
69
|
-
# event = FbGraph::Event.new(event_id)
|
70
|
-
# event.feed!(
|
71
|
-
# :access_token => ACCESS_TOKEN,
|
72
|
-
# :message => 'Updating via FbGraph'
|
73
|
-
# )
|
74
|
-
#
|
75
|
-
# === Group Wall
|
76
|
-
#
|
77
|
-
# group = FbGraph::Group.new(group_id)
|
78
|
-
# group.feed!(
|
79
|
-
# :access_token => ACCESS_TOKEN,
|
80
|
-
# :message => 'Updating via FbGraph'
|
81
|
-
# )
|
82
13
|
def feed!(options = {})
|
83
14
|
post = post(options.merge(:connection => :feed))
|
84
15
|
Post.new(post.delete(:id), options.merge(post).merge(
|
data/lib/fb_graph/education.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
module FbGraph
|
2
|
+
class Klass < Page
|
3
|
+
attr_accessor :with, :start_date, :end_date
|
4
|
+
|
5
|
+
def initialize(identifier, attributes = {})
|
6
|
+
super
|
7
|
+
@with = []
|
8
|
+
if attributes[:with]
|
9
|
+
attributes[:with].each do |user|
|
10
|
+
@with << User.new(user.delete(:id), user)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
if attributes[:start_date]
|
14
|
+
year, month = attributes[:start_date].split('-').collect(&:to_i)
|
15
|
+
@start_date = if month.blank? || month == 0
|
16
|
+
Date.new(year)
|
17
|
+
else
|
18
|
+
Date.new(year, month)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
if attributes[:end_date]
|
22
|
+
year, month = attributes[:end_date].split('-').collect(&:to_i)
|
23
|
+
@end_date = if month.blank? || month == 0
|
24
|
+
Date.new(year)
|
25
|
+
else
|
26
|
+
Date.new(year, month)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
module FbGraph
|
2
|
+
class Page
|
3
|
+
module CategoryAttributes
|
4
|
+
@@attributes = {}
|
5
|
+
@@attributes[:raw] = [
|
6
|
+
:affiliation,
|
7
|
+
:artists_we_like,
|
8
|
+
:attire,
|
9
|
+
:awards,
|
10
|
+
:band_interests,
|
11
|
+
:band_members,
|
12
|
+
:bio,
|
13
|
+
:booking_agent,
|
14
|
+
:can_post,
|
15
|
+
:company_overview,
|
16
|
+
:culinary_team,
|
17
|
+
:current_location,
|
18
|
+
:directed_by,
|
19
|
+
:features,
|
20
|
+
:general_info,
|
21
|
+
:general_manager,
|
22
|
+
:genre,
|
23
|
+
:influences,
|
24
|
+
:is_community_page,
|
25
|
+
:link,
|
26
|
+
:location,
|
27
|
+
:mission,
|
28
|
+
:mpg,
|
29
|
+
:personal_info,
|
30
|
+
:personal_interests,
|
31
|
+
:phone,
|
32
|
+
:plot_outline,
|
33
|
+
:press_contact,
|
34
|
+
:price_range,
|
35
|
+
:produced_by,
|
36
|
+
:products,
|
37
|
+
:public_transit,
|
38
|
+
:record_label,
|
39
|
+
:screenplay_by,
|
40
|
+
:starring,
|
41
|
+
:studio,
|
42
|
+
:website,
|
43
|
+
:written_by
|
44
|
+
]
|
45
|
+
@@attributes[:symbols] = [
|
46
|
+
:parking,
|
47
|
+
:payment_options,
|
48
|
+
:restaurant_services,
|
49
|
+
:restaurant_specialties
|
50
|
+
]
|
51
|
+
@@attributes[:date] = [
|
52
|
+
:birthday,
|
53
|
+
:built,
|
54
|
+
:founded,
|
55
|
+
:release_date
|
56
|
+
]
|
57
|
+
@@attributes[:others] = [
|
58
|
+
:checkin_count,
|
59
|
+
:hours,
|
60
|
+
:location
|
61
|
+
]
|
62
|
+
attr_accessor *@@attributes.values.flatten
|
63
|
+
|
64
|
+
def self.included(klass)
|
65
|
+
klass.alias_method_chain :initialize, :category_specific_attributes
|
66
|
+
end
|
67
|
+
|
68
|
+
def initialize_with_category_specific_attributes(identifier, attributes = {})
|
69
|
+
initialize_without_category_specific_attributes identifier, attributes
|
70
|
+
@@attributes[:raw].each do |key|
|
71
|
+
self.send :"#{key}=", attributes[key]
|
72
|
+
end
|
73
|
+
@@attributes[:symbols].each do |key|
|
74
|
+
self.send :"#{key}=", []
|
75
|
+
if attributes[key]
|
76
|
+
self.send :"#{key}=", attributes[key].keys.collect(&:to_sym)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
@@attributes[:date].each do |key|
|
80
|
+
if attributes[key]
|
81
|
+
value = Date.parse(attributes[key]) rescue attributes[key]
|
82
|
+
self.send :"#{key}=", value
|
83
|
+
end
|
84
|
+
end
|
85
|
+
@checkin_count = attributes[:checkins]
|
86
|
+
@hours = {}
|
87
|
+
if attributes[:hours]
|
88
|
+
utc_beginning_of_day = Time.now.utc.beginning_of_day
|
89
|
+
attributes[:hours].each do |key, value|
|
90
|
+
date, index, mode = key.split('_')
|
91
|
+
index = index.to_i - 1
|
92
|
+
date, mode = date.to_sym, mode.to_sym
|
93
|
+
time = value.since(utc_beginning_of_day)
|
94
|
+
time = Time.utc(1970, 1, 1, time.hour, time.min)
|
95
|
+
@hours[date] ||= []
|
96
|
+
@hours[date][index] ||= {}
|
97
|
+
@hours[date][index][mode] = time
|
98
|
+
end
|
99
|
+
end
|
100
|
+
if attributes[:location]
|
101
|
+
@location = Venue.new(attributes[:location])
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
include CategoryAttributes
|
107
|
+
end
|
108
|
+
end
|
data/lib/fb_graph/page.rb
CHANGED
@@ -16,45 +16,16 @@ module FbGraph
|
|
16
16
|
include Connections::Videos
|
17
17
|
extend Searchable
|
18
18
|
|
19
|
-
attr_accessor :name, :username, :
|
19
|
+
attr_accessor :name, :username, :category, :like_count
|
20
20
|
|
21
21
|
def initialize(identifier, attributes = {})
|
22
22
|
super
|
23
|
-
|
24
|
-
|
25
|
-
@link = attributes[:link]
|
26
|
-
@category = attributes[:category]
|
27
|
-
if (founded = attributes[:founded])
|
28
|
-
@founded = Date.parse(founded) rescue Date.new(founded.to_i)
|
29
|
-
end
|
30
|
-
@can_post = attributes[:can_post]
|
31
|
-
@is_community_page = attributes[:is_community_page]
|
32
|
-
@company_overview = attributes[:company_overview]
|
33
|
-
@general_info = attributes[:general_info]
|
34
|
-
@mission = attributes[:mission]
|
35
|
-
@products = attributes[:products]
|
36
|
-
@public_transit = attributes[:public_transit]
|
37
|
-
if (release_date = attributes[:release_date])
|
38
|
-
@release_date = Date.parse(release_date) rescue release_date
|
39
|
-
end
|
40
|
-
if (location = attributes[:location])
|
41
|
-
@location = Venue.new(location)
|
42
|
-
end
|
43
|
-
@website = attributes[:website]
|
44
|
-
@websites = attributes[:website].to_s.split
|
45
|
-
@like_count = attributes[:likes]
|
46
|
-
@checkin_count = attributes[:checkins]
|
47
|
-
@with = []
|
48
|
-
if attributes[:with]
|
49
|
-
attributes[:with].each do |user|
|
50
|
-
@with << User.new(user.delete(:id), user)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
if attributes[:created_time]
|
54
|
-
@created_time = Time.parse(attributes[:created_time]).utc
|
23
|
+
[:name, :username, :category].each do |key|
|
24
|
+
self.send :"#{key}=", attributes[key]
|
55
25
|
end
|
26
|
+
@like_count = attributes[:likes] || attributes[:fan_count]
|
56
27
|
end
|
57
28
|
end
|
58
29
|
end
|
59
30
|
|
60
|
-
require 'fb_graph/page/
|
31
|
+
require 'fb_graph/page/category_attributes'
|
data/lib/fb_graph/project.rb
CHANGED
@@ -1,25 +1,4 @@
|
|
1
1
|
module FbGraph
|
2
|
-
class Project <
|
3
|
-
attr_accessor :start_date, :end_date
|
4
|
-
|
5
|
-
def initialize(identifier, attributes = {})
|
6
|
-
super
|
7
|
-
if attributes[:start_date]
|
8
|
-
year, month = attributes[:start_date].split('-').collect(&:to_i)
|
9
|
-
@start_date = if month.blank? || month == 0
|
10
|
-
Date.new(year)
|
11
|
-
else
|
12
|
-
Date.new(year, month)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
if attributes[:end_date]
|
16
|
-
year, month = attributes[:end_date].split('-').collect(&:to_i)
|
17
|
-
@end_date = if month.blank? || month == 0
|
18
|
-
Date.new(year)
|
19
|
-
else
|
20
|
-
Date.new(year, month)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
2
|
+
class Project < Klass
|
24
3
|
end
|
25
4
|
end
|