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,32 @@
1
+ module GSGraph
2
+ class Note < Node
3
+ include Connections::Comments
4
+ include Connections::Likes
5
+ include Connections::Likes::Likable
6
+
7
+ attr_accessor :from, :subject, :message, :created_time, :updated_time, :icon
8
+
9
+ def initialize(identifier, attributes = {})
10
+ super
11
+ if (from = attributes[:from])
12
+ @from = if from[:category]
13
+ Page.new(from[:id], from)
14
+ else
15
+ User.new(from[:id], from)
16
+ end
17
+ end
18
+ @subject = attributes[:subject]
19
+ @message = attributes[:message]
20
+ if attributes[:created_time]
21
+ @created_time = Time.parse(attributes[:created_time]).utc
22
+ end
23
+ if attributes[:updated_time]
24
+ @updated_time = Time.parse(attributes[:updated_time]).utc
25
+ end
26
+ @icon = attributes[:icon]
27
+
28
+ # cached connection
29
+ cache_collection attributes, :comments
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,32 @@
1
+ module GSGraph
2
+ class Notification < Node
3
+ attr_accessor :application, :from, :to, :title, :message, :link, :unread, :created_time, :updated_time
4
+
5
+ def initialize(identifier, attributes = {})
6
+ super
7
+ @title = attributes[:title]
8
+ @message = attributes[:message]
9
+ @link = attributes[:link]
10
+ @unread = attributes[:unread] == 1
11
+ if (application = attributes[:application])
12
+ @application = Application.new(application[:id], application)
13
+ end
14
+ if (from = attributes[:from])
15
+ @from = User.new(from[:id], from)
16
+ end
17
+ if (to = attributes[:to])
18
+ @to = User.new(to[:id], to)
19
+ end
20
+ if attributes[:created_time]
21
+ @created_time = Time.parse(attributes[:created_time]).utc
22
+ end
23
+ if attributes[:updated_time]
24
+ @updated_time = Time.parse(attributes[:updated_time]).utc
25
+ end
26
+ end
27
+
28
+ def read!(options = {})
29
+ post options.merge(:unread => false)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,33 @@
1
+ module GSGraph
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
@@ -0,0 +1,3 @@
1
+ Dir[File.dirname(__FILE__) + '/open_graph/*.rb'].each do |file|
2
+ require file
3
+ end
@@ -0,0 +1,42 @@
1
+ module GSGraph
2
+ module OpenGraph
3
+ class Action < Node
4
+ include Connections::Comments
5
+ include Connections::Likes
6
+ include Connections::Likes::Likable
7
+
8
+ attr_accessor :type, :application, :from, :objects, :start_time, :end_time, :publish_time
9
+ attr_accessor :raw_attributes
10
+
11
+ def initialize(identifier, attributes = {})
12
+ super
13
+ @raw_attributes = attributes
14
+ @type = attributes[:type]
15
+ if application = attributes[:application]
16
+ @application = Application.new(application[:id], application)
17
+ end
18
+ if from = attributes[:from]
19
+ @from = User.new(from[:id], from)
20
+ end
21
+ @objects = {}
22
+ if attributes[:data]
23
+ attributes[:data].each do |key, _attributes_|
24
+ @objects[key] = case _attributes_
25
+ when Hash
26
+ Object.new _attributes_[:id], _attributes_
27
+ else
28
+ _attributes_
29
+ end
30
+ end
31
+ end
32
+ @objects = @objects.with_indifferent_access
33
+ [:start_time, :end_time, :publish_time].each do |key|
34
+ self.send "#{key}=", Time.parse(attributes[key]) if attributes[key]
35
+ end
36
+
37
+ # cached connection
38
+ cache_collections attributes, :comments, :likes
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,10 @@
1
+ module GSGraph
2
+ module OpenGraph
3
+ module ApplicationContext
4
+ def og_action(name)
5
+ self.namespace ||= fetch.namespace
6
+ [namespace, name].collect(&:to_s).join(':')
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,29 @@
1
+ module GSGraph
2
+ module OpenGraph
3
+ class Object < Node
4
+ attr_accessor :type, :application, :url, :title, :description, :images, :image, :site_name, :updated_time
5
+ attr_accessor :raw_attributes
6
+
7
+ def initialize(identifier, attributes = {})
8
+ super
9
+ @raw_attributes = attributes
10
+ [:type, :url, :title, :description, :site_name].each do |key|
11
+ self.send "#{key}=", attributes[key]
12
+ end
13
+ if application = attributes[:application]
14
+ @application = Application.new(application[:id], application)
15
+ end
16
+ @images = []
17
+ if attributes[:image]
18
+ attributes[:image].each do |image|
19
+ @images << image[:url]
20
+ end
21
+ end
22
+ @image = @images.first
23
+ if attributes[:updated_time]
24
+ @updated_time = Time.parse attributes[:updated_time]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ module GSGraph
2
+ module OpenGraph
3
+ module UserContext
4
+ def og_actions(action, options = {})
5
+ actions = self.connection(action, options)
6
+ actions.map! do |_action_|
7
+ Action.new _action_[:id], _action_.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ )
10
+ end
11
+ end
12
+
13
+ def og_action!(action, options = {})
14
+ action = post options.merge(:connection => action)
15
+ Action.new action[:id], action.merge(
16
+ :access_token => options[:access_token] || self.access_token
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,55 @@
1
+ module GSGraph
2
+ class Order < Node
3
+ attr_accessor :application, :from, :to, :amount, :status, :country, :created_time, :updated_time
4
+
5
+ def initialize(identifier, attributes = {})
6
+ super
7
+ if app = attributes[:application]
8
+ @application = Application.new(app[:id], app)
9
+ end
10
+ if from = attributes[:from]
11
+ @from = User.new(from[:id], from)
12
+ end
13
+ if to = attributes[:to]
14
+ @to = User.new(to[:id], to)
15
+ end
16
+ @amount = attributes[:amount]
17
+ @status = attributes[:status]
18
+ @country = attributes[:country]
19
+ if attributes[:created_time]
20
+ @created_time = Time.parse(attributes[:created_time]).utc
21
+ end
22
+ if attributes[:updated_time]
23
+ @updated_time = Time.parse(attributes[:updated_time]).utc
24
+ end
25
+ end
26
+
27
+ def settle!(options = {})
28
+ update options.merge(:status => :settled)
29
+ end
30
+ alias_method :settled!, :settle!
31
+
32
+ def refund!(options = {})
33
+ update options.merge(:status => :refunded)
34
+ end
35
+ alias_method :refunded!, :refund!
36
+
37
+ def cancel!(options = {})
38
+ update options.merge(:status => :canceled)
39
+ end
40
+ alias_method :canceled!, :cancel!
41
+
42
+ def update(attributes = {})
43
+ _attributes_ = attributes.dup
44
+ params = {
45
+ :access_token => _attributes_.delete(:access_token) || self.access_token,
46
+ :status => _attributes_.delete(:status),
47
+ :message => _attributes_.delete(:message),
48
+ :refund_funding_source => _attributes_.delete(:refund_funding_source),
49
+ :refund_reason => _attributes_.delete(:refund_reason),
50
+ :params => _attributes_
51
+ }
52
+ super params
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,57 @@
1
+ module GSGraph
2
+ class Page < Node
3
+ include Connections::Admins
4
+ include Connections::Albums
5
+ include Connections::Blocked
6
+ include Connections::Checkins
7
+ include Connections::Conversations
8
+ include Connections::Events
9
+ include Connections::Feed
10
+ include Connections::Groups
11
+ include Connections::Insights
12
+ include Connections::Likes
13
+ include Connections::Links
14
+ include Connections::Milestones
15
+ include Connections::Notes
16
+ include Connections::Photos
17
+ include Connections::Picture
18
+ include Connections::Picture::Updatable
19
+ include Connections::Posts
20
+ include Connections::PromotablePosts
21
+ include Connections::Questions
22
+ include Connections::Settings
23
+ include Connections::Statuses
24
+ include Connections::Tabs
25
+ include Connections::Tagged
26
+ include Connections::Videos
27
+ include Connections::Offers
28
+ extend Searchable
29
+
30
+ @@attributes = {
31
+ :raw => [:name, :username, :category, :link, :talking_about_count, :perms, :is_published, :can_post],
32
+ :custom => [:cover, :like_count]
33
+ }
34
+
35
+ attr_accessor *@@attributes.values.flatten
36
+
37
+ def initialize(identifier, attributes = {})
38
+ super
39
+ @@attributes[:raw].each do |key|
40
+ self.send :"#{key}=", attributes[key]
41
+ end
42
+ @link ||= "https://www.gamestamper.com/#{username || identifier}"
43
+ @like_count = attributes[:likes] || attributes[:fan_count]
44
+ @cover = if (cover = attributes[:cover])
45
+ Cover.new cover[:cover_id], cover
46
+ end
47
+ end
48
+
49
+ def get_access_token(options = {})
50
+ access_token = get options.merge(:fields => "access_token")
51
+ self.access_token = Rack::OAuth2::AccessToken::Legacy.new access_token
52
+ end
53
+ alias_method :page_access_token, :get_access_token
54
+ end
55
+ end
56
+
57
+ require 'gs_graph/page/category_attributes'
@@ -0,0 +1,117 @@
1
+ module GSGraph
2
+ class Page
3
+ module CategoryAttributes
4
+ @@category_attributes = {}
5
+ @@category_attributes[:raw] = [
6
+ :affiliation,
7
+ :artists_we_like,
8
+ :attire,
9
+ :awards,
10
+ :band_interests,
11
+ :band_members,
12
+ :bio,
13
+ :booking_agent,
14
+ :company_overview,
15
+ :culinary_team,
16
+ :current_location,
17
+ :directed_by,
18
+ :features,
19
+ :general_info,
20
+ :general_manager,
21
+ :genre,
22
+ :hometown,
23
+ :influences,
24
+ :is_community_page,
25
+ :location,
26
+ :mission,
27
+ :mpg,
28
+ :personal_info,
29
+ :personal_interests,
30
+ :phone,
31
+ :plot_outline,
32
+ :press_contact,
33
+ :price_range,
34
+ :produced_by,
35
+ :products,
36
+ :public_transit,
37
+ :record_label,
38
+ :screenplay_by,
39
+ :starring,
40
+ :studio,
41
+ :website,
42
+ :written_by
43
+ ]
44
+ @@category_attributes[:symbols] = [
45
+ :parking,
46
+ :payment_options,
47
+ :restaurant_services,
48
+ :restaurant_specialties
49
+ ]
50
+ @@category_attributes[:date] = [
51
+ :birthday,
52
+ :built,
53
+ :founded,
54
+ :release_date
55
+ ]
56
+ @@category_attributes[:others] = [
57
+ :checkin_count,
58
+ :hours,
59
+ :location
60
+ ]
61
+ attr_accessor *@@category_attributes.values.flatten
62
+
63
+ def self.included(klass)
64
+ klass.alias_method_chain :initialize, :category_specific_attributes
65
+ end
66
+
67
+ def initialize_with_category_specific_attributes(identifier, attributes = {})
68
+ initialize_without_category_specific_attributes identifier, attributes
69
+ @@category_attributes[:raw].each do |key|
70
+ self.send :"#{key}=", attributes[key]
71
+ end
72
+
73
+ @@category_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
+ @@category_attributes[:date].each do |key|
80
+ date = if attributes[key]
81
+ begin
82
+ Date.parse attributes[key]
83
+ rescue
84
+ attributes[key]
85
+ end
86
+ end
87
+ self.send :"#{key}=", date
88
+ end
89
+ @checkin_count = attributes[:checkins]
90
+ @hours = {}
91
+ if attributes[:hours]
92
+ attributes[:hours].each do |key, value|
93
+ date, index, mode = key.split('_')
94
+ index = index.to_i - 1
95
+ date, mode = date.to_sym, mode.to_sym
96
+ if value.class == Fixnum
97
+ # The Unix "time" returned is a weird approximation of the string value.
98
+ # Example: "20:00" might be represented as 446400, which is 1970-01-05T20:00:00-08:00
99
+ time = Time.at(value).in_time_zone("Pacific Time (US & Canada)")
100
+ else
101
+ time = Time.parse(value)
102
+ end
103
+ time = Time.utc(1970, 1, 1, time.hour, time.min)
104
+ @hours[date] ||= []
105
+ @hours[date][index] ||= {}
106
+ @hours[date][index][mode] = time
107
+ end
108
+ end
109
+ if attributes[:location]
110
+ @location = Venue.new(attributes[:location])
111
+ end
112
+ end
113
+ end
114
+
115
+ include CategoryAttributes
116
+ end
117
+ end