fb_graph 2.5.9 → 2.6.0

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.
Files changed (230) hide show
  1. data/Gemfile +4 -0
  2. data/Gemfile.lock +12 -7
  3. data/VERSION +1 -1
  4. data/fb_graph.gemspec +2 -2
  5. data/lib/fb_graph/auth/signed_request.rb +1 -1
  6. data/lib/fb_graph/connections/offers.rb +22 -0
  7. data/lib/fb_graph/exception.rb +1 -1
  8. data/lib/fb_graph/node.rb +2 -2
  9. data/lib/fb_graph/offer.rb +33 -0
  10. data/lib/fb_graph/page.rb +8 -1
  11. data/lib/fb_graph.rb +2 -1
  12. data/spec/fb_graph/offer_spec.rb +30 -0
  13. data/spec/fb_graph/open_graph/action_spec.rb +1 -1
  14. data/spec/fb_graph/open_graph/object_spec.rb +1 -1
  15. data/spec/fb_graph/tagged_object_spec.rb +1 -1
  16. data/spec/fb_graph/targeting_spec.rb +1 -1
  17. data/spec/spec_helper.rb +3 -1
  18. metadata +16 -430
  19. data/spec/helpers/webmock_helper.rb +0 -74
  20. data/spec/mock_json/ad_accounts/ad_campaign_stats/test_ad_campaign_stats.json +0 -42
  21. data/spec/mock_json/ad_accounts/ad_campaigns/post_with_redownload.json +0 -19
  22. data/spec/mock_json/ad_accounts/ad_campaigns/post_with_valid_access_token.json +0 -3
  23. data/spec/mock_json/ad_accounts/ad_connection_objects/test_connection_objects.json +0 -34
  24. data/spec/mock_json/ad_accounts/ad_group_stats/test_ad_group_stats.json +0 -62
  25. data/spec/mock_json/ad_accounts/ad_groups/post_with_redownload.json +0 -51
  26. data/spec/mock_json/ad_accounts/ad_groups/post_with_valid_access_token.json +0 -1
  27. data/spec/mock_json/ad_accounts/broad_targeting_categories/test_bct.json +0 -19
  28. data/spec/mock_json/ad_accounts/previews/test_ad_previews.json +0 -7
  29. data/spec/mock_json/ad_accounts/reach_estimates/test_reach_estimates.json +0 -31
  30. data/spec/mock_json/ad_accounts/test_ad_account.json +0 -37
  31. data/spec/mock_json/ad_campaigns/ad_groups/22334455_ad_groups.json +0 -67
  32. data/spec/mock_json/ad_campaigns/test_ad_campaign.json +0 -11
  33. data/spec/mock_json/ad_campaigns/test_ad_campaign_update_with_redownload.json +0 -19
  34. data/spec/mock_json/ad_creatives/test_ad_creative.json +0 -16
  35. data/spec/mock_json/ad_groups/ad_creatives/22334455_ad_creatives.json +0 -18
  36. data/spec/mock_json/ad_groups/test_ad_group.json +0 -14
  37. data/spec/mock_json/ad_groups/test_ad_group_update_with_redownload.json +0 -51
  38. data/spec/mock_json/ad_keyword_suggestions/buffy_suggestions.json +0 -40
  39. data/spec/mock_json/ad_keyword_valids/tige_search.json +0 -14
  40. data/spec/mock_json/ad_keywords/buffy_search.json +0 -42
  41. data/spec/mock_json/albums/photos/matake_private.json +0 -97
  42. data/spec/mock_json/albums/photos/post_with_valid_access_token.json +0 -1
  43. data/spec/mock_json/albums/picture/success.json +0 -5
  44. data/spec/mock_json/app_token_response.json +0 -1
  45. data/spec/mock_json/applications/accounts/private.json +0 -9
  46. data/spec/mock_json/applications/achievements/sample.json +0 -24
  47. data/spec/mock_json/applications/banned/banned_user.json +0 -9
  48. data/spec/mock_json/applications/banned/list.json +0 -13
  49. data/spec/mock_json/applications/fbgraphsample.json +0 -13
  50. data/spec/mock_json/applications/payments/sample.json +0 -25
  51. data/spec/mock_json/applications/roles/list.json +0 -1
  52. data/spec/mock_json/applications/subscriptions/fb_graph_private.json +0 -12
  53. data/spec/mock_json/applications/test_users/created.json +0 -5
  54. data/spec/mock_json/applications/test_users/private.json +0 -14
  55. data/spec/mock_json/blank.json +0 -0
  56. data/spec/mock_json/checkins/search_private.json +0 -54
  57. data/spec/mock_json/checkins/search_public.json +0 -6
  58. data/spec/mock_json/domains/search_public.json +0 -10
  59. data/spec/mock_json/empty.json +0 -1
  60. data/spec/mock_json/events/attending/post_with_valid_access_token.json +0 -1
  61. data/spec/mock_json/events/attending/smartday_private.json +0 -44
  62. data/spec/mock_json/events/declined/post_with_valid_access_token.json +0 -1
  63. data/spec/mock_json/events/declined/smartday_private.json +0 -720
  64. data/spec/mock_json/events/invited/attending.json +0 -7
  65. data/spec/mock_json/events/invited/declined.json +0 -7
  66. data/spec/mock_json/events/invited/not_replied.json +0 -7
  67. data/spec/mock_json/events/invited/smartday_private.json +0 -7092
  68. data/spec/mock_json/events/invited/unsure.json +0 -7
  69. data/spec/mock_json/events/maybe/post_with_valid_access_token.json +0 -1
  70. data/spec/mock_json/events/maybe/smartday_private.json +0 -956
  71. data/spec/mock_json/events/noreply/smartday_private.json +0 -896
  72. data/spec/mock_json/events/with_venue_as_page.json +0 -17
  73. data/spec/mock_json/friend_lists/members/sample.json +0 -82
  74. data/spec/mock_json/groups/docs/private.json +0 -31
  75. data/spec/mock_json/groups/members/emacs_private.json +0 -1996
  76. data/spec/mock_json/open_graph/created.json +0 -1
  77. data/spec/mock_json/open_graph/custom_actions.json +0 -62
  78. data/spec/mock_json/open_graph/play_actions.json +0 -89
  79. data/spec/mock_json/pages/admins/blank.json +0 -3
  80. data/spec/mock_json/pages/admins/sample.json +0 -8
  81. data/spec/mock_json/pages/blocked/create.json +0 -1
  82. data/spec/mock_json/pages/blocked/index.json +0 -10
  83. data/spec/mock_json/pages/blocked/show_blocked.json +0 -6
  84. data/spec/mock_json/pages/blocked/show_non_blocked.json +0 -1
  85. data/spec/mock_json/pages/categories/local_business.json +0 -56
  86. data/spec/mock_json/pages/categories/local_business_fixnum.json +0 -56
  87. data/spec/mock_json/pages/categories/movie.json +0 -15
  88. data/spec/mock_json/pages/categories/music.json +0 -16
  89. data/spec/mock_json/pages/categories/person.json +0 -12
  90. data/spec/mock_json/pages/categories/product.json +0 -15
  91. data/spec/mock_json/pages/checkins/gowalla_private.json +0 -113
  92. data/spec/mock_json/pages/checkins/gowalla_public.json +0 -6
  93. data/spec/mock_json/pages/conversations/list.json +0 -83
  94. data/spec/mock_json/pages/insights/FbGraph_private.json +0 -858
  95. data/spec/mock_json/pages/insights/FbGraph_public.json +0 -6
  96. data/spec/mock_json/pages/insights/page_like_adds/FbGraph_private.json +0 -28
  97. data/spec/mock_json/pages/insights/page_like_adds/day/FbGraph_private.json +0 -28
  98. data/spec/mock_json/pages/milestones/created.json +0 -1
  99. data/spec/mock_json/pages/milestones/list.json +0 -103
  100. data/spec/mock_json/pages/notes/post_with_valid_access_token.json +0 -1
  101. data/spec/mock_json/pages/platform_private.json +0 -13
  102. data/spec/mock_json/pages/platform_public.json +0 -18
  103. data/spec/mock_json/pages/promotable_posts/sample.json +0 -168
  104. data/spec/mock_json/pages/search_fb_graph.json +0 -9
  105. data/spec/mock_json/pages/search_google.json +0 -133
  106. data/spec/mock_json/pages/settings/all_enabled.json +0 -20
  107. data/spec/mock_json/pages/settings/sample.json +0 -20
  108. data/spec/mock_json/pages/statuses/platform_private.json +0 -258
  109. data/spec/mock_json/pages/statuses/platform_public.json +0 -6
  110. data/spec/mock_json/pages/tabs/blank.json +0 -3
  111. data/spec/mock_json/pages/tabs/fb_graph.json +0 -28
  112. data/spec/mock_json/pages/tabs/wall.json +0 -12
  113. data/spec/mock_json/pages/with_token.json +0 -1
  114. data/spec/mock_json/photos/sample.json +0 -270
  115. data/spec/mock_json/photos/with_tags.json +0 -46
  116. data/spec/mock_json/posts/comments/post_with_invalid_access_token.json +0 -1
  117. data/spec/mock_json/posts/comments/post_with_valid_access_token.json +0 -1
  118. data/spec/mock_json/posts/comments/post_without_access_token.json +0 -1
  119. data/spec/mock_json/posts/liked_by_page.json +0 -35
  120. data/spec/mock_json/posts/likes/post_with_invalid_access_token.json +0 -1
  121. data/spec/mock_json/posts/likes/post_with_valid_access_token.json +0 -1
  122. data/spec/mock_json/posts/likes/post_without_access_token.json +0 -1
  123. data/spec/mock_json/posts/no_comments.json +0 -30
  124. data/spec/mock_json/posts/platform_private.json +0 -96
  125. data/spec/mock_json/posts/platform_public.json +0 -60
  126. data/spec/mock_json/posts/to_application.json +0 -17
  127. data/spec/mock_json/posts/to_event.json +0 -20
  128. data/spec/mock_json/posts/to_group.json +0 -78
  129. data/spec/mock_json/posts/with_message.json +0 -40
  130. data/spec/mock_json/posts/with_place.json +0 -33
  131. data/spec/mock_json/posts/with_story.json +0 -28
  132. data/spec/mock_json/query/user/multi_query.json +0 -14
  133. data/spec/mock_json/query/user/with_invalid_token.json +0 -1
  134. data/spec/mock_json/query/user/with_valid_token.json +0 -1
  135. data/spec/mock_json/query/user/without_token.json +0 -1
  136. data/spec/mock_json/questions/options/matake_private.json +0 -52
  137. data/spec/mock_json/questions/options/votes/matake_private.json +0 -15
  138. data/spec/mock_json/statuses/with_likes.json +0 -17
  139. data/spec/mock_json/success.json +0 -1
  140. data/spec/mock_json/thread/former_participants/private.json +0 -14
  141. data/spec/mock_json/thread/messages/created.json +0 -1
  142. data/spec/mock_json/thread/messages/private.json +0 -43
  143. data/spec/mock_json/thread/participants/private.json +0 -14
  144. data/spec/mock_json/thread/senders/private.json +0 -14
  145. data/spec/mock_json/token_introspection/invalid.json +0 -15
  146. data/spec/mock_json/token_introspection/valid.json +0 -10
  147. data/spec/mock_json/token_response.json +0 -1
  148. data/spec/mock_json/token_with_expiry.json +0 -1
  149. data/spec/mock_json/true.json +0 -1
  150. data/spec/mock_json/users/accounts/matake_private.json +0 -157
  151. data/spec/mock_json/users/accounts/matake_private_with_manage_pages_permission.json +0 -16
  152. data/spec/mock_json/users/accounts/matake_public.json +0 -6
  153. data/spec/mock_json/users/activities/arjun_private.json +0 -24
  154. data/spec/mock_json/users/activities/arjun_public.json +0 -6
  155. data/spec/mock_json/users/ad_accounts/me_ad_accounts.json +0 -28
  156. data/spec/mock_json/users/albums/matake_private.json +0 -36
  157. data/spec/mock_json/users/albums/matake_public.json +0 -6
  158. data/spec/mock_json/users/albums/post_with_valid_access_token.json +0 -1
  159. data/spec/mock_json/users/app_requests/created.json +0 -1
  160. data/spec/mock_json/users/app_requests/me_private.json +0 -40
  161. data/spec/mock_json/users/arjun_private.json +0 -109
  162. data/spec/mock_json/users/arjun_public.json +0 -12
  163. data/spec/mock_json/users/books/matake_private.json +0 -9
  164. data/spec/mock_json/users/books/matake_public.json +0 -6
  165. data/spec/mock_json/users/checkins/mattt_private.json +0 -389
  166. data/spec/mock_json/users/checkins/mattt_public.json +0 -6
  167. data/spec/mock_json/users/checkins/posted.json +0 -1
  168. data/spec/mock_json/users/events/matake_private.json +0 -71
  169. data/spec/mock_json/users/events/matake_public.json +0 -6
  170. data/spec/mock_json/users/events/post_with_valid_access_token.json +0 -1
  171. data/spec/mock_json/users/family/family_without_access_token.json +0 -6
  172. data/spec/mock_json/users/family/me_public.json +0 -19
  173. data/spec/mock_json/users/feed/arjun_private.json +0 -508
  174. data/spec/mock_json/users/feed/arjun_public.json +0 -508
  175. data/spec/mock_json/users/feed/post_with_invalid_access_token.json +0 -1
  176. data/spec/mock_json/users/feed/post_with_valid_access_token.json +0 -1
  177. data/spec/mock_json/users/feed/post_without_access_token.json +0 -1
  178. data/spec/mock_json/users/friend_lists/created.json +0 -1
  179. data/spec/mock_json/users/friend_lists/matake.json +0 -20
  180. data/spec/mock_json/users/friend_requests/sample.json +0 -19
  181. data/spec/mock_json/users/friends/arjun_private.json +0 -6
  182. data/spec/mock_json/users/friends/arjun_public.json +0 -6
  183. data/spec/mock_json/users/friends/me_private.json +0 -524
  184. data/spec/mock_json/users/friends/me_public.json +0 -6
  185. data/spec/mock_json/users/games/matake_private.json +0 -10
  186. data/spec/mock_json/users/groups/matake_private.json +0 -48
  187. data/spec/mock_json/users/groups/matake_public.json +0 -6
  188. data/spec/mock_json/users/home/arjun_private.json +0 -6
  189. data/spec/mock_json/users/home/arjun_public.json +0 -6
  190. data/spec/mock_json/users/home/me_private.json +0 -438
  191. data/spec/mock_json/users/home/me_private_next.json +0 -357
  192. data/spec/mock_json/users/home/me_private_previous.json +0 -35
  193. data/spec/mock_json/users/home/me_public.json +0 -6
  194. data/spec/mock_json/users/inbox/before_transition.json +0 -37
  195. data/spec/mock_json/users/interests/matake_private.json +0 -14
  196. data/spec/mock_json/users/likes/arjun_private.json +0 -1394
  197. data/spec/mock_json/users/likes/arjun_public.json +0 -6
  198. data/spec/mock_json/users/likes/fb_graph.json +0 -1
  199. data/spec/mock_json/users/likes/poken.json +0 -1
  200. data/spec/mock_json/users/links/matake_private.json +0 -221
  201. data/spec/mock_json/users/links/post_with_valid_access_token.json +0 -1
  202. data/spec/mock_json/users/me_private.json +0 -233
  203. data/spec/mock_json/users/me_public.json +0 -6
  204. data/spec/mock_json/users/movies/matake_private.json +0 -9
  205. data/spec/mock_json/users/music/matake_private.json +0 -34
  206. data/spec/mock_json/users/mutual_friends/me_and_agektmr.json +0 -126
  207. data/spec/mock_json/users/notes/matake_private.json +0 -308
  208. data/spec/mock_json/users/notifications/all.json +0 -407
  209. data/spec/mock_json/users/outbox/me_private.json +0 -37
  210. data/spec/mock_json/users/permissions/me_private.json +0 -70
  211. data/spec/mock_json/users/picture/success.json +0 -6
  212. data/spec/mock_json/users/pokes/sample.json +0 -1
  213. data/spec/mock_json/users/posts/arjun_private.json +0 -373
  214. data/spec/mock_json/users/posts/arjun_public.json +0 -373
  215. data/spec/mock_json/users/questions/created.json +0 -1
  216. data/spec/mock_json/users/questions/sample.json +0 -465
  217. data/spec/mock_json/users/scores/sample.json +0 -14
  218. data/spec/mock_json/users/statuses/arjun_private.json +0 -233
  219. data/spec/mock_json/users/statuses/arjun_public.json +0 -6
  220. data/spec/mock_json/users/subscribed_to/sample.json +0 -11
  221. data/spec/mock_json/users/subscribers/sample.json +0 -15
  222. data/spec/mock_json/users/tagged/arjun_private.json +0 -303
  223. data/spec/mock_json/users/tagged/arjun_public.json +0 -303
  224. data/spec/mock_json/users/television/matake_private.json +0 -9
  225. data/spec/mock_json/users/threads/me_private.json +0 -91
  226. data/spec/mock_json/users/user_achievements/created.json +0 -1
  227. data/spec/mock_json/users/user_achievements/sample.json +0 -31
  228. data/spec/mock_json/users/videos/kirk_private.json +0 -41
  229. data/spec/mock_json/users/videos/posted.json +0 -1
  230. data/spec/mock_json/videos/private.json +0 -78
