slack_resources 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (254) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +66 -1
  3. data/.rubocop.yml +10 -2
  4. data/Gemfile +0 -1
  5. data/Gemfile.lock +7 -7
  6. data/lib/generate_event_api_resources.rb +8 -0
  7. data/lib/slack_resources.rb +9 -1
  8. data/lib/slack_resources/generator/event_api/examples_preparation.rb +71 -0
  9. data/lib/{event_api → slack_resources/generator/event_api}/fetch.rb +0 -0
  10. data/lib/slack_resources/generator/event_api/strong_hash.rb +25 -0
  11. data/lib/slack_resources/generator/event_api/to_schema.rb +200 -0
  12. data/lib/slack_resources/generator/event_api/type_detection.rb +272 -0
  13. data/lib/slack_resources/generator/event_api/write.rb +123 -0
  14. data/lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.add.json +7 -0
  15. data/lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.remove.json +6 -0
  16. data/lib/slack_resources/{resources → raw_data}/event_api/_added_examples/event_callback.json +0 -0
  17. data/lib/slack_resources/raw_data/event_api/examples/app_mention.json +8 -0
  18. data/lib/slack_resources/raw_data/event_api/examples/app_rate_limited.json +7 -0
  19. data/lib/slack_resources/raw_data/event_api/examples/app_uninstalled.json +11 -0
  20. data/lib/slack_resources/raw_data/event_api/examples/channel_archive.json +5 -0
  21. data/lib/slack_resources/raw_data/event_api/examples/channel_created.json +9 -0
  22. data/lib/slack_resources/raw_data/event_api/examples/channel_deleted.json +4 -0
  23. data/lib/slack_resources/raw_data/event_api/examples/channel_history_changed.json +6 -0
  24. data/lib/slack_resources/raw_data/event_api/examples/channel_left.json +4 -0
  25. data/lib/slack_resources/raw_data/event_api/examples/channel_rename.json +8 -0
  26. data/lib/slack_resources/raw_data/event_api/examples/channel_unarchive.json +5 -0
  27. data/lib/slack_resources/raw_data/event_api/examples/dnd_updated.json +11 -0
  28. data/lib/slack_resources/raw_data/event_api/examples/dnd_updated_user.json +9 -0
  29. data/lib/slack_resources/raw_data/event_api/examples/email_domain_changed.json +5 -0
  30. data/lib/slack_resources/raw_data/event_api/examples/emoji_changed.json +8 -0
  31. data/lib/slack_resources/raw_data/event_api/examples/file_change.json +7 -0
  32. data/lib/slack_resources/raw_data/event_api/examples/file_comment_added.json +9 -0
  33. data/lib/slack_resources/raw_data/event_api/examples/file_comment_deleted.json +8 -0
  34. data/lib/slack_resources/raw_data/event_api/examples/file_comment_edited.json +9 -0
  35. data/lib/slack_resources/raw_data/event_api/examples/file_created.json +7 -0
  36. data/lib/slack_resources/raw_data/event_api/examples/file_deleted.json +5 -0
  37. data/lib/slack_resources/raw_data/event_api/examples/file_public.json +7 -0
  38. data/lib/slack_resources/raw_data/event_api/examples/file_shared.json +7 -0
  39. data/lib/slack_resources/raw_data/event_api/examples/file_unshared.json +7 -0
  40. data/lib/slack_resources/raw_data/event_api/examples/grid_migration_finished.json +12 -0
  41. data/lib/slack_resources/raw_data/event_api/examples/grid_migration_started.json +12 -0
  42. data/lib/slack_resources/raw_data/event_api/examples/group_archive.json +4 -0
  43. data/lib/slack_resources/raw_data/event_api/examples/group_close.json +5 -0
  44. data/lib/slack_resources/raw_data/event_api/examples/group_deleted.json +4 -0
  45. data/lib/slack_resources/raw_data/event_api/examples/group_history_changed.json +6 -0
  46. data/lib/slack_resources/raw_data/event_api/examples/group_left.json +4 -0
  47. data/lib/slack_resources/raw_data/event_api/examples/group_open.json +5 -0
  48. data/lib/slack_resources/raw_data/event_api/examples/group_rename.json +8 -0
  49. data/lib/slack_resources/raw_data/event_api/examples/group_unarchive.json +4 -0
  50. data/lib/slack_resources/raw_data/event_api/examples/im_close.json +5 -0
  51. data/lib/slack_resources/raw_data/event_api/examples/im_created.json +6 -0
  52. data/lib/slack_resources/raw_data/event_api/examples/im_history_changed.json +6 -0
  53. data/lib/slack_resources/raw_data/event_api/examples/im_open.json +5 -0
  54. data/lib/slack_resources/raw_data/event_api/examples/link_shared.json +33 -0
  55. data/lib/slack_resources/raw_data/event_api/examples/member_joined_channel.json +8 -0
  56. data/lib/slack_resources/raw_data/event_api/examples/member_left_channel.json +7 -0
  57. data/lib/slack_resources/raw_data/event_api/examples/message.app_home.json +20 -0
  58. data/lib/slack_resources/raw_data/event_api/examples/message.channels.json +20 -0
  59. data/lib/slack_resources/raw_data/event_api/examples/message.groups.json +20 -0
  60. data/lib/slack_resources/raw_data/event_api/examples/message.im.json +20 -0
  61. data/lib/slack_resources/raw_data/event_api/examples/message.json +7 -0
  62. data/lib/slack_resources/raw_data/event_api/examples/message.mpim.json +20 -0
  63. data/lib/slack_resources/raw_data/event_api/examples/pin_added.json +8 -0
  64. data/lib/slack_resources/raw_data/event_api/examples/pin_removed.json +9 -0
  65. data/lib/slack_resources/raw_data/event_api/examples/reaction_added.json +12 -0
  66. data/lib/slack_resources/raw_data/event_api/examples/reaction_removed.json +12 -0
  67. data/lib/slack_resources/raw_data/event_api/examples/resources_added.json +31 -0
  68. data/lib/slack_resources/raw_data/event_api/examples/resources_removed.json +31 -0
  69. data/lib/slack_resources/raw_data/event_api/examples/scope_denied.json +20 -0
  70. data/lib/slack_resources/raw_data/event_api/examples/scope_granted.json +20 -0
  71. data/lib/slack_resources/raw_data/event_api/examples/star_added.json +7 -0
  72. data/lib/slack_resources/raw_data/event_api/examples/star_removed.json +7 -0
  73. data/lib/slack_resources/raw_data/event_api/examples/subteam_created.json +28 -0
  74. data/lib/slack_resources/raw_data/event_api/examples/subteam_members_changed.json +17 -0
  75. data/lib/slack_resources/raw_data/event_api/examples/subteam_self_added.json +4 -0
  76. data/lib/slack_resources/raw_data/event_api/examples/subteam_self_removed.json +4 -0
  77. data/lib/slack_resources/raw_data/event_api/examples/subteam_updated.json +34 -0
  78. data/lib/slack_resources/raw_data/event_api/examples/team_domain_change.json +5 -0
  79. data/lib/slack_resources/raw_data/event_api/examples/team_join.json +5 -0
  80. data/lib/slack_resources/raw_data/event_api/examples/team_rename.json +4 -0
  81. data/lib/slack_resources/raw_data/event_api/examples/tokens_revoked.json +19 -0
  82. data/lib/slack_resources/raw_data/event_api/examples/url_verification.json +5 -0
  83. data/lib/slack_resources/raw_data/event_api/examples/user_change.json +5 -0
  84. data/lib/slack_resources/raw_data/event_api/examples/user_resource_denied.json +20 -0
  85. data/lib/slack_resources/raw_data/event_api/examples/user_resource_granted.json +20 -0
  86. data/lib/slack_resources/raw_data/event_api/examples/user_resource_removed.json +16 -0
  87. data/lib/slack_resources/{resources → raw_data}/event_api/meta.json +0 -72
  88. data/lib/{schema.json → slack_resources/raw_data/event_api/preset_schemas.json} +7 -0
  89. data/lib/slack_resources/resources/event_api.rb +38 -0
  90. data/lib/slack_resources/resources/event_api/details/app_mention.json +67 -46
  91. data/lib/slack_resources/resources/event_api/details/app_rate_limited.json +59 -41
  92. data/lib/slack_resources/resources/event_api/details/app_uninstalled.json +22 -16
  93. data/lib/slack_resources/resources/event_api/details/channel_archive.json +42 -30
  94. data/lib/slack_resources/resources/event_api/details/channel_created.json +63 -54
  95. data/lib/slack_resources/resources/event_api/details/channel_deleted.json +32 -23
  96. data/lib/slack_resources/resources/event_api/details/channel_history_changed.json +48 -33
  97. data/lib/slack_resources/resources/event_api/details/channel_left.json +32 -23
  98. data/lib/slack_resources/resources/event_api/details/channel_rename.json +58 -49
  99. data/lib/slack_resources/resources/event_api/details/channel_unarchive.json +42 -30
  100. data/lib/slack_resources/resources/event_api/details/dnd_updated.json +66 -54
  101. data/lib/slack_resources/resources/event_api/details/dnd_updated_user.json +62 -50
  102. data/lib/slack_resources/resources/event_api/details/email_domain_changed.json +39 -27
  103. data/lib/slack_resources/resources/event_api/details/emoji_changed.add.json +78 -0
  104. data/lib/slack_resources/resources/event_api/details/emoji_changed.json +85 -44
  105. data/lib/slack_resources/resources/event_api/details/emoji_changed.remove.json +77 -0
  106. data/lib/slack_resources/resources/event_api/details/event_callback.json +102 -72
  107. data/lib/slack_resources/resources/event_api/details/file_change.json +49 -37
  108. data/lib/slack_resources/resources/event_api/details/file_comment_added.json +61 -46
  109. data/lib/slack_resources/resources/event_api/details/file_comment_deleted.json +59 -44
  110. data/lib/slack_resources/resources/event_api/details/file_comment_edited.json +61 -46
  111. data/lib/slack_resources/resources/event_api/details/file_created.json +49 -37
  112. data/lib/slack_resources/resources/event_api/details/file_deleted.json +41 -29
  113. data/lib/slack_resources/resources/event_api/details/file_public.json +49 -37
  114. data/lib/slack_resources/resources/event_api/details/file_shared.json +49 -37
  115. data/lib/slack_resources/resources/event_api/details/file_unshared.json +49 -37
  116. data/lib/slack_resources/resources/event_api/details/grid_migration_finished.json +31 -22
  117. data/lib/slack_resources/resources/event_api/details/grid_migration_started.json +31 -22
  118. data/lib/slack_resources/resources/event_api/details/group_archive.json +32 -23
  119. data/lib/slack_resources/resources/event_api/details/group_close.json +42 -30
  120. data/lib/slack_resources/resources/event_api/details/group_deleted.json +32 -23
  121. data/lib/slack_resources/resources/event_api/details/group_history_changed.json +48 -33
  122. data/lib/slack_resources/resources/event_api/details/group_left.json +32 -23
  123. data/lib/slack_resources/resources/event_api/details/group_open.json +42 -30
  124. data/lib/slack_resources/resources/event_api/details/group_rename.json +58 -49
  125. data/lib/slack_resources/resources/event_api/details/group_unarchive.json +32 -23
  126. data/lib/slack_resources/resources/event_api/details/im_close.json +42 -30
  127. data/lib/slack_resources/resources/event_api/details/im_created.json +53 -41
  128. data/lib/slack_resources/resources/event_api/details/im_history_changed.json +48 -33
  129. data/lib/slack_resources/resources/event_api/details/im_open.json +42 -30
  130. data/lib/slack_resources/resources/event_api/details/link_shared.json +107 -83
  131. data/lib/slack_resources/resources/event_api/details/member_joined_channel.json +66 -48
  132. data/lib/slack_resources/resources/event_api/details/member_left_channel.json +58 -43
  133. data/lib/slack_resources/resources/event_api/details/message.app_home.json +74 -53
  134. data/lib/slack_resources/resources/event_api/details/message.channels.json +74 -56
  135. data/lib/slack_resources/resources/event_api/details/message.groups.json +74 -56
  136. data/lib/slack_resources/resources/event_api/details/message.im.json +74 -56
  137. data/lib/slack_resources/resources/event_api/details/message.json +106 -60
  138. data/lib/slack_resources/resources/event_api/details/message.mpim.json +74 -56
  139. data/lib/slack_resources/resources/event_api/details/pin_added.json +65 -47
  140. data/lib/slack_resources/resources/event_api/details/pin_removed.json +73 -52
  141. data/lib/slack_resources/resources/event_api/details/reaction_added.json +94 -73
  142. data/lib/slack_resources/resources/event_api/details/reaction_removed.json +94 -73
  143. data/lib/slack_resources/resources/event_api/details/resources_added.json +127 -115
  144. data/lib/slack_resources/resources/event_api/details/resources_removed.json +127 -115
  145. data/lib/slack_resources/resources/event_api/details/scope_denied.json +74 -59
  146. data/lib/slack_resources/resources/event_api/details/scope_granted.json +74 -59
  147. data/lib/slack_resources/resources/event_api/details/star_added.json +56 -41
  148. data/lib/slack_resources/resources/event_api/details/star_removed.json +56 -41
  149. data/lib/slack_resources/resources/event_api/details/subteam_created.json +177 -168
  150. data/lib/slack_resources/resources/event_api/details/subteam_members_changed.json +118 -82
  151. data/lib/slack_resources/resources/event_api/details/subteam_self_added.json +31 -22
  152. data/lib/slack_resources/resources/event_api/details/subteam_self_removed.json +31 -22
  153. data/lib/slack_resources/resources/event_api/details/subteam_updated.json +189 -180
  154. data/lib/slack_resources/resources/event_api/details/team_domain_change.json +38 -26
  155. data/lib/slack_resources/resources/event_api/details/team_join.json +35 -26
  156. data/lib/slack_resources/resources/event_api/details/team_rename.json +32 -23
  157. data/lib/slack_resources/resources/event_api/details/tokens_revoked.json +58 -49
  158. data/lib/slack_resources/resources/event_api/details/url_verification.json +32 -26
  159. data/lib/slack_resources/resources/event_api/details/user_change.json +35 -26
  160. data/lib/slack_resources/resources/event_api/details/user_resource_denied.json +82 -64
  161. data/lib/slack_resources/resources/event_api/details/user_resource_granted.json +82 -64
  162. data/lib/slack_resources/resources/event_api/details/user_resource_removed.json +41 -29
  163. data/lib/slack_resources/resources/event_api/examples/app_mention.json +4 -4
  164. data/lib/slack_resources/resources/event_api/examples/app_rate_limited.json +4 -4
  165. data/lib/slack_resources/resources/event_api/examples/app_uninstalled.json +1 -9
  166. data/lib/slack_resources/resources/event_api/examples/channel_archive.json +1 -1
  167. data/lib/slack_resources/resources/event_api/examples/channel_created.json +2 -2
  168. data/lib/slack_resources/resources/event_api/examples/channel_deleted.json +2 -2
  169. data/lib/slack_resources/resources/event_api/examples/channel_history_changed.json +2 -2
  170. data/lib/slack_resources/resources/event_api/examples/channel_left.json +2 -2
  171. data/lib/slack_resources/resources/event_api/examples/channel_rename.json +2 -2
  172. data/lib/slack_resources/resources/event_api/examples/channel_unarchive.json +1 -1
  173. data/lib/slack_resources/resources/event_api/examples/dnd_updated.json +3 -3
  174. data/lib/slack_resources/resources/event_api/examples/dnd_updated_user.json +3 -3
  175. data/lib/slack_resources/resources/event_api/examples/email_domain_changed.json +2 -2
  176. data/lib/slack_resources/resources/event_api/examples/emoji_changed.add.json +7 -0
  177. data/lib/slack_resources/resources/event_api/examples/emoji_changed.json +4 -5
  178. data/lib/slack_resources/resources/event_api/examples/emoji_changed.remove.json +8 -0
  179. data/lib/slack_resources/resources/event_api/examples/event_callback.json +7 -6
  180. data/lib/slack_resources/resources/event_api/examples/file_change.json +3 -3
  181. data/lib/slack_resources/resources/event_api/examples/file_comment_added.json +3 -3
  182. data/lib/slack_resources/resources/event_api/examples/file_comment_deleted.json +3 -3
  183. data/lib/slack_resources/resources/event_api/examples/file_comment_edited.json +3 -3
  184. data/lib/slack_resources/resources/event_api/examples/file_created.json +3 -3
  185. data/lib/slack_resources/resources/event_api/examples/file_deleted.json +2 -2
  186. data/lib/slack_resources/resources/event_api/examples/file_public.json +3 -3
  187. data/lib/slack_resources/resources/event_api/examples/file_shared.json +3 -3
  188. data/lib/slack_resources/resources/event_api/examples/file_unshared.json +3 -3
  189. data/lib/slack_resources/resources/event_api/examples/grid_migration_finished.json +2 -10
  190. data/lib/slack_resources/resources/event_api/examples/grid_migration_started.json +2 -10
  191. data/lib/slack_resources/resources/event_api/examples/group_archive.json +2 -2
  192. data/lib/slack_resources/resources/event_api/examples/group_close.json +2 -2
  193. data/lib/slack_resources/resources/event_api/examples/group_deleted.json +2 -2
  194. data/lib/slack_resources/resources/event_api/examples/group_history_changed.json +2 -2
  195. data/lib/slack_resources/resources/event_api/examples/group_left.json +2 -2
  196. data/lib/slack_resources/resources/event_api/examples/group_open.json +2 -2
  197. data/lib/slack_resources/resources/event_api/examples/group_rename.json +2 -2
  198. data/lib/slack_resources/resources/event_api/examples/group_unarchive.json +2 -2
  199. data/lib/slack_resources/resources/event_api/examples/im_close.json +2 -2
  200. data/lib/slack_resources/resources/event_api/examples/im_created.json +3 -3
  201. data/lib/slack_resources/resources/event_api/examples/im_history_changed.json +2 -2
  202. data/lib/slack_resources/resources/event_api/examples/im_open.json +2 -2
  203. data/lib/slack_resources/resources/event_api/examples/link_shared.json +18 -30
  204. data/lib/slack_resources/resources/event_api/examples/member_joined_channel.json +3 -3
  205. data/lib/slack_resources/resources/event_api/examples/member_left_channel.json +3 -3
  206. data/lib/slack_resources/resources/event_api/examples/message.app_home.json +7 -18
  207. data/lib/slack_resources/resources/event_api/examples/message.channels.json +7 -18
  208. data/lib/slack_resources/resources/event_api/examples/message.groups.json +7 -18
  209. data/lib/slack_resources/resources/event_api/examples/message.im.json +7 -18
  210. data/lib/slack_resources/resources/event_api/examples/message.json +6 -4
  211. data/lib/slack_resources/resources/event_api/examples/message.mpim.json +7 -18
  212. data/lib/slack_resources/resources/event_api/examples/pin_added.json +3 -3
  213. data/lib/slack_resources/resources/event_api/examples/pin_removed.json +4 -4
  214. data/lib/slack_resources/resources/event_api/examples/reaction_added.json +5 -5
  215. data/lib/slack_resources/resources/event_api/examples/reaction_removed.json +5 -5
  216. data/lib/slack_resources/resources/event_api/examples/resources_added.json +17 -28
  217. data/lib/slack_resources/resources/event_api/examples/resources_removed.json +17 -28
  218. data/lib/slack_resources/resources/event_api/examples/scope_denied.json +6 -17
  219. data/lib/slack_resources/resources/event_api/examples/scope_granted.json +6 -17
  220. data/lib/slack_resources/resources/event_api/examples/star_added.json +3 -3
  221. data/lib/slack_resources/resources/event_api/examples/star_removed.json +3 -3
  222. data/lib/slack_resources/resources/event_api/examples/subteam_created.json +2 -2
  223. data/lib/slack_resources/resources/event_api/examples/subteam_members_changed.json +6 -6
  224. data/lib/slack_resources/resources/event_api/examples/subteam_self_added.json +2 -2
  225. data/lib/slack_resources/resources/event_api/examples/subteam_self_removed.json +2 -2
  226. data/lib/slack_resources/resources/event_api/examples/subteam_updated.json +2 -2
  227. data/lib/slack_resources/resources/event_api/examples/team_domain_change.json +2 -2
  228. data/lib/slack_resources/resources/event_api/examples/team_rename.json +2 -2
  229. data/lib/slack_resources/resources/event_api/examples/tokens_revoked.json +8 -16
  230. data/lib/slack_resources/resources/event_api/examples/url_verification.json +1 -1
  231. data/lib/slack_resources/resources/event_api/examples/user_resource_denied.json +6 -17
  232. data/lib/slack_resources/resources/event_api/examples/user_resource_granted.json +6 -17
  233. data/lib/slack_resources/resources/event_api/examples/user_resource_removed.json +3 -14
  234. data/lib/slack_resources/resources/event_api/schema.json +257 -105
  235. data/lib/slack_resources/resources/event_api/schemas/emoji_changed.add.json +42 -0
  236. data/lib/slack_resources/resources/event_api/schemas/emoji_changed.json +27 -9
  237. data/lib/slack_resources/resources/event_api/schemas/emoji_changed.remove.json +40 -0
  238. data/lib/slack_resources/resources/event_api/schemas/member_joined_channel.json +1 -4
  239. data/lib/slack_resources/resources/event_api/schemas/member_left_channel.json +1 -4
  240. data/lib/slack_resources/resources/event_api/schemas/message.app_home.json +1 -4
  241. data/lib/slack_resources/resources/event_api/schemas/message.channels.json +1 -7
  242. data/lib/slack_resources/resources/event_api/schemas/message.groups.json +1 -7
  243. data/lib/slack_resources/resources/event_api/schemas/message.im.json +1 -7
  244. data/lib/slack_resources/resources/event_api/schemas/message.json +39 -17
  245. data/lib/slack_resources/resources/event_api/schemas/message.mpim.json +1 -7
  246. data/lib/slack_resources/resources/event_api/schemas/resources_added.json +15 -15
  247. data/lib/slack_resources/resources/event_api/schemas/resources_removed.json +15 -15
  248. data/lib/slack_resources/resources/event_api/schemas/team_rename.json +2 -2
  249. data/lib/slack_resources/resources/event_api/schemas/url_verification.json +0 -6
  250. data/lib/slack_resources/resources/event_api/summary.json +4887 -3400
  251. data/slack_resources.gemspec +4 -2
  252. metadata +91 -8
  253. data/lib/event_api/write.rb +0 -364
  254. data/lib/slack_resources/version.rb +0 -3
