fb_graph 1.8.6 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/Gemfile.lock +1 -1
  2. data/VERSION +1 -1
  3. data/lib/fb_graph/album.rb +5 -4
  4. data/lib/fb_graph/application.rb +2 -0
  5. data/lib/fb_graph/auth/cookie.rb +4 -3
  6. data/lib/fb_graph/connections/accounts.rb +6 -1
  7. data/lib/fb_graph/connections/docs.rb +14 -0
  8. data/lib/fb_graph/connections/inbox.rb +5 -2
  9. data/lib/fb_graph/connections/outbox.rb +17 -0
  10. data/lib/fb_graph/connections/reviews.rb +14 -0
  11. data/lib/fb_graph/connections/threads.rb +14 -0
  12. data/lib/fb_graph/doc.rb +18 -0
  13. data/lib/fb_graph/domain.rb +32 -0
  14. data/lib/fb_graph/group.rb +3 -4
  15. data/lib/fb_graph/insight.rb +0 -2
  16. data/lib/fb_graph/link.rb +1 -2
  17. data/lib/fb_graph/message.rb +1 -8
  18. data/lib/fb_graph/node.rb +3 -3
  19. data/lib/fb_graph/post.rb +14 -5
  20. data/lib/fb_graph/property.rb +13 -0
  21. data/lib/fb_graph/review.rb +20 -0
  22. data/lib/fb_graph/thread.rb +1 -2
  23. data/lib/fb_graph/user.rb +53 -44
  24. data/lib/fb_graph/video.rb +12 -3
  25. data/lib/fb_graph.rb +4 -0
  26. data/spec/fb_graph/album_spec.rb +2 -0
  27. data/spec/fb_graph/auth/cookie_spec.rb +18 -7
  28. data/spec/fb_graph/connections/accounts_spec.rb +13 -0
  29. data/spec/fb_graph/connections/docs_spec.rb +14 -0
  30. data/spec/fb_graph/connections/home_spec.rb +0 -1
  31. data/spec/fb_graph/connections/inbox_spec.rb +6 -3
  32. data/spec/fb_graph/connections/insights_spec.rb +2 -2
  33. data/spec/fb_graph/connections/likes_spec.rb +2 -2
  34. data/spec/fb_graph/connections/outbox_spec.rb +15 -0
  35. data/spec/fb_graph/connections/reviews_spec.rb +14 -0
  36. data/spec/fb_graph/connections/threads_spec.rb +12 -0
  37. data/spec/fb_graph/doc_spec.rb +27 -0
  38. data/spec/fb_graph/domain_spec.rb +23 -0
  39. data/spec/fb_graph/group_spec.rb +0 -18
  40. data/spec/fb_graph/link_spec.rb +0 -2
  41. data/spec/fb_graph/message_spec.rb +0 -2
  42. data/spec/fb_graph/node_spec.rb +2 -2
  43. data/spec/fb_graph/post_spec.rb +24 -2
  44. data/spec/fb_graph/user_spec.rb +0 -3
  45. data/spec/fb_graph/video_spec.rb +14 -20
  46. data/spec/helpers/webmock_helper.rb +1 -1
  47. data/spec/mock_json/applications/accounts/private.json +9 -0
  48. data/spec/mock_json/applications/reviews/public.json +354 -0
  49. data/spec/mock_json/domains/search_public.json +10 -0
  50. data/spec/mock_json/groups/docs/private.json +31 -0
  51. data/spec/mock_json/posts/no_comments.json +1 -2
  52. data/spec/mock_json/users/feed/arjun_private.json +0 -3
  53. data/spec/mock_json/users/feed/arjun_public.json +0 -3
  54. data/spec/mock_json/users/home/me_private.json +0 -22
  55. data/spec/mock_json/users/home/me_private_next.json +0 -24
  56. data/spec/mock_json/users/home/me_private_previous.json +0 -1
  57. data/spec/mock_json/users/inbox/me_private.json +43 -78
  58. data/spec/mock_json/users/outbox/me_private.json +51 -0
  59. data/spec/mock_json/users/posts/arjun_private.json +0 -4
  60. data/spec/mock_json/users/posts/arjun_public.json +0 -4
  61. data/spec/mock_json/users/tagged/arjun_private.json +0 -1
  62. data/spec/mock_json/users/tagged/arjun_public.json +0 -1
  63. data/spec/mock_json/users/threads/me_private.json +91 -0
  64. data/spec/mock_json/videos/private.json +78 -0
  65. metadata +74 -2
