slack_resources 0.0.0 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (256) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -66
  3. data/.circleci/preparation.rb +11 -0
  4. data/.rubocop.yml +2 -10
  5. data/Gemfile +1 -0
  6. data/Gemfile.lock +8 -8
  7. data/lib/{slack_resources/generator/event_api → event_api}/fetch.rb +0 -0
  8. data/lib/event_api/write.rb +364 -0
  9. data/lib/{slack_resources/raw_data/event_api/preset_schemas.json → schema.json} +0 -7
  10. data/lib/slack_resources/{raw_data → resources}/event_api/_added_examples/event_callback.json +0 -0
  11. data/lib/slack_resources/resources/event_api/details/app_mention.json +46 -67
  12. data/lib/slack_resources/resources/event_api/details/app_rate_limited.json +41 -59
  13. data/lib/slack_resources/resources/event_api/details/app_uninstalled.json +16 -22
  14. data/lib/slack_resources/resources/event_api/details/channel_archive.json +30 -42
  15. data/lib/slack_resources/resources/event_api/details/channel_created.json +54 -63
  16. data/lib/slack_resources/resources/event_api/details/channel_deleted.json +23 -32
  17. data/lib/slack_resources/resources/event_api/details/channel_history_changed.json +33 -48
  18. data/lib/slack_resources/resources/event_api/details/channel_left.json +23 -32
  19. data/lib/slack_resources/resources/event_api/details/channel_rename.json +49 -58
  20. data/lib/slack_resources/resources/event_api/details/channel_unarchive.json +30 -42
  21. data/lib/slack_resources/resources/event_api/details/dnd_updated.json +54 -66
  22. data/lib/slack_resources/resources/event_api/details/dnd_updated_user.json +50 -62
  23. data/lib/slack_resources/resources/event_api/details/email_domain_changed.json +27 -39
  24. data/lib/slack_resources/resources/event_api/details/emoji_changed.json +44 -85
  25. data/lib/slack_resources/resources/event_api/details/event_callback.json +72 -102
  26. data/lib/slack_resources/resources/event_api/details/file_change.json +37 -49
  27. data/lib/slack_resources/resources/event_api/details/file_comment_added.json +46 -61
  28. data/lib/slack_resources/resources/event_api/details/file_comment_deleted.json +44 -59
  29. data/lib/slack_resources/resources/event_api/details/file_comment_edited.json +46 -61
  30. data/lib/slack_resources/resources/event_api/details/file_created.json +37 -49
  31. data/lib/slack_resources/resources/event_api/details/file_deleted.json +29 -41
  32. data/lib/slack_resources/resources/event_api/details/file_public.json +37 -49
  33. data/lib/slack_resources/resources/event_api/details/file_shared.json +37 -49
  34. data/lib/slack_resources/resources/event_api/details/file_unshared.json +37 -49
  35. data/lib/slack_resources/resources/event_api/details/grid_migration_finished.json +22 -31
  36. data/lib/slack_resources/resources/event_api/details/grid_migration_started.json +22 -31
  37. data/lib/slack_resources/resources/event_api/details/group_archive.json +23 -32
  38. data/lib/slack_resources/resources/event_api/details/group_close.json +30 -42
  39. data/lib/slack_resources/resources/event_api/details/group_deleted.json +23 -32
  40. data/lib/slack_resources/resources/event_api/details/group_history_changed.json +33 -48
  41. data/lib/slack_resources/resources/event_api/details/group_left.json +23 -32
  42. data/lib/slack_resources/resources/event_api/details/group_open.json +30 -42
  43. data/lib/slack_resources/resources/event_api/details/group_rename.json +49 -58
  44. data/lib/slack_resources/resources/event_api/details/group_unarchive.json +23 -32
  45. data/lib/slack_resources/resources/event_api/details/im_close.json +30 -42
  46. data/lib/slack_resources/resources/event_api/details/im_created.json +41 -53
  47. data/lib/slack_resources/resources/event_api/details/im_history_changed.json +33 -48
  48. data/lib/slack_resources/resources/event_api/details/im_open.json +30 -42
  49. data/lib/slack_resources/resources/event_api/details/link_shared.json +83 -107
  50. data/lib/slack_resources/resources/event_api/details/member_joined_channel.json +48 -66
  51. data/lib/slack_resources/resources/event_api/details/member_left_channel.json +43 -58
  52. data/lib/slack_resources/resources/event_api/details/message.app_home.json +53 -74
  53. data/lib/slack_resources/resources/event_api/details/message.channels.json +56 -74
  54. data/lib/slack_resources/resources/event_api/details/message.groups.json +56 -74
  55. data/lib/slack_resources/resources/event_api/details/message.im.json +56 -74
  56. data/lib/slack_resources/resources/event_api/details/message.json +60 -106
  57. data/lib/slack_resources/resources/event_api/details/message.mpim.json +56 -74
  58. data/lib/slack_resources/resources/event_api/details/pin_added.json +47 -65
  59. data/lib/slack_resources/resources/event_api/details/pin_removed.json +52 -73
  60. data/lib/slack_resources/resources/event_api/details/reaction_added.json +73 -94
  61. data/lib/slack_resources/resources/event_api/details/reaction_removed.json +73 -94
  62. data/lib/slack_resources/resources/event_api/details/resources_added.json +115 -127
  63. data/lib/slack_resources/resources/event_api/details/resources_removed.json +115 -127
  64. data/lib/slack_resources/resources/event_api/details/scope_denied.json +59 -74
  65. data/lib/slack_resources/resources/event_api/details/scope_granted.json +59 -74
  66. data/lib/slack_resources/resources/event_api/details/star_added.json +41 -56
  67. data/lib/slack_resources/resources/event_api/details/star_removed.json +41 -56
  68. data/lib/slack_resources/resources/event_api/details/subteam_created.json +168 -177
  69. data/lib/slack_resources/resources/event_api/details/subteam_members_changed.json +82 -118
  70. data/lib/slack_resources/resources/event_api/details/subteam_self_added.json +22 -31
  71. data/lib/slack_resources/resources/event_api/details/subteam_self_removed.json +22 -31
  72. data/lib/slack_resources/resources/event_api/details/subteam_updated.json +180 -189
  73. data/lib/slack_resources/resources/event_api/details/team_domain_change.json +26 -38
  74. data/lib/slack_resources/resources/event_api/details/team_join.json +26 -35
  75. data/lib/slack_resources/resources/event_api/details/team_rename.json +23 -32
  76. data/lib/slack_resources/resources/event_api/details/tokens_revoked.json +49 -58
  77. data/lib/slack_resources/resources/event_api/details/url_verification.json +26 -32
  78. data/lib/slack_resources/resources/event_api/details/user_change.json +26 -35
  79. data/lib/slack_resources/resources/event_api/details/user_resource_denied.json +64 -82
  80. data/lib/slack_resources/resources/event_api/details/user_resource_granted.json +64 -82
  81. data/lib/slack_resources/resources/event_api/details/user_resource_removed.json +29 -41
  82. data/lib/slack_resources/resources/event_api/examples/app_mention.json +4 -4
  83. data/lib/slack_resources/resources/event_api/examples/app_rate_limited.json +4 -4
  84. data/lib/slack_resources/resources/event_api/examples/app_uninstalled.json +9 -1
  85. data/lib/slack_resources/resources/event_api/examples/channel_archive.json +1 -1
  86. data/lib/slack_resources/resources/event_api/examples/channel_created.json +2 -2
  87. data/lib/slack_resources/resources/event_api/examples/channel_deleted.json +2 -2
  88. data/lib/slack_resources/resources/event_api/examples/channel_history_changed.json +2 -2
  89. data/lib/slack_resources/resources/event_api/examples/channel_left.json +2 -2
  90. data/lib/slack_resources/resources/event_api/examples/channel_rename.json +2 -2
  91. data/lib/slack_resources/resources/event_api/examples/channel_unarchive.json +1 -1
  92. data/lib/slack_resources/resources/event_api/examples/dnd_updated.json +3 -3
  93. data/lib/slack_resources/resources/event_api/examples/dnd_updated_user.json +3 -3
  94. data/lib/slack_resources/resources/event_api/examples/email_domain_changed.json +2 -2
  95. data/lib/slack_resources/resources/event_api/examples/emoji_changed.json +5 -4
  96. data/lib/slack_resources/resources/event_api/examples/event_callback.json +6 -7
  97. data/lib/slack_resources/resources/event_api/examples/file_change.json +3 -3
  98. data/lib/slack_resources/resources/event_api/examples/file_comment_added.json +3 -3
  99. data/lib/slack_resources/resources/event_api/examples/file_comment_deleted.json +3 -3
  100. data/lib/slack_resources/resources/event_api/examples/file_comment_edited.json +3 -3
  101. data/lib/slack_resources/resources/event_api/examples/file_created.json +3 -3
  102. data/lib/slack_resources/resources/event_api/examples/file_deleted.json +2 -2
  103. data/lib/slack_resources/resources/event_api/examples/file_public.json +3 -3
  104. data/lib/slack_resources/resources/event_api/examples/file_shared.json +3 -3
  105. data/lib/slack_resources/resources/event_api/examples/file_unshared.json +3 -3
  106. data/lib/slack_resources/resources/event_api/examples/grid_migration_finished.json +10 -2
  107. data/lib/slack_resources/resources/event_api/examples/grid_migration_started.json +10 -2
  108. data/lib/slack_resources/resources/event_api/examples/group_archive.json +2 -2
  109. data/lib/slack_resources/resources/event_api/examples/group_close.json +2 -2
  110. data/lib/slack_resources/resources/event_api/examples/group_deleted.json +2 -2
  111. data/lib/slack_resources/resources/event_api/examples/group_history_changed.json +2 -2
  112. data/lib/slack_resources/resources/event_api/examples/group_left.json +2 -2
  113. data/lib/slack_resources/resources/event_api/examples/group_open.json +2 -2
  114. data/lib/slack_resources/resources/event_api/examples/group_rename.json +2 -2
  115. data/lib/slack_resources/resources/event_api/examples/group_unarchive.json +2 -2
  116. data/lib/slack_resources/resources/event_api/examples/im_close.json +2 -2
  117. data/lib/slack_resources/resources/event_api/examples/im_created.json +3 -3
  118. data/lib/slack_resources/resources/event_api/examples/im_history_changed.json +2 -2
  119. data/lib/slack_resources/resources/event_api/examples/im_open.json +2 -2
  120. data/lib/slack_resources/resources/event_api/examples/link_shared.json +30 -18
  121. data/lib/slack_resources/resources/event_api/examples/member_joined_channel.json +3 -3
  122. data/lib/slack_resources/resources/event_api/examples/member_left_channel.json +3 -3
  123. data/lib/slack_resources/resources/event_api/examples/message.app_home.json +18 -7
  124. data/lib/slack_resources/resources/event_api/examples/message.channels.json +18 -7
  125. data/lib/slack_resources/resources/event_api/examples/message.groups.json +18 -7
  126. data/lib/slack_resources/resources/event_api/examples/message.im.json +18 -7
  127. data/lib/slack_resources/resources/event_api/examples/message.json +4 -6
  128. data/lib/slack_resources/resources/event_api/examples/message.mpim.json +18 -7
  129. data/lib/slack_resources/resources/event_api/examples/pin_added.json +3 -3
  130. data/lib/slack_resources/resources/event_api/examples/pin_removed.json +4 -4
  131. data/lib/slack_resources/resources/event_api/examples/reaction_added.json +5 -5
  132. data/lib/slack_resources/resources/event_api/examples/reaction_removed.json +5 -5
  133. data/lib/slack_resources/resources/event_api/examples/resources_added.json +28 -17
  134. data/lib/slack_resources/resources/event_api/examples/resources_removed.json +28 -17
  135. data/lib/slack_resources/resources/event_api/examples/scope_denied.json +17 -6
  136. data/lib/slack_resources/resources/event_api/examples/scope_granted.json +17 -6
  137. data/lib/slack_resources/resources/event_api/examples/star_added.json +3 -3
  138. data/lib/slack_resources/resources/event_api/examples/star_removed.json +3 -3
  139. data/lib/slack_resources/resources/event_api/examples/subteam_created.json +2 -2
  140. data/lib/slack_resources/resources/event_api/examples/subteam_members_changed.json +6 -6
  141. data/lib/slack_resources/resources/event_api/examples/subteam_self_added.json +2 -2
  142. data/lib/slack_resources/resources/event_api/examples/subteam_self_removed.json +2 -2
  143. data/lib/slack_resources/resources/event_api/examples/subteam_updated.json +2 -2
  144. data/lib/slack_resources/resources/event_api/examples/team_domain_change.json +2 -2
  145. data/lib/slack_resources/resources/event_api/examples/team_rename.json +2 -2
  146. data/lib/slack_resources/resources/event_api/examples/tokens_revoked.json +16 -8
  147. data/lib/slack_resources/resources/event_api/examples/url_verification.json +1 -1
  148. data/lib/slack_resources/resources/event_api/examples/user_resource_denied.json +17 -6
  149. data/lib/slack_resources/resources/event_api/examples/user_resource_granted.json +17 -6
  150. data/lib/slack_resources/resources/event_api/examples/user_resource_removed.json +14 -3
  151. data/lib/slack_resources/{raw_data → resources}/event_api/meta.json +72 -0
  152. data/lib/slack_resources/resources/event_api/schema.json +105 -257
  153. data/lib/slack_resources/resources/event_api/schemas/emoji_changed.json +9 -27
  154. data/lib/slack_resources/resources/event_api/schemas/member_joined_channel.json +4 -1
  155. data/lib/slack_resources/resources/event_api/schemas/member_left_channel.json +4 -1
  156. data/lib/slack_resources/resources/event_api/schemas/message.app_home.json +4 -1
  157. data/lib/slack_resources/resources/event_api/schemas/message.channels.json +7 -1
  158. data/lib/slack_resources/resources/event_api/schemas/message.groups.json +7 -1
  159. data/lib/slack_resources/resources/event_api/schemas/message.im.json +7 -1
  160. data/lib/slack_resources/resources/event_api/schemas/message.json +17 -39
  161. data/lib/slack_resources/resources/event_api/schemas/message.mpim.json +7 -1
  162. data/lib/slack_resources/resources/event_api/schemas/resources_added.json +15 -15
  163. data/lib/slack_resources/resources/event_api/schemas/resources_removed.json +15 -15
  164. data/lib/slack_resources/resources/event_api/schemas/team_rename.json +2 -2
  165. data/lib/slack_resources/resources/event_api/schemas/url_verification.json +6 -0
  166. data/lib/slack_resources/resources/event_api/summary.json +3397 -4884
  167. data/lib/slack_resources/version.rb +3 -0
  168. data/lib/slack_resources.rb +1 -9
  169. data/slack_resources.gemspec +2 -4
  170. metadata +10 -93
  171. data/.circleci/gem_deployment.rb +0 -53
  172. data/lib/generate_event_api_resources.rb +0 -8
  173. data/lib/slack_resources/generator/event_api/examples_preparation.rb +0 -71
  174. data/lib/slack_resources/generator/event_api/strong_hash.rb +0 -25
  175. data/lib/slack_resources/generator/event_api/to_schema.rb +0 -200
  176. data/lib/slack_resources/generator/event_api/type_detection.rb +0 -272
  177. data/lib/slack_resources/generator/event_api/write.rb +0 -123
  178. data/lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.add.json +0 -7
  179. data/lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.remove.json +0 -6
  180. data/lib/slack_resources/raw_data/event_api/examples/app_mention.json +0 -8
  181. data/lib/slack_resources/raw_data/event_api/examples/app_rate_limited.json +0 -7
  182. data/lib/slack_resources/raw_data/event_api/examples/app_uninstalled.json +0 -11
  183. data/lib/slack_resources/raw_data/event_api/examples/channel_archive.json +0 -5
  184. data/lib/slack_resources/raw_data/event_api/examples/channel_created.json +0 -9
  185. data/lib/slack_resources/raw_data/event_api/examples/channel_deleted.json +0 -4
  186. data/lib/slack_resources/raw_data/event_api/examples/channel_history_changed.json +0 -6
  187. data/lib/slack_resources/raw_data/event_api/examples/channel_left.json +0 -4
  188. data/lib/slack_resources/raw_data/event_api/examples/channel_rename.json +0 -8
  189. data/lib/slack_resources/raw_data/event_api/examples/channel_unarchive.json +0 -5
  190. data/lib/slack_resources/raw_data/event_api/examples/dnd_updated.json +0 -11
  191. data/lib/slack_resources/raw_data/event_api/examples/dnd_updated_user.json +0 -9
  192. data/lib/slack_resources/raw_data/event_api/examples/email_domain_changed.json +0 -5
  193. data/lib/slack_resources/raw_data/event_api/examples/emoji_changed.json +0 -8
  194. data/lib/slack_resources/raw_data/event_api/examples/file_change.json +0 -7
  195. data/lib/slack_resources/raw_data/event_api/examples/file_comment_added.json +0 -9
  196. data/lib/slack_resources/raw_data/event_api/examples/file_comment_deleted.json +0 -8
  197. data/lib/slack_resources/raw_data/event_api/examples/file_comment_edited.json +0 -9
  198. data/lib/slack_resources/raw_data/event_api/examples/file_created.json +0 -7
  199. data/lib/slack_resources/raw_data/event_api/examples/file_deleted.json +0 -5
  200. data/lib/slack_resources/raw_data/event_api/examples/file_public.json +0 -7
  201. data/lib/slack_resources/raw_data/event_api/examples/file_shared.json +0 -7
  202. data/lib/slack_resources/raw_data/event_api/examples/file_unshared.json +0 -7
  203. data/lib/slack_resources/raw_data/event_api/examples/grid_migration_finished.json +0 -12
  204. data/lib/slack_resources/raw_data/event_api/examples/grid_migration_started.json +0 -12
  205. data/lib/slack_resources/raw_data/event_api/examples/group_archive.json +0 -4
  206. data/lib/slack_resources/raw_data/event_api/examples/group_close.json +0 -5
  207. data/lib/slack_resources/raw_data/event_api/examples/group_deleted.json +0 -4
  208. data/lib/slack_resources/raw_data/event_api/examples/group_history_changed.json +0 -6
  209. data/lib/slack_resources/raw_data/event_api/examples/group_left.json +0 -4
  210. data/lib/slack_resources/raw_data/event_api/examples/group_open.json +0 -5
  211. data/lib/slack_resources/raw_data/event_api/examples/group_rename.json +0 -8
  212. data/lib/slack_resources/raw_data/event_api/examples/group_unarchive.json +0 -4
  213. data/lib/slack_resources/raw_data/event_api/examples/im_close.json +0 -5
  214. data/lib/slack_resources/raw_data/event_api/examples/im_created.json +0 -6
  215. data/lib/slack_resources/raw_data/event_api/examples/im_history_changed.json +0 -6
  216. data/lib/slack_resources/raw_data/event_api/examples/im_open.json +0 -5
  217. data/lib/slack_resources/raw_data/event_api/examples/link_shared.json +0 -33
  218. data/lib/slack_resources/raw_data/event_api/examples/member_joined_channel.json +0 -8
  219. data/lib/slack_resources/raw_data/event_api/examples/member_left_channel.json +0 -7
  220. data/lib/slack_resources/raw_data/event_api/examples/message.app_home.json +0 -20
  221. data/lib/slack_resources/raw_data/event_api/examples/message.channels.json +0 -20
  222. data/lib/slack_resources/raw_data/event_api/examples/message.groups.json +0 -20
  223. data/lib/slack_resources/raw_data/event_api/examples/message.im.json +0 -20
  224. data/lib/slack_resources/raw_data/event_api/examples/message.json +0 -7
  225. data/lib/slack_resources/raw_data/event_api/examples/message.mpim.json +0 -20
  226. data/lib/slack_resources/raw_data/event_api/examples/pin_added.json +0 -8
  227. data/lib/slack_resources/raw_data/event_api/examples/pin_removed.json +0 -9
  228. data/lib/slack_resources/raw_data/event_api/examples/reaction_added.json +0 -12
  229. data/lib/slack_resources/raw_data/event_api/examples/reaction_removed.json +0 -12
  230. data/lib/slack_resources/raw_data/event_api/examples/resources_added.json +0 -31
  231. data/lib/slack_resources/raw_data/event_api/examples/resources_removed.json +0 -31
  232. data/lib/slack_resources/raw_data/event_api/examples/scope_denied.json +0 -20
  233. data/lib/slack_resources/raw_data/event_api/examples/scope_granted.json +0 -20
  234. data/lib/slack_resources/raw_data/event_api/examples/star_added.json +0 -7
  235. data/lib/slack_resources/raw_data/event_api/examples/star_removed.json +0 -7
  236. data/lib/slack_resources/raw_data/event_api/examples/subteam_created.json +0 -28
  237. data/lib/slack_resources/raw_data/event_api/examples/subteam_members_changed.json +0 -17
  238. data/lib/slack_resources/raw_data/event_api/examples/subteam_self_added.json +0 -4
  239. data/lib/slack_resources/raw_data/event_api/examples/subteam_self_removed.json +0 -4
  240. data/lib/slack_resources/raw_data/event_api/examples/subteam_updated.json +0 -34
  241. data/lib/slack_resources/raw_data/event_api/examples/team_domain_change.json +0 -5
  242. data/lib/slack_resources/raw_data/event_api/examples/team_join.json +0 -5
  243. data/lib/slack_resources/raw_data/event_api/examples/team_rename.json +0 -4
  244. data/lib/slack_resources/raw_data/event_api/examples/tokens_revoked.json +0 -19
  245. data/lib/slack_resources/raw_data/event_api/examples/url_verification.json +0 -5
  246. data/lib/slack_resources/raw_data/event_api/examples/user_change.json +0 -5
  247. data/lib/slack_resources/raw_data/event_api/examples/user_resource_denied.json +0 -20
  248. data/lib/slack_resources/raw_data/event_api/examples/user_resource_granted.json +0 -20
  249. data/lib/slack_resources/raw_data/event_api/examples/user_resource_removed.json +0 -16
  250. data/lib/slack_resources/resources/event_api/details/emoji_changed.add.json +0 -78
  251. data/lib/slack_resources/resources/event_api/details/emoji_changed.remove.json +0 -77
  252. data/lib/slack_resources/resources/event_api/examples/emoji_changed.add.json +0 -7
  253. data/lib/slack_resources/resources/event_api/examples/emoji_changed.remove.json +0 -8
  254. data/lib/slack_resources/resources/event_api/schemas/emoji_changed.add.json +0 -42
  255. data/lib/slack_resources/resources/event_api/schemas/emoji_changed.remove.json +0 -40
  256. data/lib/slack_resources/resources/event_api.rb +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9dba64ad62d735b1fdd4d78bcc27d49dc0b542b6cc8396f9c242b0ed75957c4