@@ -1,10 +1,12 @@
1
1
  lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'slack_resources/version'
3
+
4
+ HAS_VERSION = File.exist?('./lib/slack_resources/version.rb')
5
+ require 'slack_resources/version' if HAS_VERSION
4
6
 
5
7
  Gem::Specification.new do |spec|
6
8
  spec.name = 'slack_resources'
7
- spec.version = SlackResources::VERSION
9
+ spec.version = HAS_VERSION ? SlackResources::VERSION : '0.0.0'
8
10
  spec.authors = ['mmmpa']
9
11
  spec.email = ['mmmpa.mmmpa@gmail.com']
10
12
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - mmmpa
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-19 00:00:00.000000000 Z
11
+ date: 2018-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -137,11 +137,90 @@ files:
137
137
  - Gemfile.lock
138
138
  - README.md
139
139
  - Rakefile
140
- - lib/event_api/fetch.rb
141
- - lib/event_api/write.rb
142
- - lib/schema.json
140
+ - lib/generate_event_api_resources.rb
143
141
  - lib/slack_resources.rb
144
- - lib/slack_resources/resources/event_api/_added_examples/event_callback.json
142
+ - lib/slack_resources/generator/event_api/examples_preparation.rb
143
+ - lib/slack_resources/generator/event_api/fetch.rb
144
+ - lib/slack_resources/generator/event_api/strong_hash.rb
145
+ - lib/slack_resources/generator/event_api/to_schema.rb
146
+ - lib/slack_resources/generator/event_api/type_detection.rb
147
+ - lib/slack_resources/generator/event_api/write.rb
148
+ - lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.add.json
149
+ - lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.remove.json
150
+ - lib/slack_resources/raw_data/event_api/_added_examples/event_callback.json
151
+ - lib/slack_resources/raw_data/event_api/examples/app_mention.json
152
+ - lib/slack_resources/raw_data/event_api/examples/app_rate_limited.json
153
+ - lib/slack_resources/raw_data/event_api/examples/app_uninstalled.json
154
+ - lib/slack_resources/raw_data/event_api/examples/channel_archive.json
155
+ - lib/slack_resources/raw_data/event_api/examples/channel_created.json
156
+ - lib/slack_resources/raw_data/event_api/examples/channel_deleted.json
157
+ - lib/slack_resources/raw_data/event_api/examples/channel_history_changed.json
158
+ - lib/slack_resources/raw_data/event_api/examples/channel_left.json
159
+ - lib/slack_resources/raw_data/event_api/examples/channel_rename.json
160
+ - lib/slack_resources/raw_data/event_api/examples/channel_unarchive.json
161
+ - lib/slack_resources/raw_data/event_api/examples/dnd_updated.json
162
+ - lib/slack_resources/raw_data/event_api/examples/dnd_updated_user.json
163
+ - lib/slack_resources/raw_data/event_api/examples/email_domain_changed.json
164
+ - lib/slack_resources/raw_data/event_api/examples/emoji_changed.json
165
+ - lib/slack_resources/raw_data/event_api/examples/file_change.json
166
+ - lib/slack_resources/raw_data/event_api/examples/file_comment_added.json
167
+ - lib/slack_resources/raw_data/event_api/examples/file_comment_deleted.json
168
+ - lib/slack_resources/raw_data/event_api/examples/file_comment_edited.json
169
+ - lib/slack_resources/raw_data/event_api/examples/file_created.json
170
+ - lib/slack_resources/raw_data/event_api/examples/file_deleted.json
171
+ - lib/slack_resources/raw_data/event_api/examples/file_public.json
172
+ - lib/slack_resources/raw_data/event_api/examples/file_shared.json
173
+ - lib/slack_resources/raw_data/event_api/examples/file_unshared.json
174
+ - lib/slack_resources/raw_data/event_api/examples/grid_migration_finished.json
175
+ - lib/slack_resources/raw_data/event_api/examples/grid_migration_started.json
176
+ - lib/slack_resources/raw_data/event_api/examples/group_archive.json
177
+ - lib/slack_resources/raw_data/event_api/examples/group_close.json
178
+ - lib/slack_resources/raw_data/event_api/examples/group_deleted.json
179
+ - lib/slack_resources/raw_data/event_api/examples/group_history_changed.json
180
+ - lib/slack_resources/raw_data/event_api/examples/group_left.json
181
+ - lib/slack_resources/raw_data/event_api/examples/group_open.json
182
+ - lib/slack_resources/raw_data/event_api/examples/group_rename.json
183
+ - lib/slack_resources/raw_data/event_api/examples/group_unarchive.json
184
+ - lib/slack_resources/raw_data/event_api/examples/im_close.json
185
+ - lib/slack_resources/raw_data/event_api/examples/im_created.json
186
+ - lib/slack_resources/raw_data/event_api/examples/im_history_changed.json
187
+ - lib/slack_resources/raw_data/event_api/examples/im_open.json
188
+ - lib/slack_resources/raw_data/event_api/examples/link_shared.json
189
+ - lib/slack_resources/raw_data/event_api/examples/member_joined_channel.json
190
+ - lib/slack_resources/raw_data/event_api/examples/member_left_channel.json
191
+ - lib/slack_resources/raw_data/event_api/examples/message.app_home.json
192
+ - lib/slack_resources/raw_data/event_api/examples/message.channels.json
193
+ - lib/slack_resources/raw_data/event_api/examples/message.groups.json
194
+ - lib/slack_resources/raw_data/event_api/examples/message.im.json
195
+ - lib/slack_resources/raw_data/event_api/examples/message.json
196
+ - lib/slack_resources/raw_data/event_api/examples/message.mpim.json
197
+ - lib/slack_resources/raw_data/event_api/examples/pin_added.json
198
+ - lib/slack_resources/raw_data/event_api/examples/pin_removed.json
199
+ - lib/slack_resources/raw_data/event_api/examples/reaction_added.json
200
+ - lib/slack_resources/raw_data/event_api/examples/reaction_removed.json
201
+ - lib/slack_resources/raw_data/event_api/examples/resources_added.json
202
+ - lib/slack_resources/raw_data/event_api/examples/resources_removed.json
203
+ - lib/slack_resources/raw_data/event_api/examples/scope_denied.json
204
+ - lib/slack_resources/raw_data/event_api/examples/scope_granted.json
205
+ - lib/slack_resources/raw_data/event_api/examples/star_added.json
206
+ - lib/slack_resources/raw_data/event_api/examples/star_removed.json
207
+ - lib/slack_resources/raw_data/event_api/examples/subteam_created.json
208
+ - lib/slack_resources/raw_data/event_api/examples/subteam_members_changed.json
209
+ - lib/slack_resources/raw_data/event_api/examples/subteam_self_added.json
210
+ - lib/slack_resources/raw_data/event_api/examples/subteam_self_removed.json
211
+ - lib/slack_resources/raw_data/event_api/examples/subteam_updated.json
212
+ - lib/slack_resources/raw_data/event_api/examples/team_domain_change.json
213
+ - lib/slack_resources/raw_data/event_api/examples/team_join.json
214
+ - lib/slack_resources/raw_data/event_api/examples/team_rename.json
215
+ - lib/slack_resources/raw_data/event_api/examples/tokens_revoked.json
216
+ - lib/slack_resources/raw_data/event_api/examples/url_verification.json
217
+ - lib/slack_resources/raw_data/event_api/examples/user_change.json
218
+ - lib/slack_resources/raw_data/event_api/examples/user_resource_denied.json
219
+ - lib/slack_resources/raw_data/event_api/examples/user_resource_granted.json
220
+ - lib/slack_resources/raw_data/event_api/examples/user_resource_removed.json
221
+ - lib/slack_resources/raw_data/event_api/meta.json
222
+ - lib/slack_resources/raw_data/event_api/preset_schemas.json
223
+ - lib/slack_resources/resources/event_api.rb
145
224
  - lib/slack_resources/resources/event_api/details/app_mention.json