data/Gemfile.lock CHANGED
@@ -15,7 +15,7 @@ GEM
15
15
  diff-lcs (1.1.2)
16
16
  httpclient (2.2.1)
17
17
  i18n (0.6.0)
18
- json (1.5.2)
18
+ json (1.5.3)
19
19
  rack (1.3.0)
20
20
  rack-oauth2 (0.8.1)
21
21
  activesupport (>= 2.3)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.6
1
+ 1.9.0
@@ -5,7 +5,7 @@ module FbGraph
5
5
  include Connections::Likes
6
6
  include Connections::Picture
7
7
 
8
- attr_accessor :from, :name, :description, :location, :link, :privacy, :count, :created_time, :updated_time, :type
8
+ attr_accessor :from, :name, :description, :location, :link, :cover_photo, :privacy, :count, :type, :created_time, :updated_time
9
9
 
10
10
  def initialize(identifier, attributes = {})
11
11
  super
@@ -20,15 +20,16 @@ module FbGraph
20
20
  # NOTE:
21
21
  # for some reason, facebook uses different parameter names.
22
22
  # "description" in GET & "message" in POST
23
- # TODO:
24
- # check whether this issue is solved or not
25
23
  @description = attributes[:description] || attributes[:message]
26
24
  @location = attributes[:location]
27
25
  @link = attributes[:link]
28
26
  @privacy = attributes[:privacy]
29
27
  @count = attributes[:count]
30
28
  @type = attributes[:type]
31
-
29
+
30
+ @cover_photo = if attributes[:cover_photo]
31
+ Photo.new(attributes[:cover_photo])
32
+ end
32
33
  @created_time = if attributes[:created_time]
33
34
  Time.parse(attributes[:created_time]).utc
34
35
  end
@@ -1,5 +1,6 @@
1
1
  module FbGraph
2
2
  class Application < Node
3
+ include Connections::Accounts
3
4
  include Connections::Albums
4
5
  include Connections::Events
5
6
  include Connections::Feed
@@ -10,6 +11,7 @@ module FbGraph
10
11
  include Connections::Photos
11
12
  include Connections::Picture
12
13
  include Connections::Posts
14
+ include Connections::Reviews
13
15
  include Connections::Statuses
14
16
  include Connections::Subscriptions
15
17
  include Connections::Tagged
@@ -6,10 +6,11 @@ module FbGraph
6
6
  # If you want access token, use FbGraph::Auth.new(APP_ID, APP_SECRET, :cookie => {..}) instead
7
7
  class Cookie
8
8
  def self.parse(client, cookie)
9
- fb_cookie_string = if cookie.respond_to?(:[])
10
- cookie["fbs_#{client.identifier}"]
11
- else
9
+ fb_cookie_string = case cookie
10
+ when String
12
11
  cookie
12
+ else
13
+ cookie["fbs_#{client.identifier}"]
13
14
  end
14
15
 
15
16
  raise VerificationFailed.new(401, 'Facebook cookie not found') if fb_cookie_string.blank?
@@ -5,7 +5,12 @@ module FbGraph
5
5
  accounts = self.connection(:accounts, options)
6
6
  accounts.map! do |account|
7
7
  account[:access_token] ||= options[:access_token] || self.access_token
8
- Page.new(account[:id], account)
8
+ case self
9
+ when User
10
+ Page.new(account[:id], account)
11
+ when Application
12
+ TestUser.new(account[:id], account)
13
+ end
9
14
  end
10
15
  end
11
16
  end
@@ -0,0 +1,14 @@
1
+ module FbGraph
2
+ module Connections
3
+ module Docs
4
+ def docs(options = {})
5
+ docs = self.connection(:docs, options)
6
+ docs.map! do |doc|
7
+ Doc.new(doc[:id], doc.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ ))
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -2,9 +2,12 @@ module FbGraph
2
2
  module Connections
3
3
  module Inbox
4
4
  def inbox(options = {})
5
- threads = self.connection(:threads, options)
5
+ threads = self.connection(:inbox, options)
6
6
  threads.map! do |thread|