data/Gemfile CHANGED
@@ -4,4 +4,8 @@ platforms :jruby do
4
4
  gem 'jruby-openssl', '>= 0.7'
5
5
  end
6
6
 
7
+ group :test do
8
+ gem 'oj'
9
+ end
10
+
7
11
  gemspec
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fb_graph (2.5.8)
4
+ fb_graph (2.6.0)
5
5
  httpclient (>= 2.2.0.2)
6
- json
6
+ multi_json
7
7
  rack-oauth2 (>= 0.14.4)
8
8
  tzinfo
9
9
 
@@ -37,13 +37,17 @@ GEM
37
37
  crack (0.3.1)
38
38
  diff-lcs (1.1.3)
39
39
  erubis (2.7.0)
40
+ fb_graph-mock (0.0.3)
41
+ fb_graph
42
+ rspec
43
+ webmock
40
44
  hashie (1.2.0)
41
45
  hike (1.2.1)
42
46
  httpclient (2.3.0.1)
43
47
  i18n (0.6.1)
44
48
  journey (1.0.4)
45
- json (1.7.5)
46
- multi_json (1.4.0)
49
+ multi_json (1.5.0)
50
+ oj (1.4.7)
47
51
  rack (1.4.1)
48
52
  rack-cache (1.2)
49
53
  rack (>= 0.4)