146
225
  - lib/slack_resources/resources/event_api/details/app_rate_limited.json
147
226
  - lib/slack_resources/resources/event_api/details/app_uninstalled.json
@@ -155,7 +234,9 @@ files:
155
234
  - lib/slack_resources/resources/event_api/details/dnd_updated.json
156
235
  - lib/slack_resources/resources/event_api/details/dnd_updated_user.json
157
236
  - lib/slack_resources/resources/event_api/details/email_domain_changed.json
237
+ - lib/slack_resources/resources/event_api/details/emoji_changed.add.json
158
238
  - lib/slack_resources/resources/event_api/details/emoji_changed.json
239
+ - lib/slack_resources/resources/event_api/details/emoji_changed.remove.json
159
240
  - lib/slack_resources/resources/event_api/details/event_callback.json
160
241
  - lib/slack_resources/resources/event_api/details/file_change.json
161
242
  - lib/slack_resources/resources/event_api/details/file_comment_added.json
@@ -226,7 +307,9 @@ files:
226
307
  - lib/slack_resources/resources/event_api/examples/dnd_updated.json
227
308
  - lib/slack_resources/resources/event_api/examples/dnd_updated_user.json
228
309
  - lib/slack_resources/resources/event_api/examples/email_domain_changed.json
310
+ - lib/slack_resources/resources/event_api/examples/emoji_changed.add.json
229
311
  - lib/slack_resources/resources/event_api/examples/emoji_changed.json