7
- Thread.new(thread[:id], thread.merge(
7
+ # NOTE:
8
+ # Inbox API doesn't return thread object until their message platform becomes broadly available.
9
+ # Use Post instead of Thread for now.
10
+ Post.new(thread[:id], thread.merge(
8
11
  :access_token => options[:access_token] || self.access_token
9
12
  ))
10
13
  end
@@ -0,0 +1,17 @@
1
+ module FbGraph
2
+ module Connections
3
+ module Outbox
4
+ def outbox(options = {})
5
+ threads = self.connection(:outbox, options)
6
+ threads.map! do |thread|
7
+ # NOTE:
8
+ # Inbox API doesn't return thread object until their message platform becomes broadly available.
9
+ # Use Post instead of Thread for now.
10
+ Post.new(thread[:id], thread.merge(
11
+ :access_token => options[:access_token] || self.access_token
12
+ ))
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ module FbGraph
2
+ module Connections
3
+ module Reviews
4
+ def reviews(options = {})
5
+ reviews = self.connection(:reviews, options)
6
+ reviews.map! do |review|
7
+ Review.new(review[:id], review.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ ))
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module FbGraph
2
+ module Connections
3
+ module Threads
4
+ def threads(options = {})
5
+ threads = self.connection(:threads, options)
6
+ threads.map! do |thread|
7
+ Thread.new(thread[:id], thread.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ ))
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ module FbGraph
2
+ class Doc < Node
3
+ attr_accessor :from, :subject, :icon, :updated_time, :revision
4
+
5
+ def initialize(identifier, attributes = {})
6
+ super
7
+ @from = if attributes[:from]
8
+ User.new(attributes[:from][:id], attributes[:from])
9
+ end
10
+ @subject = attributes[:subject]
11
+ @icon = attributes[:icon]
12
+ @revision = attributes[:revision]
13
+ @updated_time = if attributes[:updated_time]
14
+ Time.parse(attributes[:updated_time]).utc
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,32 @@
1
+ module FbGraph
2
+ class Domain < Node
3
+ include Connections::Insights
4
+
5
+ attr_accessor :name
6
+
7
+ def initialize(identifier, attributes = {})
8
+ super
9
+ @name = attributes[:name]
10
+ end
11
+
12
+ # NOTE:
13
+ # Don't use Searchable here.
14
+ # Domain search doesn't return paginatable array.
15
+ def self.search(domains)
16
+ fake_domain = 'fake.com'
17
+ domains = Array(domains)
18
+ unless domains.include?(fake_domain)
19
+ @using_fake = true
20
+ domains << fake_domain
21
+ end
22
+ results = Node.new(nil).send(:get, :domains => domains.join(','))
23
+ results = results.map do |identifier, attributes|
24
+ if @using_fake && attributes[:name] == fake_domain
25
+ next
26
+ end
27
+ new(identifier, attributes)
28
+ end
29
+ results.compact
30
+ end
31
+ end
32
+ end
@@ -1,12 +1,13 @@
1
1
  module FbGraph
2
2
  class Group < Node
3
+ include Connections::Docs
3
4
  include Connections::Feed
4
5
  include Connections::Members
5
6
  include Connections::Picture
6
7
  include Connections::Videos
7
8
  extend Searchable
8
9
 
9
- attr_accessor :owner, :name, :description, :link, :icon, :venue, :privacy, :version, :updated_time
10
+ attr_accessor :owner, :name, :email, :description, :link, :icon, :privacy, :version, :updated_time
10
11
 
11
12
  def initialize(identifier, attributes = {})
12
13
  super
@@ -14,14 +15,12 @@ module FbGraph
14
15
  @owner = User.new(owner[:id], owner)
15
16
  end
16
17
  @name = attributes[:name]
18
+ @email = attributes[:email]
17
19
  @description = attributes[:description]
18
20
  @link = attributes[:link]
19
21
  @icon = attributes[:icon]
20
22
  @privacy = attributes[:privacy]
21
23
  @version = attributes[:version]
22
- if attributes[:venue]
23
- @venue = Venue.new(attributes[:venue])
24
- end
25
24
  if attributes[:updated_time]
26
25
  @updated_time = Time.parse(attributes[:updated_time]).utc
27
26
  end
@@ -1,7 +1,5 @@
1
1
  module FbGraph
2
2
  class Insight < Node
3
- include Comparison
4
-
5
3
  attr_accessor :name, :period, :values, :description
6
4
 
7
5
  def initialize(identifier, attributes = {})
data/lib/fb_graph/link.rb CHANGED
@@ -3,7 +3,7 @@ module FbGraph
3
3
  include Connections::Comments
4
4
  include Connections::Likes