4
- data.tar.gz: 5d44a72526ca76e82b74bae7cbb43c0415ac3a3dcb507c1bae68263eb379f85a
3
+ metadata.gz: f8dc3db936e304bc7bbe9a46ca4f15abc27c9ae3633d233ed30125d1fa4f9dac
4
+ data.tar.gz: ac21512366ff00cbca6e1353ea629d8bcc763f21ee76fd72dab691f5d8067e0d
5
5
  SHA512:
6
- metadata.gz: 3d89dc5724b52540c15d02b33f5c353dff4a8f1bb19924f03ceec801b68af309b47fbb5e62261b55af4b2f3861f3748c3763d0388f4c9be40be4603b3549362d
7
- data.tar.gz: c42e4c9d96649cad665cf4c5e756379fbaeba9da8ab45555533cdd184d8d10fd70405d34a28ef8f9cc1c4bdfd858e5d661807205b230960adffe56fd2adc4f60
6
+ metadata.gz: 6996b10694f5a3e400dc90368865764ad0741ab549662ee836656bbd104e6da432645ff4945b84aec7d2158a463426ba5ac8367d71108783f9125bf3f2efc463
7
+ data.tar.gz: 2aaa56fa07cac1af32652c9c1086e8d4d26cfc04902b65405db3e7c68d134438cd0c2181e049bd3271996bf8e32687343df6f722dbafea64d23181f06d1fb8b1
data/.circleci/config.yml CHANGED
@@ -1,62 +1,11 @@
1
1
  version: 2