@@ -56,12 +60,12 @@ GEM
56
60
  rack (>= 1.1)
57
61
  rack-test (0.6.2)
58
62
  rack (>= 1.0)
59
- rake (10.0.2)
63
+ rake (10.0.3)
60
64
  rspec (2.12.0)
61
65
  rspec-core (~> 2.12.0)
62
66
  rspec-expectations (~> 2.12.0)
63
67
  rspec-mocks (~> 2.12.0)
64
- rspec-core (2.12.0)
68
+ rspec-core (2.12.2)
65
69
  rspec-expectations (2.12.0)
66
70
  diff-lcs (~> 1.1.3)
67
71
  rspec-mocks (2.12.0)
@@ -84,7 +88,8 @@ DEPENDENCIES
84
88
  actionpack (>= 3.0.6)
85
89
  cover_me (>= 1.2.0)
86
90
  fb_graph!
91
+ fb_graph-mock
87
92
  jruby-openssl (>= 0.7)
93
+ oj
88
94
  rake (>= 0.8)
89
95
  rspec (>= 2)
90
- webmock (>= 1.6.2)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.5.9
1
+ 2.6.0
data/fb_graph.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.add_runtime_dependency "httpclient", ">= 2.2.0.2"
16
16
  s.add_runtime_dependency "rack-oauth2", ">= 0.14.4"