5
5
 
6
- attr_accessor :from, :link, :name, :caption, :description, :icon, :picture, :message, :created_time
6
+ attr_accessor :from, :link, :name, :description, :icon, :picture, :message, :created_time
7
7
 
8
8
  def initialize(identifier, attributes = {})
9
9
  super
@@ -16,7 +16,6 @@ module FbGraph
16
16
  end
17
17
  @name = attributes[:name]
18
18
  @link = attributes[:link]
19
- @caption = attributes[:caption]
20
19
  @description = attributes[:description]
21
20
  @icon = attributes[:icon]
22
21
  @picture = attributes[:picture] # NOTE: this is external image, so isn't connection.
@@ -5,11 +5,10 @@ module FbGraph
5
5
  # include Connections::Shares
6
6
  include Connections::Tags
7
7
 
8
- attr_accessor :subject, :message, :from, :to, :tags, :created_time
8
+ attr_accessor :message, :from, :to, :created_time
9
9
 
10
10
  def initialize(identifier, attributes = {})
11
11
  super
12
- @subject = attributes[:subject]
13
12
  @message = attributes[:message]
14
13
  if (from = attributes[:from])
15
14
  @from = User.new(from[:id], from)
@@ -20,12 +19,6 @@ module FbGraph
20
19
  @to << User.new(to[:id], to)
21
20
  end
22
21
  end
23
- @tags = []
24
- if attributes[:tags]
25
- Collection.new(attributes[:tags]).each do |tag|
26
- @tags << Tag.new(tag)
27
- end
28
- end
29
22
  if attributes[:created_time]
30
23
  @created_time = Time.parse(attributes[:created_time]).utc
31
24
  end
data/lib/fb_graph/node.rb CHANGED
@@ -63,14 +63,14 @@ module FbGraph
63
63
 
64
64
  def build_params(params)
65
65
  _params_ = params.dup
66
- _params_[:oauth_token] = (_params_.delete(:access_token) || self.access_token).to_s
66
+ _params_[:access_token] ||= self.access_token
67
67
  _params_.delete_if do |k, v|
68
68
  v.blank?
69
69
  end
70
70
  _params_.each do |key, value|
71
- if value.present? && ![Symbol, String, Numeric, IO].any? { |klass| value.is_a? klass }
71
+ if value.present? && ![Symbol, String, Numeric, Rack::OAuth2::AccessToken::Legacy, IO].any? { |klass| value.is_a? klass }
72
72
  _params_[key] = value.to_json
73
- elsif [Symbol, Numeric].any? { |klass| value.is_a? klass }
73
+ elsif [Symbol, Numeric, Rack::OAuth2::AccessToken::Legacy].any? { |klass| value.is_a? klass }
74
74
  _params_[key] = value.to_s
75
75
  end
76
76
  end
data/lib/fb_graph/post.rb CHANGED
@@ -4,7 +4,7 @@ module FbGraph
4
4
  include Connections::Likes
5
5
  extend Searchable
6
6
 
7
- attr_accessor :from, :to, :message, :picture, :link, :name, :caption, :description, :source, :icon, :attribution, :actions, :type, :privacy, :targeting, :created_time, :updated_time
7
+ attr_accessor :from, :to, :message, :picture, :link, :name, :caption, :description, :source, :properties, :icon, :actions, :privacy, :type, :graph_object_id, :application, :targeting, :created_time, :updated_time
8
8
 
9
9
  def initialize(identifier, attributes = {})
10
10
  super
@@ -40,15 +40,19 @@ module FbGraph
40
40
  @caption = attributes[:caption]
41
41
  @description = attributes[:description]
42
42
  @source = attributes[:source]
43
- @icon = attributes[:icon]
44
- @attribution = attributes[:attribution]
45
- @actions = []
43
+ @properties = []
44
+ if attributes[:properties]
45
+ attributes[:properties].each do |property|
46
+ @properties << Property.new(property)
47
+ end
48
+ end
49
+ @icon = attributes[:icon]
50
+ @actions = []
46
51
  if attributes[:actions]
47
52
  attributes[:actions].each do |action|
48
53
  @actions << Action.new(action)
49
54
  end
50
55
  end
51
- @type = attributes[:type]
52
56
  if attributes[:privacy]
53
57
  @privacy = if attributes[:privacy].is_a?(Privacy)
54
58
  attributes[:privacy]
