gs_graph 2.6.5

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 (348) hide show
  1. data/.document +5 -0
  2. data/.gitattributes +22 -0
  3. data/.gitignore +26 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +3 -0
  6. data/Gemfile +11 -0
  7. data/Gemfile.lock +95 -0
  8. data/LICENSE +20 -0
  9. data/README.rdoc +314 -0
  10. data/Rakefile +25 -0
  11. data/VERSION +1 -0
  12. data/assets/fb_graph.ai +1726 -6
  13. data/assets/fb_graph.png +0 -0
  14. data/gs_graph.gemspec +28 -0
  15. data/lib/gs_graph.rb +174 -0
  16. data/lib/gs_graph/achievement.rb +44 -0
  17. data/lib/gs_graph/action.rb +12 -0
  18. data/lib/gs_graph/ad_account.rb +51 -0
  19. data/lib/gs_graph/ad_campaign.rb +39 -0
  20. data/lib/gs_graph/ad_campaign_stat.rb +22 -0
  21. data/lib/gs_graph/ad_connection_object.rb +53 -0
  22. data/lib/gs_graph/ad_creative.rb +44 -0
  23. data/lib/gs_graph/ad_group.rb +51 -0
  24. data/lib/gs_graph/ad_group_stat.rb +22 -0
  25. data/lib/gs_graph/ad_keyword.rb +20 -0
  26. data/lib/gs_graph/ad_keyword_suggestion.rb +8 -0
  27. data/lib/gs_graph/ad_keyword_valid.rb +23 -0
  28. data/lib/gs_graph/ad_preview.rb +10 -0
  29. data/lib/gs_graph/ad_user.rb +58 -0
  30. data/lib/gs_graph/age_range.rb +12 -0
  31. data/lib/gs_graph/album.rb +59 -0
  32. data/lib/gs_graph/app_request.rb +24 -0
  33. data/lib/gs_graph/application.rb +119 -0
  34. data/lib/gs_graph/auth.rb +88 -0
  35. data/lib/gs_graph/auth/cookie.rb +20 -0
  36. data/lib/gs_graph/auth/signed_request.rb +44 -0
  37. data/lib/gs_graph/broad_targeting_category.rb +13 -0
  38. data/lib/gs_graph/checkin.rb +51 -0
  39. data/lib/gs_graph/collection.rb +55 -0
  40. data/lib/gs_graph/comment.rb +24 -0
  41. data/lib/gs_graph/comparison.rb +13 -0
  42. data/lib/gs_graph/connection.rb +37 -0
  43. data/lib/gs_graph/connections.rb +3 -0
  44. data/lib/gs_graph/connections/accounts.rb +23 -0
  45. data/lib/gs_graph/connections/achievements.rb +21 -0
  46. data/lib/gs_graph/connections/activities.rb +14 -0
  47. data/lib/gs_graph/connections/ad_accounts.rb +15 -0
  48. data/lib/gs_graph/connections/ad_campaign_stats.rb +22 -0
  49. data/lib/gs_graph/connections/ad_campaigns.rb +30 -0
  50. data/lib/gs_graph/connections/ad_connection_objects.rb +14 -0
  51. data/lib/gs_graph/connections/ad_creatives.rb +14 -0
  52. data/lib/gs_graph/connections/ad_group_stats.rb +22 -0
  53. data/lib/gs_graph/connections/ad_groups.rb +35 -0
  54. data/lib/gs_graph/connections/ad_previews.rb +10 -0
  55. data/lib/gs_graph/connections/admins.rb +10 -0
  56. data/lib/gs_graph/connections/albums.rb +21 -0
  57. data/lib/gs_graph/connections/app_notifications.rb +10 -0
  58. data/lib/gs_graph/connections/app_requests.rb +21 -0
  59. data/lib/gs_graph/connections/attending.rb +26 -0
  60. data/lib/gs_graph/connections/banned.rb +31 -0
  61. data/lib/gs_graph/connections/blocked.rb +36 -0
  62. data/lib/gs_graph/connections/books.rb +14 -0
  63. data/lib/gs_graph/connections/broad_targeting_categories.rb +14 -0
  64. data/lib/gs_graph/connections/checkins.rb +21 -0
  65. data/lib/gs_graph/connections/comments.rb +21 -0
  66. data/lib/gs_graph/connections/conversations.rb +14 -0
  67. data/lib/gs_graph/connections/declined.rb +25 -0
  68. data/lib/gs_graph/connections/docs.rb +14 -0
  69. data/lib/gs_graph/connections/events.rb +21 -0
  70. data/lib/gs_graph/connections/family.rb +14 -0
  71. data/lib/gs_graph/connections/feed.rb +21 -0
  72. data/lib/gs_graph/connections/former_participants.rb +14 -0
  73. data/lib/gs_graph/connections/friend_lists.rb +21 -0
  74. data/lib/gs_graph/connections/friend_requests.rb +12 -0
  75. data/lib/gs_graph/connections/friends.rb +14 -0
  76. data/lib/gs_graph/connections/games.rb +14 -0
  77. data/lib/gs_graph/connections/groups.rb +14 -0
  78. data/lib/gs_graph/connections/home.rb +14 -0
  79. data/lib/gs_graph/connections/inbox.rb +20 -0
  80. data/lib/gs_graph/connections/insights.rb +27 -0
  81. data/lib/gs_graph/connections/interests.rb +14 -0
  82. data/lib/gs_graph/connections/invited.rb +36 -0
  83. data/lib/gs_graph/connections/likes.rb +29 -0
  84. data/lib/gs_graph/connections/links.rb +21 -0
  85. data/lib/gs_graph/connections/maybe.rb +25 -0
  86. data/lib/gs_graph/connections/members.rb +22 -0
  87. data/lib/gs_graph/connections/messages.rb +22 -0
  88. data/lib/gs_graph/connections/milestones.rb +21 -0
  89. data/lib/gs_graph/connections/movies.rb +14 -0
  90. data/lib/gs_graph/connections/music.rb +14 -0
  91. data/lib/gs_graph/connections/mutual_friends.rb +26 -0
  92. data/lib/gs_graph/connections/noreply.rb +23 -0
  93. data/lib/gs_graph/connections/notes.rb +21 -0
  94. data/lib/gs_graph/connections/notifications.rb +18 -0
  95. data/lib/gs_graph/connections/offers.rb +22 -0
  96. data/lib/gs_graph/connections/outbox.rb +20 -0
  97. data/lib/gs_graph/connections/participants.rb +14 -0
  98. data/lib/gs_graph/connections/payments.rb +14 -0
  99. data/lib/gs_graph/connections/permissions.rb +16 -0
  100. data/lib/gs_graph/connections/photos.rb +21 -0
  101. data/lib/gs_graph/connections/picture.rb +39 -0
  102. data/lib/gs_graph/connections/pokes.rb +12 -0
  103. data/lib/gs_graph/connections/posts.rb +14 -0
  104. data/lib/gs_graph/connections/promotable_posts.rb +14 -0
  105. data/lib/gs_graph/connections/question_options.rb +14 -0
  106. data/lib/gs_graph/connections/questions.rb +22 -0
  107. data/lib/gs_graph/connections/reach_estimates.rb +12 -0
  108. data/lib/gs_graph/connections/roles.rb +36 -0
  109. data/lib/gs_graph/connections/scores.rb +22 -0
  110. data/lib/gs_graph/connections/senders.rb +14 -0
  111. data/lib/gs_graph/connections/settings.rb +65 -0
  112. data/lib/gs_graph/connections/statuses.rb +14 -0
  113. data/lib/gs_graph/connections/subscribed_to.rb +14 -0
  114. data/lib/gs_graph/connections/subscribers.rb +14 -0
  115. data/lib/gs_graph/connections/subscriptions.rb +53 -0
  116. data/lib/gs_graph/connections/tabs.rb +23 -0
  117. data/lib/gs_graph/connections/tagged.rb +14 -0
  118. data/lib/gs_graph/connections/tags.rb +23 -0
  119. data/lib/gs_graph/connections/television.rb +14 -0
  120. data/lib/gs_graph/connections/test_users.rb +19 -0
  121. data/lib/gs_graph/connections/threads.rb +14 -0
  122. data/lib/gs_graph/connections/user_achievements.rb +22 -0
  123. data/lib/gs_graph/connections/user_likes.rb +19 -0
  124. data/lib/gs_graph/connections/videos.rb +21 -0
  125. data/lib/gs_graph/connections/votes.rb +9 -0
  126. data/lib/gs_graph/cover.rb +10 -0
  127. data/lib/gs_graph/debugger.rb +28 -0
  128. data/lib/gs_graph/device.rb +11 -0
  129. data/lib/gs_graph/doc.rb +18 -0
  130. data/lib/gs_graph/domain.rb +32 -0
  131. data/lib/gs_graph/education.rb +32 -0
  132. data/lib/gs_graph/event.rb +52 -0
  133. data/lib/gs_graph/exception.rb +139 -0
  134. data/lib/gs_graph/friend_list.rb +13 -0
  135. data/lib/gs_graph/friend_request.rb +14 -0
  136. data/lib/gs_graph/group.rb +29 -0
  137. data/lib/gs_graph/image.rb +11 -0
  138. data/lib/gs_graph/insight.rb +13 -0
  139. data/lib/gs_graph/klass.rb +31 -0
  140. data/lib/gs_graph/link.rb +32 -0
  141. data/lib/gs_graph/location.rb +20 -0
  142. data/lib/gs_graph/message.rb +30 -0
  143. data/lib/gs_graph/milestone.rb +26 -0
  144. data/lib/gs_graph/node.rb +149 -0
  145. data/lib/gs_graph/note.rb +32 -0
  146. data/lib/gs_graph/notification.rb +32 -0
  147. data/lib/gs_graph/offer.rb +33 -0
  148. data/lib/gs_graph/open_graph.rb +3 -0
  149. data/lib/gs_graph/open_graph/action.rb +42 -0
  150. data/lib/gs_graph/open_graph/application_context.rb +10 -0
  151. data/lib/gs_graph/open_graph/object.rb +29 -0
  152. data/lib/gs_graph/open_graph/user_context.rb +21 -0
  153. data/lib/gs_graph/order.rb +55 -0
  154. data/lib/gs_graph/page.rb +57 -0
  155. data/lib/gs_graph/page/category_attributes.rb +117 -0
  156. data/lib/gs_graph/photo.rb +48 -0
  157. data/lib/gs_graph/picture.rb +14 -0
  158. data/lib/gs_graph/place.rb +7 -0
  159. data/lib/gs_graph/poke.rb +19 -0
  160. data/lib/gs_graph/post.rb +117 -0
  161. data/lib/gs_graph/privacy.rb +27 -0
  162. data/lib/gs_graph/project.rb +4 -0
  163. data/lib/gs_graph/promotable_post.rb +34 -0
  164. data/lib/gs_graph/property.rb +13 -0
  165. data/lib/gs_graph/query.rb +47 -0
  166. data/lib/gs_graph/question.rb +26 -0
  167. data/lib/gs_graph/question_option.rb +22 -0
  168. data/lib/gs_graph/reach_estimate.rb +22 -0
  169. data/lib/gs_graph/role.rb +13 -0
  170. data/lib/gs_graph/score.rb +16 -0
  171. data/lib/gs_graph/searchable.rb +33 -0
  172. data/lib/gs_graph/searchable/result.rb +31 -0
  173. data/lib/gs_graph/serialization.rb +19 -0
  174. data/lib/gs_graph/status.rb +27 -0
  175. data/lib/gs_graph/subscription.rb +14 -0
  176. data/lib/gs_graph/tab.rb +17 -0
  177. data/lib/gs_graph/tag.rb +30 -0
  178. data/lib/gs_graph/tagged_object.rb +23 -0
  179. data/lib/gs_graph/targeting.rb +23 -0
  180. data/lib/gs_graph/test_user.rb +24 -0
  181. data/lib/gs_graph/thread.rb +71 -0
  182. data/lib/gs_graph/user.rb +153 -0
  183. data/lib/gs_graph/user_achievement.rb +35 -0
  184. data/lib/gs_graph/venue.rb +14 -0
  185. data/lib/gs_graph/video.rb +41 -0
  186. data/lib/gs_graph/work.rb +48 -0
  187. data/lib/patch/rack/oauth2/access_token.rb +11 -0
  188. data/lib/patch/rack/oauth2/access_token/introspectable.rb +37 -0
  189. data/lib/patch/rack/oauth2/client.rb +13 -0
  190. data/lib/patch/rack/oauth2/grant/fb_exchange_token.rb +11 -0
  191. data/lib/patch/rack/oauth2/util.rb +14 -0
  192. data/spec/gs_graph/achievement_spec.rb +59 -0
  193. data/spec/gs_graph/ad_account_spec.rb +124 -0
  194. data/spec/gs_graph/ad_campaign_spec.rb +99 -0
  195. data/spec/gs_graph/ad_connection_object_spec.rb +71 -0
  196. data/spec/gs_graph/ad_creative_spec.rb +87 -0
  197. data/spec/gs_graph/ad_group_spec.rb +95 -0
  198. data/spec/gs_graph/ad_keyword_spec.rb +27 -0
  199. data/spec/gs_graph/ad_keyword_suggestion_spec.rb +17 -0
  200. data/spec/gs_graph/ad_keyword_valid_spec.rb +19 -0
  201. data/spec/gs_graph/ad_user_spec.rb +67 -0
  202. data/spec/gs_graph/album_spec.rb +93 -0
  203. data/spec/gs_graph/app_request_spec.rb +40 -0
  204. data/spec/gs_graph/application_spec.rb +251 -0
  205. data/spec/gs_graph/auth/cookie_spec.rb +29 -0
  206. data/spec/gs_graph/auth/signed_request_spec.rb +22 -0
  207. data/spec/gs_graph/auth_spec.rb +223 -0
  208. data/spec/gs_graph/broad_targeting_category_spec.rb +17 -0
  209. data/spec/gs_graph/checkin_spec.rb +42 -0
  210. data/spec/gs_graph/collection_spec.rb +50 -0
  211. data/spec/gs_graph/comment_spec.rb +31 -0
  212. data/spec/gs_graph/connection_spec.rb +42 -0
  213. data/spec/gs_graph/connections/accounts_spec.rb +78 -0
  214. data/spec/gs_graph/connections/achievements_spec.rb +27 -0
  215. data/spec/gs_graph/connections/activities_spec.rb +34 -0
  216. data/spec/gs_graph/connections/ad_accounts_spec.rb +28 -0
  217. data/spec/gs_graph/connections/ad_campaign_stat_spec.rb +35 -0
  218. data/spec/gs_graph/connections/ad_campaigns_spec.rb +36 -0
  219. data/spec/gs_graph/connections/ad_connection_objects_spec.rb +20 -0
  220. data/spec/gs_graph/connections/ad_creatives_spec.rb +29 -0
  221. data/spec/gs_graph/connections/ad_group_stat_spec.rb +54 -0
  222. data/spec/gs_graph/connections/ad_groups_spec.rb +92 -0
  223. data/spec/gs_graph/connections/ad_previews_spec.rb +18 -0
  224. data/spec/gs_graph/connections/admins_spec.rb +20 -0
  225. data/spec/gs_graph/connections/albums_spec.rb +63 -0
  226. data/spec/gs_graph/connections/app_notifications_spec.rb +23 -0
  227. data/spec/gs_graph/connections/app_requests_spec.rb +28 -0
  228. data/spec/gs_graph/connections/attending_spec.rb +47 -0
  229. data/spec/gs_graph/connections/banned_spec.rb +63 -0
  230. data/spec/gs_graph/connections/blocked_spec.rb +56 -0
  231. data/spec/gs_graph/connections/books_spec.rb +32 -0
  232. data/spec/gs_graph/connections/broad_targeting_categories_spec.rb +18 -0
  233. data/spec/gs_graph/connections/checkins_spec.rb +153 -0
  234. data/spec/gs_graph/connections/comments_spec.rb +75 -0
  235. data/spec/gs_graph/connections/conversations_spec.rb +19 -0
  236. data/spec/gs_graph/connections/declined_spec.rb +47 -0
  237. data/spec/gs_graph/connections/docs_spec.rb +14 -0
  238. data/spec/gs_graph/connections/events_spec.rb +52 -0
  239. data/spec/gs_graph/connections/family_spec.rb +32 -0
  240. data/spec/gs_graph/connections/feed_spec.rb +124 -0
  241. data/spec/gs_graph/connections/former_participants_spec.rb +44 -0
  242. data/spec/gs_graph/connections/friend_lists_spec.rb +26 -0
  243. data/spec/gs_graph/connections/friend_requests_spec.rb +16 -0
  244. data/spec/gs_graph/connections/friends_spec.rb +51 -0
  245. data/spec/gs_graph/connections/games_spec.rb +20 -0
  246. data/spec/gs_graph/connections/groups_spec.rb +31 -0
  247. data/spec/gs_graph/connections/home_spec.rb +62 -0
  248. data/spec/gs_graph/connections/inbox_spec.rb +16 -0
  249. data/spec/gs_graph/connections/insights_spec.rb +104 -0
  250. data/spec/gs_graph/connections/interests_spec.rb +12 -0
  251. data/spec/gs_graph/connections/invited_spec.rb +84 -0
  252. data/spec/gs_graph/connections/likes_spec.rb +127 -0
  253. data/spec/gs_graph/connections/links_spec.rb +31 -0
  254. data/spec/gs_graph/connections/maybe_spec.rb +47 -0
  255. data/spec/gs_graph/connections/members_spec.rb +57 -0
  256. data/spec/gs_graph/connections/messages_spec.rb +58 -0
  257. data/spec/gs_graph/connections/milestones_spec.rb +40 -0
  258. data/spec/gs_graph/connections/movies_spec.rb +12 -0
  259. data/spec/gs_graph/connections/music_spec.rb +12 -0
  260. data/spec/gs_graph/connections/mutual_friends_spec.rb +28 -0
  261. data/spec/gs_graph/connections/noreply_spec.rb +39 -0
  262. data/spec/gs_graph/connections/notes_spec.rb +31 -0
  263. data/spec/gs_graph/connections/notifications_spec.rb +30 -0
  264. data/spec/gs_graph/connections/outbox_spec.rb +16 -0
  265. data/spec/gs_graph/connections/participants_spec.rb +42 -0
  266. data/spec/gs_graph/connections/payments_spec.rb +17 -0
  267. data/spec/gs_graph/connections/permissions_spec.rb +44 -0
  268. data/spec/gs_graph/connections/photos_spec.rb +39 -0
  269. data/spec/gs_graph/connections/picture_spec.rb +92 -0
  270. data/spec/gs_graph/connections/pokes_spec.rb +16 -0
  271. data/spec/gs_graph/connections/posts_spec.rb +34 -0
  272. data/spec/gs_graph/connections/promotable_posts_spec.rb +24 -0
  273. data/spec/gs_graph/connections/question_options_spec.rb +14 -0
  274. data/spec/gs_graph/connections/questions_spec.rb +31 -0
  275. data/spec/gs_graph/connections/reach_estimates_spec.rb +18 -0
  276. data/spec/gs_graph/connections/roles_spec.rb +59 -0
  277. data/spec/gs_graph/connections/scores_spec.rb +40 -0
  278. data/spec/gs_graph/connections/senders_spec.rb +42 -0
  279. data/spec/gs_graph/connections/settings_spec.rb +62 -0
  280. data/spec/gs_graph/connections/statuses_spec.rb +72 -0
  281. data/spec/gs_graph/connections/subscribed_to_spec.rb +12 -0
  282. data/spec/gs_graph/connections/subscribers_spec.rb +12 -0
  283. data/spec/gs_graph/connections/subscriptions_spec.rb +47 -0
  284. data/spec/gs_graph/connections/tabs_spec.rb +47 -0
  285. data/spec/gs_graph/connections/tagged_spec.rb +42 -0
  286. data/spec/gs_graph/connections/tags_spec.rb +30 -0
  287. data/spec/gs_graph/connections/television_spec.rb +12 -0
  288. data/spec/gs_graph/connections/test_users_spec.rb +65 -0
  289. data/spec/gs_graph/connections/threads_spec.rb +12 -0
  290. data/spec/gs_graph/connections/user_achievements_spec.rb +37 -0
  291. data/spec/gs_graph/connections/user_likes_spec.rb +55 -0
  292. data/spec/gs_graph/connections/videos_spec.rb +27 -0
  293. data/spec/gs_graph/connections/votes_spec.rb +15 -0
  294. data/spec/gs_graph/debugger_spec.rb +33 -0
  295. data/spec/gs_graph/doc_spec.rb +27 -0
  296. data/spec/gs_graph/domain_spec.rb +23 -0
  297. data/spec/gs_graph/education_spec.rb +61 -0
  298. data/spec/gs_graph/event_spec.rb +70 -0
  299. data/spec/gs_graph/exception_spec.rb +310 -0
  300. data/spec/gs_graph/friend_list_spec.rb +22 -0
  301. data/spec/gs_graph/group_spec.rb +28 -0
  302. data/spec/gs_graph/image_spec.rb +16 -0
  303. data/spec/gs_graph/insight_spec.rb +18 -0
  304. data/spec/gs_graph/link_spec.rb +41 -0
  305. data/spec/gs_graph/location_spec.rb +28 -0
  306. data/spec/gs_graph/message_spec.rb +47 -0
  307. data/spec/gs_graph/node_spec.rb +91 -0
  308. data/spec/gs_graph/note_spec.rb +37 -0
  309. data/spec/gs_graph/notification_spec.rb +59 -0
  310. data/spec/gs_graph/offer_spec.rb +30 -0
  311. data/spec/gs_graph/open_graph/action_spec.rb +112 -0
  312. data/spec/gs_graph/open_graph/application_context_spec.rb +28 -0
  313. data/spec/gs_graph/open_graph/object_spec.rb +76 -0
  314. data/spec/gs_graph/open_graph/user_context_spec.rb +33 -0
  315. data/spec/gs_graph/order_spec.rb +66 -0
  316. data/spec/gs_graph/page/local_business_spec.rb +88 -0
  317. data/spec/gs_graph/page/movie_spec.rb +25 -0
  318. data/spec/gs_graph/page/music_spec.rb +25 -0
  319. data/spec/gs_graph/page/person_spec.rb +23 -0
  320. data/spec/gs_graph/page/product_spec.rb +36 -0
  321. data/spec/gs_graph/page_spec.rb +81 -0
  322. data/spec/gs_graph/photo_spec.rb +85 -0
  323. data/spec/gs_graph/place_spec.rb +8 -0
  324. data/spec/gs_graph/post_spec.rb +238 -0
  325. data/spec/gs_graph/privacy_spec.rb +33 -0
  326. data/spec/gs_graph/project_spec.rb +46 -0
  327. data/spec/gs_graph/promotable_post_spec.rb +57 -0
  328. data/spec/gs_graph/qeustion_option_spec.rb +35 -0
  329. data/spec/gs_graph/query_spec.rb +73 -0
  330. data/spec/gs_graph/question_spec.rb +73 -0
  331. data/spec/gs_graph/reach_estimate_spec.rb +48 -0
  332. data/spec/gs_graph/searchable_spec.rb +47 -0
  333. data/spec/gs_graph/seriarization_spec.rb +29 -0
  334. data/spec/gs_graph/status_spec.rb +31 -0
  335. data/spec/gs_graph/subscription_spec.rb +5 -0
  336. data/spec/gs_graph/tag_spec.rb +34 -0
  337. data/spec/gs_graph/tagged_object_spec.rb +45 -0
  338. data/spec/gs_graph/targeting_spec.rb +34 -0
  339. data/spec/gs_graph/test_user_spec.rb +50 -0
  340. data/spec/gs_graph/thread_spec.rb +86 -0
  341. data/spec/gs_graph/user_achievement_spec.rb +53 -0
  342. data/spec/gs_graph/user_spec.rb +185 -0
  343. data/spec/gs_graph/venue_spec.rb +23 -0
  344. data/spec/gs_graph/video_spec.rb +31 -0
  345. data/spec/gs_graph/work_spec.rb +101 -0
  346. data/spec/gs_graph_spec.rb +57 -0
  347. data/spec/spec_helper.rb +9 -0
  348. metadata +538 -0