2
2
  jobs:
3
- test:
4
- parallelism: 1
5
- docker:
6
- - image: circleci/ruby:2.5.1
7
- steps:
8
- - checkout
9
-
10
- - restore_cache:
11
- keys:
12
- - rails-demo-bundle-v2-{{ checksum "Gemfile.lock" }}
13
- - rails-demo-bundle-v2-
14
-
15
- - run:
16
- name: Bundle Install
17
- command: bundle check || bundle install --path vendor/bundle
18
-
19
- - save_cache:
20
- key: rails-demo-bundle-v2-{{ checksum "Gemfile.lock" }}
21
- paths:
22
- - vendor/bundle
23
-
24
- - run:
25
- name: Test
26
- command: bundle exec rspec -cfd
27
- - run:
28
- name: Rubocop
29
- command: bundle exec rubocop
30
-
31
3
  deploy_gem:
32
4
  parallelism: 1
33
5
  docker:
34
- - image: circleci/ruby:2.5.1
6
+ - image: circleci/ruby-2.5
35
7
  steps:
36
8
  - checkout
37
- - run:
38
- name: Deployment
39
- command: ruby .circleci/gem_deployment.rb $RUBYGEMS_API_KEY
40
-
41
- deploy_gem_minor:
42
- parallelism: 1
43
- docker:
44
- - image: circleci/ruby:2.5.1
45
- steps:
46
- - checkout
47
- - run:
48
- name: Deployment
49
- command: ruby .circleci/gem_deployment.rb $RUBYGEMS_API_KEY minor
50
-
51
- deploy_gem_major:
52
- parallelism: 1
53
- docker:
54
- - image: circleci/ruby:2.5.1
55
- steps:
56
- - checkout
57
- - run:
58
- name: Deployment
59
- command: ruby .circleci/gem_deployment.rb $RUBYGEMS_API_KEY major
60
9
 