17
17
  s.add_runtime_dependency "tzinfo"
18
- s.add_runtime_dependency "json"
18
+ s.add_runtime_dependency "multi_json"
19
19
  s.add_development_dependency "rake", ">= 0.8"
20
20
  if RUBY_VERSION >= '1.9'
21
21
  s.add_development_dependency "cover_me", ">= 1.2.0"
@@ -23,6 +23,6 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency "rcov", ">= 0.9"
24
24
  end
25
25
  s.add_development_dependency "rspec", ">= 2"
26
- s.add_development_dependency "webmock", ">= 1.6.2"
26
+ s.add_development_dependency "fb_graph-mock"
27
27
  s.add_development_dependency "actionpack", ">= 3.0.6"
28
28
  end
@@ -26,7 +26,7 @@ module FbGraph
26
26
  end
27
27
 
28
28
  def self.decode_json(json)
29
- JSON.parse(json).with_indifferent_access
29
+ MultiJson::load(json).with_indifferent_access
30
30
  rescue => e
31
31
  raise VerificationFailed.new('Invalid JSON')
32
32
  end
@@ -0,0 +1,22 @@
1
+ module FbGraph
2
+ module Connections
3
+ module Offers
4
+ def offers(options = {})
5
+ offers = self.connection :offers, options
6
+ offers.map! do |offer|
7
+ Offer.new offer[:id], offer.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ )
10
+ end
11
+ end
12
+
13
+ def offer!(options = {})
14
+ # A page access token is required to change an associated offer
15
+ offer = post options.merge(:connection => :offers).merge(:access_token => self.page_access_token)
16
+ Offer.new offer[:id], options.merge(offer).merge(
17
+ :access_token => options[:access_token] || self.access_token
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
@@ -81,7 +81,7 @@ module FbGraph
81
81
  def initialize(code, message, body = '')
82
82
  @code = code
83
83
  if body.present?
84
- response = JSON.parse(body).with_indifferent_access
84
+ response = MultiJson::load(body).with_indifferent_access
85
85
  message = response[:error][:message]
86
86
  @type = response[:error][:type]
87
87
  end
data/lib/fb_graph/node.rb CHANGED
@@ -135,14 +135,14 @@ module FbGraph
135
135
  when 'null'
136
136
  nil
137
137
  else
138
- _response_ = JSON.parse(response.body).with_indifferent_access
138
+ _response_ = MultiJson::load(response.body).with_indifferent_access
139
139
  if (200...300).include?(response.status)
140
140
  _response_
141
141
  else
142
142
  Exception.handle_httpclient_error(_response_, response.headers)
143
143
  end
144
144
  end
145
- rescue JSON::ParserError
145
+ rescue MultiJson::DecodeError
146
146
  raise Exception.new(response.status, "Unparsable Response: #{response.body}")
147
147
  end
148
148
  end
@@ -0,0 +1,33 @@
1
+ module FbGraph
2
+ class Offer < Node
3
+ extend Searchable
4
+
5
+ ATTRS = [ :from,
6
+ :title,
7
+ :created_time,
8
+ :expiration_time,
9
+ :terms,
10
+ :image_url,
11
+ :coupon_type,
12
+ :claim_limit,
13
+ :redemption_link,
14
+ :redemption_code]
15
+
16
+ attr_accessor *ATTRS
17
+
18
+ def initialize(identifier, attributes = {})
19
+ super
20
+
21
+ @from = Page.new(attributes[:from][:id], attributes[:from]) if attributes[:from]
22
+ @title = attributes[:title]
23
+ @created_time = Time.parse(attributes[:created_time]).utc if attributes[:created_time]
24
+ @expiration_time = Time.parse(attributes[:expiration_time]).utc
25
+ @terms = attributes[:terms] if attributes[:terms]
26
+ @image_url = attributes[:image_url] if attributes[:image_url]
27
+ @coupon_type = attributes[:coupon_type] if attributes[:coupon_type]
28
+ @claim_limit = attributes[:claim_limit] if attributes[:claim_limit]
29
+ @redemption_link = attributes[:redemption_link] if attributes[:redemption_link]
30
+ @redemption_code = attributes[:redemption_code] if attributes[:redemption_code]
31
+ end
32
+ end
33
+ end
data/lib/fb_graph/page.rb CHANGED
@@ -24,6 +24,7 @@ module FbGraph
24
24
  include Connections::Tabs
25
25
  include Connections::Tagged
26
26
  include Connections::Videos
27
+ include Connections::Offers
27
28
  extend Searchable
28
29
 
29
30
  @@attributes = {
@@ -44,7 +45,13 @@ module FbGraph
44
45
  Cover.new cover[:cover_id], cover
45
46
  end
46
47
  end
48
+
49
+ protected
50
+
51
+ def page_access_token
52
+ get({:fields => "access_token"})["access_token"]
53
+ end
47
54
  end
48
55
  end
49
56
 
50
- require 'fb_graph/page/category_attributes'
57
+ require 'fb_graph/page/category_attributes'
data/lib/fb_graph.rb CHANGED
@@ -131,6 +131,7 @@ require 'fb_graph/thread'
131
131
  require 'fb_graph/user'
132
132
  require 'fb_graph/user_achievement'
133
133
  require 'fb_graph/video'
134
+ require 'fb_graph/offer'
134
135
 
135
136
  # Load after FbGraph::User
136
137
  require 'fb_graph/ad_user'
@@ -141,4 +142,4 @@ require 'fb_graph/project'
141
142
 
142
143
  require 'fb_graph/query'
143
144
 
144
- require 'patch/rack/oauth2/access_token/introspectable'
145
+ require 'patch/rack/oauth2/access_token/introspectable'
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe FbGraph::Offer do
4
+ let(:offer) { mock_graph(:get, '23456/offers', 'offers/private', :access_token => 'access_token') { offer = page.offers[0] }}
5
+ let(:page) { FbGraph::Page.new('23456', {:name => 'page_name', :category => 'page_cat', :access_token => 'access_token'}) }
6
+
7
+ describe '.new' do
8
+ it 'should setup all supported attributes' do
9
+ offer.identifier.should == '12345'
10
+ offer.from.should == FbGraph::Page.new('23456', {:name => 'page_name', :category => 'page_cat'})
11
+ offer.title.should == 'offer 1'
12
+ offer.created_time.should == Time.parse('2011-10-14T21:00:00+0000').utc
13
+ offer.expiration_time.should == Time.parse('2018-03-15T00:30:00+0000').utc
14
+ offer.terms.should == 'One offer per customer'
15
+ offer.image_url.should == 'http://example.org/image.png'
16
+ offer.coupon_type.should == 'online_only'
17
+ offer.claim_limit.should == 1000
18
+ offer.redemption_link.should == 'http://example.org/redeem'
19
+ offer.redemption_code.should == nil
20
+ end
21
+ end
22
+
23
+ describe '#update' do
24
+ it 'should update existing offer' do
25
+ lambda do
26
+ offer.update(:terms => 'Two offers per customer', :access_token => 'access_token')
27
+ end.should request_to('12345', :post)
28
+ end
29
+ end
30
+ end
@@ -5,7 +5,7 @@ describe FbGraph::OpenGraph::Action do
5
5
  FbGraph::OpenGraph::Action.new attributes[:id], attributes
6
6
  end
7
7
  let :attributes do
8
- JSON.parse(json).with_indifferent_access
8
+ MultiJson::load(json).with_indifferent_access
9
9
  end
10
10
  shared_examples_for :og_action_initialized do
11
11
  its(:from) do
@@ -5,7 +5,7 @@ describe FbGraph::OpenGraph::Object do
5
5
  FbGraph::OpenGraph::Object.new attributes[:id], attributes
6
6
  end
7
7
  let :attributes do
8
- JSON.parse(json).with_indifferent_access
8
+ MultiJson::load(json).with_indifferent_access
9
9
  end
10
10
 
11
11
  context 'with play action' do
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe FbGraph::TaggedObject do
4
4
  let :attributes do
5
- JSON.parse(json).with_indifferent_access
5
+ MultiJson::load(json).with_indifferent_access
6
6
  end
7
7
  let :json do
8
8
  <<-JSON
@@ -25,7 +25,7 @@ describe FbGraph::Targeting, '.to_json' do
25
25
  :region => 'Tokyo'
26
26
  }
27
27
  targeting = FbGraph::Targeting.new(attributes)
28
- hash = JSON.parse(targeting.to_json).with_indifferent_access
28
+ hash = MultiJson::load(targeting.to_json).with_indifferent_access
29
29
  hash[:country].should == attributes[:country]
30
30
  hash[:city].should == attributes[:city]
31
31
  hash[:locale].should == attributes[:locale]
data/spec/spec_helper.rb CHANGED
@@ -4,4 +4,6 @@ end
4
4
 
5
5
  require 'rspec'
6
6
  require 'fb_graph'
7
- require 'helpers/webmock_helper'
7
+ require 'fb_graph/mock'
8
+ include FbGraph::Mock
9
+ WebMock.disable_net_connect!