@@ -0,0 +1,14 @@
1
+ module GSGraph
2
+ module Connections
3
+ module Subscribers
4
+ def subscribers(options = {})
5
+ subscribers = self.connection :subscribers, options
6
+ subscribers.map! do |subscriber|
7
+ User.new subscriber[:id], subscriber.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ )
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,53 @@
1
+ module GSGraph
2
+ module Connections
3
+ module Subscriptions
4
+ # == Fetch current subscriptions
5
+ #
6
+ # app = GSGraph::Application.new(APP_ID, :secret => APP_SECRET)
7
+ # app.subscriptions
8
+ # => Array of GSGraph::Subscriptions
9
+ def subscriptions(options = {})
10
+ options[:access_token] ||= self.access_token
11
+ subscriptions = self.connection :subscriptions, options
12
+ subscriptions.map! do |subscription|
13
+ Subscription.new subscription.merge(:access_token => options[:access_token])
14
+ end
15
+ end
16
+
17
+ # == Subscribe
18
+ #
19
+ # Subscriber have to setup PubSubHubbub subscriber endpoint.
20
+ # See details at "Subscription Verification" in the Facebook API document.
21
+ # ref) http://developers.gamestamper.com/docs/api/realtime
22
+ #
23
+ # app = GSGraph::Application.new(APP_ID, :secret => APP_SECRET)
24
+ # app.subscribe!(
25
+ # :object => "user",
26
+ # :fields => "name,email",
27
+ # :callback_url => "http://fbgraphsample.heroku.com/subscription",
28
+ # :verify_token => "Define by yourself"
29
+ # )
30
+ # => Array of GSGraph::Subscriptions
31
+ def subscribe!(options = {})
32
+ options[:access_token] ||= self.access_token
33
+ post options.merge(:connection => :subscriptions)
34
+ end
35
+
36
+ # == Subscribe
37
+ #
38
+ # Delete all of your subscriptions.
39
+ # If you specify an object parameter, it will only delete the corresponding subscription.
40
+ # ref) http://developers.gamestamper.com/docs/api/realtime
41
+ #
42
+ # app = GSGraph::Application.new(APP_ID, :secret => APP_SECRET)
43
+ # app.unsubscribe!(
44
+ # :object => "user"
45
+ # )
46
+ # => Array of GSGraph::Subscriptions
47
+ def unsubscribe!(options = {})
48
+ options[:access_token] ||= self.access_token
49
+ destroy options.merge(:connection => :subscriptions)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,23 @@
1
+ module GSGraph
2
+ module Connections
3
+ module Tabs
4
+ def tabs(options = {})
5
+ tabs = self.connection :tabs, options
6
+ tabs.map! do |tab|
7
+ Tab.new tab[:id], tab.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ )
10
+ end
11
+ end
12
+
13
+ def tab!(options = {})
14
+ post options.merge(:connection => :tabs)
15
+ end
16
+
17
+ def tab?(application, options = {})
18
+ tab = self.connection :tabs, options.merge(:connection_scope => application.identifier)
19
+ tab.present?
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ module GSGraph
2
+ module Connections
3
+ module Tagged
4
+ def tagged(options = {})
5
+ posts = self.connection :tagged, options
6
+ posts.map! do |post|
7
+ Post.new post[:id], post.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ )
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ module GSGraph
2
+ module Connections
3
+ module Tags
4
+ def tags(options = {})
5
+ tags = self.connection :tags, options
6
+ if tags.first.is_a?(Tag)
7
+ tags
8
+ else
9
+ tags.map! do |tag|
10
+ tag[:access_token] ||= options[:access_token] || self.access_token
11
+ Tag.new tag
12
+ end
13
+ end
14
+ end
15
+
16
+ module Taggable
17
+ def tag!(options = {})
18
+ post options.merge(:connection => :tags)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ module GSGraph
2
+ module Connections
3
+ module Television
4
+ def television(options = {})
5
+ television = self.connection :television, options
6
+ television.map! do |_television_|
7
+ Page.new _television_[:id], _television_.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ )
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,19 @@
1
+ module GSGraph
2
+ module Connections
3
+ module TestUsers
4
+ def test_users(options = {})
5
+ options[:access_token] ||= self.access_token
6
+ test_users = self.connection :accounts, options.merge(:connection_scope => 'test-users')
7
+ test_users.map! do |test_user|
8
+ TestUser.new test_user[:id], test_user
9
+ end
10
+ end
11
+
12
+ def test_user!(options = {})
13
+ options[:access_token] ||= self.access_token
14
+ test_user = post options.merge(:connection => :accounts, :connection_scope => 'test-users')
15
+ TestUser.new test_user[:id], test_user
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ module GSGraph
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,22 @@
1
+ module GSGraph
2
+ module Connections
3
+ module UserAchievements
4
+ def achievements(options = {})
5
+ options[:access_token] ||= self.access_token
6
+ achievements = self.connection :achievements, options
7
+ achievements.map! do |achievement|
8
+ UserAchievement.new achievement[:id], achievement.merge(:access_token => options[:access_token])
9
+ end
10
+ end
11
+
12
+ def achieve!(achievement_url, options = {})
13
+ achievement = post options.merge(:connection => :achievements, :achievement => achievement_url)
14
+ UserAchievement.new achievement[:id], achievement
15
+ end
16
+
17
+ def unachieve!(achievement_url, options = {})
18
+ delete options.merge(:connection => :achievements, :achievement => achievement_url)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ module GSGraph
2
+ module Connections
3
+ module UserLikes
4
+ def likes(options = {})
5
+ likes = self.connection :likes, options
6
+ likes.map! do |like|
7
+ Page.new like[:id], like.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ )
10
+ end
11
+ end
12
+
13
+ def like?(page, options = {})
14
+ like = self.connection :likes, options.merge(:connection_scope => page.identifier)
15
+ like.present?
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ module GSGraph
2
+ module Connections
3
+ module Videos
4
+ def videos(options = {})
5
+ videos = self.connection :videos, options
6
+ videos.map! do |video|
7
+ Video.new video[:id], video.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ )
10
+ end
11
+ end
12
+
13
+ def video!(options = {})
14
+ video = post options.merge(:connection => :videos)
15
+ Video.new video[:id], options.merge(video).merge(
16
+ :access_token => options[:access_token] || self.access_token
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ module GSGraph
2
+ module Connections
3
+ module Votes
4
+ def votes(options = {})
5
+ self.connection :votes, options
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ module GSGraph
2
+ class Cover < Photo
3
+ attr_accessor :offset_y
4
+
5
+ def initialize(identifier, attributes = {})
6
+ super
7
+ @offset_y = attributes[:offset_y]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,28 @@
1
+ module GSGraph
2
+ module Debugger
3
+ class RequestFilter
4
+ # Callback called in HTTPClient (before sending a request)
5
+ # request:: HTTP::Message
6
+ def filter_request(request)
7
+ started = "======= [GSGraph] API REQUEST STARTED ======="
8
+ log started, request.dump
9
+ end
10
+
11
+ # Callback called in HTTPClient (after received a response)
12
+ # request:: HTTP::Message
13
+ # response:: HTTP::Message
14
+ def filter_response(request, response)
15
+ finished = "======= [GSGraph] API REQUEST FINISHED ======="
16
+ log '-' * 50, response.dump, finished
17
+ end
18
+
19
+ private
20
+
21
+ def log(*outputs)
22
+ outputs.each do |output|
23
+ GSGraph.logger.info output
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,11 @@
1
+ module GSGraph
2
+ class Device
3
+ include Comparison
4
+ attr_accessor :os, :hardware
5
+
6
+ def initialize(attributes = {})
7
+ @os = attributes[:os]
8
+ @hardware = attributes[:hardware]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,18 @@
1
+ module GSGraph
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 GSGraph
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
@@ -0,0 +1,32 @@
1
+ module GSGraph
2
+ class Education
3
+ include Comparison
4
+
5
+ attr_accessor :school, :degree, :year, :concentration, :classes, :type
6
+
7
+ def initialize(attributes = {})
8
+ if (school = attributes[:school])
9
+ @school = Page.new(school[:id], school)
10
+ end
11
+ if (degree = attributes[:degree])
12
+ @degree = Page.new(degree[:id], degree)
13
+ end
14
+ if (year = attributes[:year])
15
+ @year = Page.new(year[:id], year)
16
+ end
17
+ @concentration = []
18
+ if attributes[:concentration]
19
+ attributes[:concentration].each do |concentration|
20
+ @concentration << Page.new(concentration[:id], concentration)
21
+ end
22
+ end
23
+ @classes = []
24
+ if attributes[:classes]
25
+ attributes[:classes].each do |klass|
26
+ @classes << Klass.new(klass[:id], klass)
27
+ end
28
+ end
29
+ @type = attributes[:type]
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,52 @@
1
+ module GSGraph
2
+ class Event < Node
3
+ include Connections::Feed
4
+ include Connections::Noreply
5
+ include Connections::Maybe
6
+ include Connections::Invited
7
+ include Connections::Attending
8
+ include Connections::Declined
9
+ include Connections::Picture
10
+ include Connections::Videos
11
+ extend Searchable
12
+
13
+ attr_accessor :owner, :name, :description, :start_time, :end_time, :location, :venue, :privacy, :updated_time
14
+
15
+ def initialize(identifier, attributes = {})
16
+ super
17
+ if (owner = attributes[:owner])
18
+ @owner = User.new(owner[:id], owner)
19
+ end
20
+ @name = attributes[:name]
21
+ @description = attributes[:description]
22
+ @location = attributes[:location]
23
+ @privacy = attributes[:privacy]
24
+ if (start_time = attributes[:start_time])
25
+ @start_time = case start_time
26
+ when String
27
+ Time.parse(start_time)
28
+ when Integer
29
+ Time.at(start_time)
30
+ end
31
+ end
32
+ if (end_time = attributes[:end_time])
33
+ @end_time = case end_time
34
+ when String
35
+ Time.parse(end_time)
36
+ when Integer
37
+ Time.at(end_time)
38
+ end
39
+ end
40
+ if venue = attributes[:venue]
41
+ @venue = if venue[:id]
42
+ Page.new(venue[:id], venue)
43
+ else
44
+ Venue.new(venue)
45
+ end
46
+ end
47
+ if attributes[:updated_time]
48
+ @updated_time = Time.parse(attributes[:updated_time]).utc
49
+ end
50
+ end
51
+ end
52
+ end