61
10
 
62
11
  workflows:
@@ -71,17 +20,3 @@ workflows:
71
20
  - deployment/gem
72
21
  requires:
73
22
  - test
74
- - deploy_gem_minor:
75
- filters:
76
- branches:
77
- only:
78
- - deployment/gem_minor
79
- requires:
80
- - test
81
- - deploy_gem_major:
82
- filters:
83
- branches:
84
- only:
85
- - deployment/gem_major
86
- requires:
87
- - test
@@ -0,0 +1,11 @@
1
+ class Preparation
2
+ def initialize(params)
3
+ @params = params
4
+ end
5
+
6
+ def execute!
7
+ p `gem search slack_resources`
8
+ end
9
+ end
10
+
11
+ Preparation.new(ARGV).execute! if __FILE__ == $0
data/.rubocop.yml CHANGED
@@ -2,8 +2,6 @@ AllCops:
2
2
  TargetRubyVersion: 2.5
3
3
  Exclude:
4
4
  - tmp
5
- - lib/slack_resources/generator/event_api/fetch.rb
6
- - vendor/**/*
7
5
 
8
6
  Rails:
9
7
  Enabled: true
@@ -29,7 +27,7 @@ Metrics/BlockLength:
29
27
  - 'spec/**/*'
30
28
 