@@ -56,6 +60,11 @@ module FbGraph
56
60
  Privacy.new(attributes[:privacy])
57
61
  end
58
62
  end
63
+ @type = attributes[:type]
64
+ @graph_object_id = attributes[:object_id]
65
+ if attributes[:application]
66
+ @application = Application.new(attributes[:application][:id], attributes[:application])
67
+ end
59
68
  if attributes[:targeting]
60
69
  @targeting = if attributes[:targeting].is_a?(Targeting)
61
70
  attributes[:targeting]
@@ -0,0 +1,13 @@
1
+ module FbGraph
2
+ class Property
3
+ include Comparison
4
+
5
+ attr_accessor :name, :text, :href
6
+
7
+ def initialize(attriutes = {})
8
+ @name = attriutes[:name]
9
+ @text = attriutes[:text]
10
+ @href = attriutes[:href]
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ module FbGraph
2
+ class Review < Node
3
+ attr_accessor :from, :to, :message, :rating, :created_time
4
+
5
+ def initialize(identifier, attributes = {})
6
+ super
7
+ @from = if attributes[:from]
8
+ User.new(attributes[:from][:id], attributes[:from])
9
+ end
10
+ @to = if attributes[:to]
11
+ Application.new(attributes[:to][:id], attributes[:to])
12
+ end
13
+ @message = attributes[:message]
14
+ @rating = attributes[:rating]
15
+ @created_time = if attributes[:created_time]
16
+ Time.parse(attributes[:created_time]).utc
17
+ end
18
+ end
19
+ end
20
+ end
@@ -6,11 +6,10 @@ module FbGraph
6
6
  include Connections::Senders
7
7
  include Connections::Tags
8
8
 
9
- attr_accessor :subject, :snippet, :message_count, :unread_count, :updated_time
9
+ attr_accessor :snippet, :message_count, :unread_count, :updated_time
10
10
 
11
11
  def initialize(identifier, attributes = {})
12
12
  super
13
- @subject = attributes[:subject] # NOTE: New Facebook Message platform will make this field blank.
14
13
  @snippet = attributes[:snippet]
15
14
  @message_count = attributes[:message_count]
16
15
  @unread_count = attributes[:unread_count].to_i
data/lib/fb_graph/user.rb CHANGED
@@ -21,6 +21,7 @@ module FbGraph
21
21
  include Connections::Movies
22
22
  include Connections::Music
23
23
  include Connections::Notes
24
+ include Connections::Outbox
24
25
  include Connections::Payments
25
26
  include Connections::Permissions
26
27
  include Connections::Photos
@@ -29,29 +30,44 @@ module FbGraph
29
30
  include Connections::Statuses
30
31
  include Connections::Tagged
31
32
  include Connections::Television
33
+ include Connections::Threads
32
34
  include Connections::Videos
33
35
  extend Searchable
34
36
 
35
- attr_accessor :first_name, :last_name, :name, :link, :about, :birthday, :work, :education, :email, :website, :hometown, :location, :bio, :quotes, :gender, :interested_in, :meeting_for, :relationship, :relationship_status, :religion, :political, :verified, :significant_other, :timezone, :updated_time, :sports, :favorite_teams, :favorite_athletes, :inspirational_people, :locale, :languages, :third_party_id, :address, :mobile_phone
37
+ attr_accessor :name, :first_name, :middle_name, :last_name, :gender, :locale, :languages, :link, :username, :third_party_id, :timezone, :updated_time, :verified, :about, :bio, :birthday, :education, :email, :hometown, :interested_in, :location, :political, :favorite_teams, :quotes, :relationship_status, :religion, :significant_other, :video_upload_limits, :website, :work
38
+
39
+ # NOTE: below are non-documented
40
+ attr_accessor :sports, :favorite_athletes, :inspirational_people, :address, :mobile_phone
36
41
 
37
42
  def initialize(identifier, attributes = {})
38
43
  super