312
+ - lib/slack_resources/resources/event_api/examples/emoji_changed.remove.json
230
313
  - lib/slack_resources/resources/event_api/examples/event_callback.json
231
314
  - lib/slack_resources/resources/event_api/examples/file_change.json
232
315
  - lib/slack_resources/resources/event_api/examples/file_comment_added.json
@@ -284,7 +367,6 @@ files:
284
367
  - lib/slack_resources/resources/event_api/examples/user_resource_denied.json
285
368
  - lib/slack_resources/resources/event_api/examples/user_resource_granted.json
286
369
  - lib/slack_resources/resources/event_api/examples/user_resource_removed.json
287
- - lib/slack_resources/resources/event_api/meta.json
288
370
  - lib/slack_resources/resources/event_api/schema.json
289
371
  - lib/slack_resources/resources/event_api/schemas/app_mention.json
290
372
  - lib/slack_resources/resources/event_api/schemas/app_rate_limited.json
@@ -299,7 +381,9 @@ files:
299
381
  - lib/slack_resources/resources/event_api/schemas/dnd_updated.json
300
382
  - lib/slack_resources/resources/event_api/schemas/dnd_updated_user.json
301
383
  - lib/slack_resources/resources/event_api/schemas/email_domain_changed.json
384
+ - lib/slack_resources/resources/event_api/schemas/emoji_changed.add.json
302
385
  - lib/slack_resources/resources/event_api/schemas/emoji_changed.json
386
+ - lib/slack_resources/resources/event_api/schemas/emoji_changed.remove.json
303
387
  - lib/slack_resources/resources/event_api/schemas/event_callback.json
304
388
  - lib/slack_resources/resources/event_api/schemas/file_change.json
305
389
  - lib/slack_resources/resources/event_api/schemas/file_comment_added.json
@@ -358,7 +442,6 @@ files:
358
442
  - lib/slack_resources/resources/event_api/schemas/user_resource_granted.json
359
443
  - lib/slack_resources/resources/event_api/schemas/user_resource_removed.json
360
444
  - lib/slack_resources/resources/event_api/summary.json
361
- - lib/slack_resources/version.rb
362
445
  - slack_resources.gemspec
363
446
  homepage: https://github.com/mmmpa/slack_resources
364
447
  licenses:
@@ -1,364 +0,0 @@
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