31
29
  Metrics/MethodLength:
32
- Max: 200
30
+ Max: 40
33
31
  Exclude:
34
32
  - db/migrate/*.rb
35
33
 
@@ -37,7 +35,7 @@ Metrics/ModuleLength:
37
35
  Max: 150
38
36
 
39
37
  Metrics/ClassLength:
40
- Max: 300
38
+ Max: 150
41
39
  Exclude:
42
40
  - db/migrate/*.rb
43
41
 
@@ -96,9 +94,3 @@ Naming/UncommunicativeMethodParamName:
96
94
 
97
95
  Layout/IndentArray:
98
96
  EnforcedStyle: consistent
99
-
100
- Metrics/ParameterLists:
101
- Max: 20
102
-
103
- Style/RescueModifier:
104
- Enabled: false
data/Gemfile CHANGED
@@ -2,4 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
+ # Specify your gem's dependencies in slack_app_request_handler.gemspec
5
6
  gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- slack_resources (0.0.0)
4
+ slack_app_request_handler (0.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -12,24 +12,24 @@ GEM
12
12
  minitest (~> 5.1)
13
13
  tzinfo (~> 1.1)
14
14
  ast (2.4.0)
15
- concurrent-ruby (1.1.4)
15
+ concurrent-ruby (1.1.3)
16
16
  diff-lcs (1.3)
17
17
  domain_name (0.5.20180417)
18
18
  unf (>= 0.0.5, < 1.0.0)
19
19
  dotenv (2.5.0)
20
20
  http-cookie (1.0.3)
21
21
  domain_name (~> 0.5)
22
- i18n (1.3.0)
22
+ i18n (1.2.0)
23
23
  concurrent-ruby (~> 1.0)
24
24
  jaro_winkler (1.5.1)
25
25
  mime-types (3.2.2)
26
26
  mime-types-data (~> 3.2015)
27
27
  mime-types-data (3.2018.0812)
28
- mini_portile2 (2.4.0)
28
+ mini_portile2 (2.3.0)
29
29
  minitest (5.11.3)
30
30
  netrc (0.11.0)
31
- nokogiri (1.9.1)
32
- mini_portile2 (~> 2.4.0)
31
+ nokogiri (1.8.5)
32
+ mini_portile2 (~> 2.3.0)
33
33
  onkcop (0.53.0.2)
34
34
  rubocop (>= 0.53.0)
35
35
  rubocop-rspec (>= 1.24.0)
@@ -73,7 +73,7 @@ GEM
73
73
  unf (0.1.4)
74
74
  unf_ext
75
75
  unf_ext (0.0.7.5)
76
- unicode-display_width (1.4.1)
76
+ unicode-display_width (1.4.0)
77
77
 
78
78
  PLATFORMS
79
79
  ruby
@@ -87,7 +87,7 @@ DEPENDENCIES
87
87
  rake (~> 10.0)
88
88
  rest-client (~> 2.0)
89
89
  rspec (~> 3.0)
90
- slack_resources!
90
+ slack_app_request_handler!
91
91
 
92
92
  BUNDLED WITH
93
93
  1.16.1
@@ -0,0 +1,364 @@
1
+ require 'pathname'
2
+ require 'rest-client'
3
+ require 'nokogiri'
4
+ require 'json'
5
+ require 'active_support/core_ext/object/blank'
6
+ require 'active_support/core_ext/string/inflections'
7
+
8
+ BASE_DIR = Pathname('./lib/slack_resources/resources/event_api/')
9
+ EXAMPLES_DIR = BASE_DIR.join('examples')
10
+ ADDED_EXAMPLES_DIR = BASE_DIR.join('_added_examples')
11
+ DETAILS_DIR = BASE_DIR.join('details')
12
+ SCHEMAS_DIR = BASE_DIR.join('schemas')
13
+
14
+ FileUtils.mkdir_p(DETAILS_DIR)
15
+ FileUtils.mkdir_p(SCHEMAS_DIR)
16
+
17
+ PRESET_SCHEMA = JSON.parse(File.read('lib/schema.json'))
18
+ PRESET_DEFINITIONS = PRESET_SCHEMA['definitions']
19
+
20
+ class Hash
21
+ def protect_merge!(b)
22
+ (b.keys - keys).map do |new_key|
23
+ self[new_key] = b[new_key]
24
+ end
25
+
26
+ self
27
+ end
28
+
29
+ def key_ordered
30
+ keys.sort.inject({}) do |a, k|
31
+ a.merge!(k => self[k])
32
+ end
33
+ end
34
+ end
35
+
36
+ def to_schema(response, url, preset_schema = JSON.parse(PRESET_SCHEMA.to_json))
37
+ schema, defined, defined_used = to_schema_support(response, url, 'root', preset_schema)
38
+
39
+ [schema, defined, defined_used]
40
+ end
41
+
42
+ def string_k_v(k, v)
43
+ (v.nil? || v.is_a?(String)) && k
44
+ end
45
+
46
+ def to_schema_support(response, url, key = 'root', preset = {}, defined = {}, defined_used = [], parent = {})
47
+ types = JSON.parse(response.to_json).key_ordered
48
+
49
+ def_string = ->(id_key) { id_key.tap { defined.merge!(id_key => { 'type' => 'string' }) } }
50
+
51
+ properties = types.inject({}) do |a, (k, v)|
52
+ if v.is_a?(Hash)
53
+ if v['_type'] && v['_type'] == 'enum'
54
+ def_k = "#{key == 'root' ? types['type'] : key}_#{k}"
55
+ defined[def_k] = { 'type' => 'string', enum: v['items'] }
56
+ next a.merge(k => { '$ref' => "#/definitions/#{def_k}" })
57
+ end
58
+
59
+ def_k =
60
+ case
61
+ when k == 'item'
62
+ t = types['type'].split('_').shift
63
+ "#{t}_item"
64
+ else
65
+ k
66
+ end
67
+
68
+ schema, = to_schema_support(v, url, k, preset, defined, defined_used, types)
69
+ defined_used << def_k
70
+ defined[def_k] = schema
71
+ next a.merge(k => { '$ref' => "#/definitions/#{def_k}" })
72
+ end
73
+
74
+ type =
75
+ case k
76
+ when key == 'root' && 'type'
77
+ { 'const' => v }
78
+ when key == 'root' && 'subtype'
79
+ def_string.call('subscription_subtype')
80
+ when key == 'event' && 'type'
81
+ { 'const' => v }
82
+ when key == 'item' && 'type'
83
+ t = parent['type'].split('_').shift
84
+ def_string.call("#{t}_#{key}_type")
85
+ when 'type'
86
+ def_string.call("#{key}_type")
87
+
88
+ when 'name'
89
+ def_string.call("#{key}_name")
90
+ when 'id'
91
+ def_string.call("#{key}_id")
92
+ when /.+_id$/
93
+ def_string.call(k)
94
+
95
+ when types['type'] == 'emoji_changed' && 'names'
96
+ def_string.call('emoji_name')
97
+ '[]emoji_name'
98
+ when 'reaction'
99
+ def_string.call('emoji_name')
100
+ 'emoji_name'
101
+ when types['type'] == 'team_rename' && 'name'
102
+ 'team_name'
103
+
104
+ when string_k_v('item_user', v),
105
+ string_k_v('user', v),
106
+ string_k_v('creator', v),
107
+ string_k_v('inviter', v),
108
+ string_k_v('created_by', v),
109
+ string_k_v('updated_by', v),
110
+ string_k_v('deleted_by', v)
111
+ def_string.call('user_id')
112
+ when string_k_v('channel', v)
113
+ def_string.call('channel_id')
114
+ when string_k_v('comment', v)
115
+ def_string.call('comment_id')
116
+ when string_k_v('team', v)
117
+ def_string.call('team_id')
118
+
119
+ when 'authed_users', 'authed_users', 'users', 'added_users', 'removed_users'
120
+ def_string.call('user_id')
121
+ '[]user_id'
122
+ when 'authed_teams'
123
+ def_string.call('team_id')
124
+ '[]team_id'
125
+ when 'channels'
126
+ def_string.call('channel_id')
127
+ '[]channel_id'
128
+ when 'groups'
129
+ def_string.call('group_id')
130
+ '[]group_id'
131
+
132
+ when 'scopes'
133
+ '[]scope'
134
+ when 'links'
135
+ '[]link'
136
+
137
+ when 'user_count', 'added_users_count', 'removed_users_count'
138
+ 'user_count'
139
+
140
+ when 'resources'
141
+ defined['resource_item'] = to_schema_support(v.first, url, k, preset, defined, defined_used, types)
142
+ '[]resource_item'
143
+
144
+ when v.is_a?(Integer) && k
145
+ 'time_integer'
146
+ when (v == true || v == false) && k
147
+ 'boolean'
148
+ when 'email_domain', 'text', 'description', 'handle', 'url', 'domain'
149
+ 'string'
150
+ when parent['type'] == 'tokens_revoked' && 'oauth'
151
+ '[]string'
152
+ when parent['type'] == 'tokens_revoked' && 'bot'
153
+ '[]string'
154
+ when 'latest', /.+_ts$/
155
+ 'timestamp'
156
+ when preset[k] && k
157
+ k
158
+ else
159
+ if v.respond_to?(:to_f) && v == v.to_f.to_s
160
+ 'timestamp'
161
+ elsif v.is_a?(String)
162
+ def_string.call(k)
163
+ 'string'
164
+ else
165
+ v
166
+ end
167
+ end
168
+
169
+ if default_type?(type)
170
+ a.merge(k => { 'type' => type })
171
+ elsif type.is_a?(Hash)
172
+ a.merge(k => type)
173
+ elsif type && type[0..1] == '[]'
174
+ item = type[2..-1]
175
+ if default_type?(item)
176
+ next a.merge(
177
+ k => {
178
+ 'type' => 'array',
179
+ 'items' => {
180
+ 'type' => item,
181
+ },
182
+ }
183
+ )
184
+ else
185
+ if v.first.is_a?(Hash)
186
+ schema, = to_schema_support(v.first, url, item, preset, defined, defined_used, types)
187
+ defined[item] = schema
188
+ elsif v.first.is_a?(String)
189
+ def_string.call(item)
190
+ end
191
+
192
+ defined_used << item
193
+ end
194
+ a.merge(
195
+ k => {
196
+ 'type' => 'array',
197
+ 'items' => {
198
+ '$ref' => "#/definitions/#{item}",
199
+ },
200
+ }
201
+ )
202
+ else
203
+ defined_used << type
204
+ a.merge(
205
+ k => {
206
+ '$ref' => "#/definitions/#{type}",
207
+ }
208
+ )
209
+ end
210
+ end
211
+
212
+ [
213
+ {
214
+ 'type' => 'object',
215
+ description: properties.blank? ? "definition snipped. learn more: #{url}" : '(defined by script)',
216
+ 'properties' => properties,
217
+ },
218
+ defined,
219
+ defined_used,
220
+ ]
221
+ end
222
+
223
+ def default_type?(type)
224
+ type == 'string' || type == 'number' || type == 'object' || type == 'array' || type == 'boolean' || type == 'null'
225
+ end
226
+
227
+ def safe_merge(a, b)
228
+ (b.keys - a.keys).map do |new_key|
229
+ a[new_key] = b[new_key]
230
+ end
231
+
232
+ a
233
+ end
234
+
235
+ def prepare_data
236
+ Dir.glob(ADDED_EXAMPLES_DIR.join('**/*.json')).each do |f|
237
+ file_name = File.basename(f)
238
+ FileUtils.copy(f, EXAMPLES_DIR.join(file_name))
239
+ end
240
+
241
+ raw_examples = Dir.glob(EXAMPLES_DIR.join('**/*.json')).map do |f|
242
+ example = JSON.parse(File.read(f))
243
+ [File.basename(f, '.json'), (example['event'].presence || example).key_ordered]
244
+ end
245
+
246
+ raw_keys = Set.new(raw_examples.map(&:first))
247
+ real_set = Set.new
248
+ real_type = {}
249
+ raw_types = raw_examples.each_with_object({}) do |(name, v), a|
250
+ type = v['type']
251
+
252
+ real_type.protect_merge!(type => JSON.parse(v.to_json))
253
+
254
+ unless real_set.include?(type)
255
+ real_set.add(type)
256
+ raw_keys.delete(name)
257
+ next a.merge!(name => v)
258
+ end
259
+
260
+ raw_keys.delete(name) if name != type
261
+ already = real_type[type]
262
+
263
+ keys = (already.keys + v.keys).uniq
264
+
265
+ keys.each do |k|
266
+ vv = v[k]
267
+ pre_v = already[k]
268
+
269
+ if k.match?('.*_type')
270
+ if pre_v.is_a?(Hash) && pre_v['_type'] == 'enum'
271
+ pre_v['items'] << vv
272
+ else
273
+ already[k] = {
274
+ '_type' => 'enum',
275
+ 'target' => k,
276
+ 'items' => [pre_v],
277
+ }
278
+ end
279
+ else
280
+ # TODO: nil が許容されている場合は type を or にする
281
+ end
282
+ end
283
+ end
284
+
285
+ real_type.select { |k, _| raw_keys.include?(k) }.protect_merge!(raw_types)
286
+ end
287
+
288
+ def write_event_api_summary
289
+ meta = JSON.parse(File.read(BASE_DIR.join('meta.json')))
290
+
291
+ event_api_pages = prepare_data.map do |type, data|
292
+ info = meta['subscriptions'][type] || {}
293
+ [info['url'], type, data, info['compatibility'], info['scopes']]
294
+ end
295
+
296
+ preset = PRESET_DEFINITIONS.merge(
297
+ 'subscription_type' => {
298
+ "type": 'string',
299
+ "enum": meta['types'],
300
+ },
301
+ 'scope' => {
302
+ "type": 'string',
303
+ "enum": meta['scopes'],
304
+ }
305
+ )
306
+
307
+ all_defined = JSON.parse(preset.to_json)
308
+ all_schema = {}
309
+
310
+ all_details = event_api_pages.map do |url, type, response, compatibility, scopes|
311
+ schema, defined, used = to_schema(response, url, preset)
312
+ schema[:description] = "learn more: #{url}"
313
+
314
+ pre = preset.protect_merge!(defined)
315
+
316
+ all_defined.protect_merge!(defined)
317
+
318
+ base = used.uniq.inject({}) do |a, pre_key|
319
+ pre[pre_key] ? a.protect_merge!(pre_key => pre[pre_key]) : a
320
+ end
321
+
322
+ normalized_response = response.inject({}) do |a, (k, v)|
323
+ next a.protect_merge!(k => v) unless v.is_a?(Hash) && v['_type'] == 'enum'
324
+
325
+ a.merge!(v['target'] => v['items'].map { |s| s || 'null' }.join('|'))
326
+ end
327
+
328
+ {
329
+ url: url,
330
+ type: type,
331
+ response: normalized_response,
332
+ defined: base.protect_merge!(defined),
333
+ schema: schema.protect_merge!(example: normalized_response),
334
+ compatibility: compatibility,
335
+ scopes: scopes,
336
+ }
337
+ end
338
+
339
+ all_details.map do |data|
340
+ type = data[:type]
341
+ schema = data[:schema]
342
+ defined = data.delete(:defined)
343
+
344
+ all_schema[type] = schema
345
+
346
+ schema_data = {
347
+ "$schema": 'http://json-schema.org/draft-07/schema',
348
+ 'definitions' => defined.protect_merge!(type => schema),
349
+ }
350
+
351
+ data[:schema] = schema_data
352
+
353
+ File.write(SCHEMAS_DIR.join("#{type}.json").to_s, JSON.pretty_generate(schema_data))
354
+ File.write(DETAILS_DIR.join("#{type}.json").to_s, JSON.pretty_generate(data))
355
+ end
356
+
357
+ File.write(BASE_DIR.join('schema.json').to_s, JSON.pretty_generate({
358
+ "$schema": 'http://json-schema.org/draft-07/schema',
359
+ 'definitions' => all_defined.protect_merge!(all_schema).key_ordered,
360
+ }))
361
+ File.write(BASE_DIR.join('summary.json').to_s, JSON.pretty_generate(all_details.sort_by { |a| a[:type] }))
362
+ end
363
+
364
+ write_event_api_summary
@@ -21,13 +21,6 @@
21
21
  },
22
22
  "user_count": {
23
23
  "type": "string"
24
- },
25
- "emoji_changed_subtype": {
26
- "type": "string",
27
- "enum": [
28
- "add",
29
- "remove"
30
- ]
31
24
  }
32
25
  }
33
26
  }