39
- @first_name = attributes[:first_name]
40
- @last_name = attributes[:last_name]
41
- @name = attributes[:name]
42
- @link = attributes[:link]
43
- @about = attributes[:about]
44
+ @name = attributes[:name]
45
+ @first_name = attributes[:first_name]
46
+ @middle_name = attributes[:middle_name]
47
+ @last_name = attributes[:last_name]
48
+ @gender = attributes[:gender]
49
+ @locale = attributes[:locale]
50
+ @languages = []
51
+ if attributes[:languages]
52
+ attributes[:languages].each do |language|
53
+ @languages << Page.new(language[:id], language)
54
+ end
55
+ end
56
+ @link = attributes[:link]
57
+ @username = attributes[:username]
58
+ @third_party_id = attributes[:third_party_id]
59
+ @timezone = attributes[:timezone]
60
+ if attributes[:updated_time]
61
+ @updated_time = Time.parse(attributes[:updated_time]).utc
62
+ end
63
+ @verified = attributes[:verified]
64
+ @about = attributes[:about]
65
+ @bio = attributes[:bio]
44
66
  if attributes[:birthday]
45
67
  month, day, year = attributes[:birthday].split('/').collect(&:to_i)
46
68
  year ||= 0
47
69
  @birthday = Date.new(year, month, day)
48
70
  end
49
- @work = []
50
- if attributes[:work]
51
- attributes[:work].each do |work|
52
- @work << Work.new(work)
53
- end
54
- end
55
71
  @education = []
56
72
  if attributes[:education]
57
73
  attributes[:education].each do |education|
@@ -59,25 +75,43 @@ module FbGraph
59
75
  end
60
76
  end
61
77
  @email = attributes[:email]
62
- @website = attributes[:website]
63
78
  if (hometown = attributes[:hometown])
64
79
  @hometown = Page.new(hometown[:id], hometown)
65
80
  end
81
+ @interested_in = Array(attributes[:interested_in])
66
82
  if (location = attributes[:location])
67
83
  @location = Page.new(location[:id], location)
68
84
  end
69
- @sports = []
70
- if (sports = attributes[:sports])
71
- sports.each do |sport|
72
- @sports << Page.new(sport[:id], sport)
73
- end
74
- end
85
+ @political = attributes[:political]
75
86
  @favorite_teams = []
76
87
  if attributes[:favorite_teams]
77
88
  attributes[:favorite_teams].each do |favorite_team|
78
89
  @favorite_teams << Page.new(favorite_team[:id], favorite_team)
79
90
  end
80
91
  end
92
+ @quotes = attributes[:quotes]
93
+ @relationship_status = attributes[:relationship_status]
94
+ @religion = attributes[:religion]
95
+ if (significant_other = attributes[:significant_other])
96
+ @significant_other = User.new(significant_other[:id], significant_other)
97
+ end
98
+ # NOTE: couldn't find "video_upload_limits" in the response..
99
+ # @video_upload_limits = ??
100
+ @website = attributes[:website]
101
+ @work = []
102
+ if attributes[:work]
103
+ attributes[:work].each do |work|
104
+ @work << Work.new(work)
105
+ end
106
+ end
107
+
108
+ # NOTE: below are non-documented
109
+ @sports = []
110
+ if (sports = attributes[:sports])
111
+ sports.each do |sport|
112
+ @sports << Page.new(sport[:id], sport)
113
+ end
114
+ end
81
115
  @favorite_athletes = []
82
116
  if attributes[:favorite_athletes]
83
117
  attributes[:favorite_athletes].each do |favorite_athlete|
@@ -90,31 +124,6 @@ module FbGraph
90
124
  @inspirational_people << Page.new(inspirational_person[:id], inspirational_person)
91
125
  end
92
126
  end
93
- @bio = attributes[:bio]
94
- @quotes = attributes[:quotes]
95
- @gender = attributes[:gender]
96
- @interested_in = Array(attributes[:interested_in])
97
- @meeting_for = Array(attributes[:meeting_for])
98
- @relationship = attributes[:relationship]
99
- @relationship_status = attributes[:relationship_status]
100
- @religion = attributes[:religion]
101
- @political = attributes[:political]
102
- @verified = attributes[:verified]
103
- if (significant_other = attributes[:significant_other])
104
- @significant_other = User.new(significant_other[:id], significant_other)
105
- end
106
- @timezone = attributes[:timezone]
107
- @locale = attributes[:locale]
108
- @third_party_id = attributes[:third_party_id]
109
- @languages = []
110
- if attributes[:languages]
111
- attributes[:languages].each do |language|
112
- @languages << Page.new(language[:id], language)
113
- end
114
- end
115
- if attributes[:updated_time]
116
- @updated_time = Time.parse(attributes[:updated_time]).utc
117
- end
118
127
  if attributes[:address]
119
128
  @address = Venue.new(attributes[:address])
120
129
  end
@@ -2,8 +2,9 @@ module FbGraph
2
2
  class Video < Node
