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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +1 -66
- data/.circleci/preparation.rb +11 -0
- data/.rubocop.yml +2 -10
- data/Gemfile +1 -0
- data/Gemfile.lock +8 -8
- data/lib/{slack_resources/generator/event_api → event_api}/fetch.rb +0 -0
- data/lib/event_api/write.rb +364 -0
- data/lib/{slack_resources/raw_data/event_api/preset_schemas.json → schema.json} +0 -7
- data/lib/slack_resources/{raw_data → resources}/event_api/_added_examples/event_callback.json +0 -0
- data/lib/slack_resources/resources/event_api/details/app_mention.json +46 -67
- data/lib/slack_resources/resources/event_api/details/app_rate_limited.json +41 -59
- data/lib/slack_resources/resources/event_api/details/app_uninstalled.json +16 -22
- data/lib/slack_resources/resources/event_api/details/channel_archive.json +30 -42
- data/lib/slack_resources/resources/event_api/details/channel_created.json +54 -63
- data/lib/slack_resources/resources/event_api/details/channel_deleted.json +23 -32
- data/lib/slack_resources/resources/event_api/details/channel_history_changed.json +33 -48
- data/lib/slack_resources/resources/event_api/details/channel_left.json +23 -32
- data/lib/slack_resources/resources/event_api/details/channel_rename.json +49 -58
- data/lib/slack_resources/resources/event_api/details/channel_unarchive.json +30 -42
- data/lib/slack_resources/resources/event_api/details/dnd_updated.json +54 -66
- data/lib/slack_resources/resources/event_api/details/dnd_updated_user.json +50 -62
- data/lib/slack_resources/resources/event_api/details/email_domain_changed.json +27 -39
- data/lib/slack_resources/resources/event_api/details/emoji_changed.json +44 -85
- data/lib/slack_resources/resources/event_api/details/event_callback.json +72 -102
- data/lib/slack_resources/resources/event_api/details/file_change.json +37 -49
- data/lib/slack_resources/resources/event_api/details/file_comment_added.json +46 -61
- data/lib/slack_resources/resources/event_api/details/file_comment_deleted.json +44 -59
- data/lib/slack_resources/resources/event_api/details/file_comment_edited.json +46 -61
- data/lib/slack_resources/resources/event_api/details/file_created.json +37 -49
- data/lib/slack_resources/resources/event_api/details/file_deleted.json +29 -41
- data/lib/slack_resources/resources/event_api/details/file_public.json +37 -49
- data/lib/slack_resources/resources/event_api/details/file_shared.json +37 -49
- data/lib/slack_resources/resources/event_api/details/file_unshared.json +37 -49
- data/lib/slack_resources/resources/event_api/details/grid_migration_finished.json +22 -31
- data/lib/slack_resources/resources/event_api/details/grid_migration_started.json +22 -31
- data/lib/slack_resources/resources/event_api/details/group_archive.json +23 -32
- data/lib/slack_resources/resources/event_api/details/group_close.json +30 -42
- data/lib/slack_resources/resources/event_api/details/group_deleted.json +23 -32
- data/lib/slack_resources/resources/event_api/details/group_history_changed.json +33 -48
- data/lib/slack_resources/resources/event_api/details/group_left.json +23 -32
- data/lib/slack_resources/resources/event_api/details/group_open.json +30 -42
- data/lib/slack_resources/resources/event_api/details/group_rename.json +49 -58
- data/lib/slack_resources/resources/event_api/details/group_unarchive.json +23 -32
- data/lib/slack_resources/resources/event_api/details/im_close.json +30 -42
- data/lib/slack_resources/resources/event_api/details/im_created.json +41 -53
- data/lib/slack_resources/resources/event_api/details/im_history_changed.json +33 -48
- data/lib/slack_resources/resources/event_api/details/im_open.json +30 -42
- data/lib/slack_resources/resources/event_api/details/link_shared.json +83 -107
- data/lib/slack_resources/resources/event_api/details/member_joined_channel.json +48 -66
- data/lib/slack_resources/resources/event_api/details/member_left_channel.json +43 -58
- data/lib/slack_resources/resources/event_api/details/message.app_home.json +53 -74
- data/lib/slack_resources/resources/event_api/details/message.channels.json +56 -74
- data/lib/slack_resources/resources/event_api/details/message.groups.json +56 -74
- data/lib/slack_resources/resources/event_api/details/message.im.json +56 -74
- data/lib/slack_resources/resources/event_api/details/message.json +60 -106
- data/lib/slack_resources/resources/event_api/details/message.mpim.json +56 -74
- data/lib/slack_resources/resources/event_api/details/pin_added.json +47 -65
- data/lib/slack_resources/resources/event_api/details/pin_removed.json +52 -73
- data/lib/slack_resources/resources/event_api/details/reaction_added.json +73 -94
- data/lib/slack_resources/resources/event_api/details/reaction_removed.json +73 -94
- data/lib/slack_resources/resources/event_api/details/resources_added.json +115 -127
- data/lib/slack_resources/resources/event_api/details/resources_removed.json +115 -127
- data/lib/slack_resources/resources/event_api/details/scope_denied.json +59 -74
- data/lib/slack_resources/resources/event_api/details/scope_granted.json +59 -74
- data/lib/slack_resources/resources/event_api/details/star_added.json +41 -56
- data/lib/slack_resources/resources/event_api/details/star_removed.json +41 -56
- data/lib/slack_resources/resources/event_api/details/subteam_created.json +168 -177
- data/lib/slack_resources/resources/event_api/details/subteam_members_changed.json +82 -118
- data/lib/slack_resources/resources/event_api/details/subteam_self_added.json +22 -31
- data/lib/slack_resources/resources/event_api/details/subteam_self_removed.json +22 -31
- data/lib/slack_resources/resources/event_api/details/subteam_updated.json +180 -189
- data/lib/slack_resources/resources/event_api/details/team_domain_change.json +26 -38
- data/lib/slack_resources/resources/event_api/details/team_join.json +26 -35
- data/lib/slack_resources/resources/event_api/details/team_rename.json +23 -32
- data/lib/slack_resources/resources/event_api/details/tokens_revoked.json +49 -58
- data/lib/slack_resources/resources/event_api/details/url_verification.json +26 -32
- data/lib/slack_resources/resources/event_api/details/user_change.json +26 -35
- data/lib/slack_resources/resources/event_api/details/user_resource_denied.json +64 -82
- data/lib/slack_resources/resources/event_api/details/user_resource_granted.json +64 -82
- data/lib/slack_resources/resources/event_api/details/user_resource_removed.json +29 -41
- data/lib/slack_resources/resources/event_api/examples/app_mention.json +4 -4
- data/lib/slack_resources/resources/event_api/examples/app_rate_limited.json +4 -4
- data/lib/slack_resources/resources/event_api/examples/app_uninstalled.json +9 -1
- data/lib/slack_resources/resources/event_api/examples/channel_archive.json +1 -1
- data/lib/slack_resources/resources/event_api/examples/channel_created.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/channel_deleted.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/channel_history_changed.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/channel_left.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/channel_rename.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/channel_unarchive.json +1 -1
- data/lib/slack_resources/resources/event_api/examples/dnd_updated.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/dnd_updated_user.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/email_domain_changed.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/emoji_changed.json +5 -4
- data/lib/slack_resources/resources/event_api/examples/event_callback.json +6 -7
- data/lib/slack_resources/resources/event_api/examples/file_change.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/file_comment_added.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/file_comment_deleted.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/file_comment_edited.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/file_created.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/file_deleted.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/file_public.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/file_shared.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/file_unshared.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/grid_migration_finished.json +10 -2
- data/lib/slack_resources/resources/event_api/examples/grid_migration_started.json +10 -2
- data/lib/slack_resources/resources/event_api/examples/group_archive.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/group_close.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/group_deleted.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/group_history_changed.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/group_left.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/group_open.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/group_rename.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/group_unarchive.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/im_close.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/im_created.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/im_history_changed.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/im_open.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/link_shared.json +30 -18
- data/lib/slack_resources/resources/event_api/examples/member_joined_channel.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/member_left_channel.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/message.app_home.json +18 -7
- data/lib/slack_resources/resources/event_api/examples/message.channels.json +18 -7
- data/lib/slack_resources/resources/event_api/examples/message.groups.json +18 -7
- data/lib/slack_resources/resources/event_api/examples/message.im.json +18 -7
- data/lib/slack_resources/resources/event_api/examples/message.json +4 -6
- data/lib/slack_resources/resources/event_api/examples/message.mpim.json +18 -7
- data/lib/slack_resources/resources/event_api/examples/pin_added.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/pin_removed.json +4 -4
- data/lib/slack_resources/resources/event_api/examples/reaction_added.json +5 -5
- data/lib/slack_resources/resources/event_api/examples/reaction_removed.json +5 -5
- data/lib/slack_resources/resources/event_api/examples/resources_added.json +28 -17
- data/lib/slack_resources/resources/event_api/examples/resources_removed.json +28 -17
- data/lib/slack_resources/resources/event_api/examples/scope_denied.json +17 -6
- data/lib/slack_resources/resources/event_api/examples/scope_granted.json +17 -6
- data/lib/slack_resources/resources/event_api/examples/star_added.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/star_removed.json +3 -3
- data/lib/slack_resources/resources/event_api/examples/subteam_created.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/subteam_members_changed.json +6 -6
- data/lib/slack_resources/resources/event_api/examples/subteam_self_added.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/subteam_self_removed.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/subteam_updated.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/team_domain_change.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/team_rename.json +2 -2
- data/lib/slack_resources/resources/event_api/examples/tokens_revoked.json +16 -8
- data/lib/slack_resources/resources/event_api/examples/url_verification.json +1 -1
- data/lib/slack_resources/resources/event_api/examples/user_resource_denied.json +17 -6
- data/lib/slack_resources/resources/event_api/examples/user_resource_granted.json +17 -6
- data/lib/slack_resources/resources/event_api/examples/user_resource_removed.json +14 -3
- data/lib/slack_resources/{raw_data → resources}/event_api/meta.json +72 -0
- data/lib/slack_resources/resources/event_api/schema.json +105 -257
- data/lib/slack_resources/resources/event_api/schemas/emoji_changed.json +9 -27
- data/lib/slack_resources/resources/event_api/schemas/member_joined_channel.json +4 -1
- data/lib/slack_resources/resources/event_api/schemas/member_left_channel.json +4 -1
- data/lib/slack_resources/resources/event_api/schemas/message.app_home.json +4 -1
- data/lib/slack_resources/resources/event_api/schemas/message.channels.json +7 -1
- data/lib/slack_resources/resources/event_api/schemas/message.groups.json +7 -1
- data/lib/slack_resources/resources/event_api/schemas/message.im.json +7 -1
- data/lib/slack_resources/resources/event_api/schemas/message.json +17 -39
- data/lib/slack_resources/resources/event_api/schemas/message.mpim.json +7 -1
- data/lib/slack_resources/resources/event_api/schemas/resources_added.json +15 -15
- data/lib/slack_resources/resources/event_api/schemas/resources_removed.json +15 -15
- data/lib/slack_resources/resources/event_api/schemas/team_rename.json +2 -2
- data/lib/slack_resources/resources/event_api/schemas/url_verification.json +6 -0
- data/lib/slack_resources/resources/event_api/summary.json +3397 -4884
- data/lib/slack_resources/version.rb +3 -0
- data/lib/slack_resources.rb +1 -9
- data/slack_resources.gemspec +2 -4
- metadata +10 -93
- data/.circleci/gem_deployment.rb +0 -53
- data/lib/generate_event_api_resources.rb +0 -8
- data/lib/slack_resources/generator/event_api/examples_preparation.rb +0 -71
- data/lib/slack_resources/generator/event_api/strong_hash.rb +0 -25
- data/lib/slack_resources/generator/event_api/to_schema.rb +0 -200
- data/lib/slack_resources/generator/event_api/type_detection.rb +0 -272
- data/lib/slack_resources/generator/event_api/write.rb +0 -123
- data/lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.add.json +0 -7
- data/lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.remove.json +0 -6
- data/lib/slack_resources/raw_data/event_api/examples/app_mention.json +0 -8
- data/lib/slack_resources/raw_data/event_api/examples/app_rate_limited.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/app_uninstalled.json +0 -11
- data/lib/slack_resources/raw_data/event_api/examples/channel_archive.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/channel_created.json +0 -9
- data/lib/slack_resources/raw_data/event_api/examples/channel_deleted.json +0 -4
- data/lib/slack_resources/raw_data/event_api/examples/channel_history_changed.json +0 -6
- data/lib/slack_resources/raw_data/event_api/examples/channel_left.json +0 -4
- data/lib/slack_resources/raw_data/event_api/examples/channel_rename.json +0 -8
- data/lib/slack_resources/raw_data/event_api/examples/channel_unarchive.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/dnd_updated.json +0 -11
- data/lib/slack_resources/raw_data/event_api/examples/dnd_updated_user.json +0 -9
- data/lib/slack_resources/raw_data/event_api/examples/email_domain_changed.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/emoji_changed.json +0 -8
- data/lib/slack_resources/raw_data/event_api/examples/file_change.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/file_comment_added.json +0 -9
- data/lib/slack_resources/raw_data/event_api/examples/file_comment_deleted.json +0 -8
- data/lib/slack_resources/raw_data/event_api/examples/file_comment_edited.json +0 -9
- data/lib/slack_resources/raw_data/event_api/examples/file_created.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/file_deleted.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/file_public.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/file_shared.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/file_unshared.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/grid_migration_finished.json +0 -12
- data/lib/slack_resources/raw_data/event_api/examples/grid_migration_started.json +0 -12
- data/lib/slack_resources/raw_data/event_api/examples/group_archive.json +0 -4
- data/lib/slack_resources/raw_data/event_api/examples/group_close.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/group_deleted.json +0 -4
- data/lib/slack_resources/raw_data/event_api/examples/group_history_changed.json +0 -6
- data/lib/slack_resources/raw_data/event_api/examples/group_left.json +0 -4
- data/lib/slack_resources/raw_data/event_api/examples/group_open.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/group_rename.json +0 -8
- data/lib/slack_resources/raw_data/event_api/examples/group_unarchive.json +0 -4
- data/lib/slack_resources/raw_data/event_api/examples/im_close.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/im_created.json +0 -6
- data/lib/slack_resources/raw_data/event_api/examples/im_history_changed.json +0 -6
- data/lib/slack_resources/raw_data/event_api/examples/im_open.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/link_shared.json +0 -33
- data/lib/slack_resources/raw_data/event_api/examples/member_joined_channel.json +0 -8
- data/lib/slack_resources/raw_data/event_api/examples/member_left_channel.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/message.app_home.json +0 -20
- data/lib/slack_resources/raw_data/event_api/examples/message.channels.json +0 -20
- data/lib/slack_resources/raw_data/event_api/examples/message.groups.json +0 -20
- data/lib/slack_resources/raw_data/event_api/examples/message.im.json +0 -20
- data/lib/slack_resources/raw_data/event_api/examples/message.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/message.mpim.json +0 -20
- data/lib/slack_resources/raw_data/event_api/examples/pin_added.json +0 -8
- data/lib/slack_resources/raw_data/event_api/examples/pin_removed.json +0 -9
- data/lib/slack_resources/raw_data/event_api/examples/reaction_added.json +0 -12
- data/lib/slack_resources/raw_data/event_api/examples/reaction_removed.json +0 -12
- data/lib/slack_resources/raw_data/event_api/examples/resources_added.json +0 -31
- data/lib/slack_resources/raw_data/event_api/examples/resources_removed.json +0 -31
- data/lib/slack_resources/raw_data/event_api/examples/scope_denied.json +0 -20
- data/lib/slack_resources/raw_data/event_api/examples/scope_granted.json +0 -20
- data/lib/slack_resources/raw_data/event_api/examples/star_added.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/star_removed.json +0 -7
- data/lib/slack_resources/raw_data/event_api/examples/subteam_created.json +0 -28
- data/lib/slack_resources/raw_data/event_api/examples/subteam_members_changed.json +0 -17
- data/lib/slack_resources/raw_data/event_api/examples/subteam_self_added.json +0 -4
- data/lib/slack_resources/raw_data/event_api/examples/subteam_self_removed.json +0 -4
- data/lib/slack_resources/raw_data/event_api/examples/subteam_updated.json +0 -34
- data/lib/slack_resources/raw_data/event_api/examples/team_domain_change.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/team_join.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/team_rename.json +0 -4
- data/lib/slack_resources/raw_data/event_api/examples/tokens_revoked.json +0 -19
- data/lib/slack_resources/raw_data/event_api/examples/url_verification.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/user_change.json +0 -5
- data/lib/slack_resources/raw_data/event_api/examples/user_resource_denied.json +0 -20
- data/lib/slack_resources/raw_data/event_api/examples/user_resource_granted.json +0 -20
- data/lib/slack_resources/raw_data/event_api/examples/user_resource_removed.json +0 -16
- data/lib/slack_resources/resources/event_api/details/emoji_changed.add.json +0 -78
- data/lib/slack_resources/resources/event_api/details/emoji_changed.remove.json +0 -77
- data/lib/slack_resources/resources/event_api/examples/emoji_changed.add.json +0 -7
- data/lib/slack_resources/resources/event_api/examples/emoji_changed.remove.json +0 -8
- data/lib/slack_resources/resources/event_api/schemas/emoji_changed.add.json +0 -42
- data/lib/slack_resources/resources/event_api/schemas/emoji_changed.remove.json +0 -40
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8dc3db936e304bc7bbe9a46ca4f15abc27c9ae3633d233ed30125d1fa4f9dac
|
4
|
+
data.tar.gz: ac21512366ff00cbca6e1353ea629d8bcc763f21ee76fd72dab691f5d8067e0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
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:
|
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:
|
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
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
|
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.
|
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.
|
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.
|
28
|
+
mini_portile2 (2.3.0)
|
29
29
|
minitest (5.11.3)
|
30
30
|
netrc (0.11.0)
|
31
|
-
nokogiri (1.
|
32
|
-
mini_portile2 (~> 2.
|
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.
|
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
|
-
|
90
|
+
slack_app_request_handler!
|
91
91
|
|
92
92
|
BUNDLED WITH
|
93
93
|
1.16.1
|
File without changes
|
@@ -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
|
data/lib/slack_resources/{raw_data → resources}/event_api/_added_examples/event_callback.json
RENAMED
File without changes
|