3
3
  include Connections::Comments
4
4
  include Connections::Likes
5
+ include Connections::Picture
5
6
 
6
- attr_accessor :from, :message, :description, :length, :created_time, :updated_time
7
+ attr_accessor :from, :tags, :name, :description, :embed_html, :icon, :source, :created_time, :updated_time
7
8
 
8
9
  def initialize(identifier, attributes = {})
9
10
  super
@@ -14,9 +15,17 @@ module FbGraph
14
15
  User.new(from[:id], from)
15
16
  end
16
17
  end
17
- @message = attributes[:message]
18
+ @tags = []
19
+ if attributes[:tags]
20
+ Collection.new(attributes[:tags]).each do |tag|
21
+ @tags << Tag.new(tag)
22
+ end
23
+ end
24
+ @name = attributes[:name]
18
25
  @description = attributes[:description]
19
- @length = attributes[:length]
26
+ @embed_html = attributes[:embed_html]
27
+ @icon = attributes[:icon]
28
+ @source = attributes[:source]
20
29
  if attributes[:created_time]
21
30
  @created_time = Time.parse(attributes[:created_time]).utc
22
31
  end
data/lib/fb_graph.rb CHANGED
@@ -61,6 +61,8 @@ require 'fb_graph/app_request'
61
61
  require 'fb_graph/application'
62
62
  require 'fb_graph/checkin'
63
63
  require 'fb_graph/comment'
64
+ require 'fb_graph/doc'
65
+ require 'fb_graph/domain'
64
66
  require 'fb_graph/event'
65
67
  require 'fb_graph/friend_list'
66
68
  require 'fb_graph/group'
@@ -74,6 +76,8 @@ require 'fb_graph/page'
74
76
  require 'fb_graph/photo'
75
77
  require 'fb_graph/place'
76
78
  require 'fb_graph/post'
79
+ require 'fb_graph/property'
80
+ require 'fb_graph/review'
77
81
  require 'fb_graph/status'
78
82
  require 'fb_graph/tag'
79
83
  require 'fb_graph/thread'
@@ -15,6 +15,7 @@ describe FbGraph::Album do
15
15
  :location => 'Tokyo, Japan',
16
16
  :link => 'http://www.facebook.com/album/12345',
17
17
  :count => 10,
18
+ :cover_photo => '10150146072661729',
18
19
  :type => 'normal',
19
20
  :created_time => '2009-12-29T15:24:50+0000',
20
21
  :updated_time => '2010-01-02T15:37:41+0000',
@@ -37,6 +38,7 @@ describe FbGraph::Album do
37
38
  album.description.should == 'an album for fb_graph test'
38
39
  album.location.should == 'Tokyo, Japan'
39
40
  album.link.should == 'http://www.facebook.com/album/12345'
41
+ album.cover_photo.should == FbGraph::Photo.new('10150146072661729')
40
42
  album.count.should == 10
41
43
  album.type.should == 'normal'
42
44
  album.created_time.should == Time.parse('2009-12-29T15:24:50+0000')
@@ -8,12 +8,23 @@ describe FbGraph::Auth::Cookie, '.parse' do
8
8
  }
9
9
  end
10
10
 
11
- it 'should parse fbs_APP_ID cookie' do
12
- cookie = FbGraph::Auth::Cookie.parse(@client, @cookie)
13
- cookie[:access_token].should == 't'
14
- cookie[:expires].should == 0
15
- cookie[:secret].should == 's'
16
- cookie[:session_key].should == 'k'
17
- cookie[:uid].should == '12345'
11
+ shared_examples_for :parsable_cookie do
12
+ it 'should be parsable' do
13
+ cookie[:access_token].should == 't'
14
+ cookie[:expires].should == 0
15
+ cookie[:secret].should == 's'
16
+ cookie[:session_key].should == 'k'
17
+ cookie[:uid].should == '12345'
18
+ end
19
+ end
20
+
21
+ context 'when whole cookie is given' do
22
+ let(:cookie) { FbGraph::Auth::Cookie.parse(@client, @cookie) }
23
+ it_behaves_like :parsable_cookie
24
+ end
25
+
26
+ context 'when actual cookie string is given' do
27
+ let(:cookie) { FbGraph::Auth::Cookie.parse(@client, @cookie['fbs_client_id']) }
28
+ it_behaves_like :parsable_cookie
18
29
  end
19
30
  end