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
@@ -1,272 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/module/delegation'
|
2
|
-
|
3
|
-
module SlackResources
|
4
|
-
module Generator
|
5
|
-
class TypeDetection
|
6
|
-
using StrongHash
|
7
|
-
|
8
|
-
SPECIAL_TYPE = '_type'.freeze
|
9
|
-
MULTIPLE_EXAMPLES = 'MULTIPLE_EXAMPLES'.freeze
|
10
|
-
|
11
|
-
CONST_TYPES = %w[
|
12
|
-
type
|
13
|
-
subtype
|
14
|
-
].freeze
|
15
|
-
|
16
|
-
DEFAULT_TYPES = Set.new(%w[
|
17
|
-
string
|
18
|
-
number
|
19
|
-
object
|
20
|
-
array
|
21
|
-
boolean
|
22
|
-
null
|
23
|
-
])
|
24
|
-
|
25
|
-
STRING_ID_PROPERTIES_MAP = {
|
26
|
-
item_user: 'user_id',
|
27
|
-
user: 'user_id',
|
28
|
-
creator: 'user_id',
|
29
|
-
inviter: 'user_id',
|
30
|
-
created_by: 'user_id',
|
31
|
-
updated_by: 'user_id',
|
32
|
-
deleted_by: 'user_id',
|
33
|
-
channel: 'channel_id',
|
34
|
-
comment: 'comment_id',
|
35
|
-
team: 'team_id',
|
36
|
-
}.stringify_keys!
|
37
|
-
|
38
|
-
STRING_ID_PROPERTIES = Set.new(STRING_ID_PROPERTIES_MAP.keys)
|
39
|
-
|
40
|
-
DIRECT_STRING_PROPERTIES = Set.new(%w[
|
41
|
-
email_domain
|
42
|
-
text
|
43
|
-
description
|
44
|
-
handle
|
45
|
-
url
|
46
|
-
domain
|
47
|
-
challenge
|
48
|
-
])
|
49
|
-
|
50
|
-
USER_COUNT_PROPERTIES = Set.new(%w[
|
51
|
-
user_count
|
52
|
-
added_users_count
|
53
|
-
removed_users_count
|
54
|
-
])
|
55
|
-
|
56
|
-
ARRAY_PROPERTIES_TYPE_MAP = {
|
57
|
-
authed_users: 'user_id',
|
58
|
-
users: 'user_id',
|
59
|
-
added_users: 'user_id',
|
60
|
-
removed_users: 'user_id',
|
61
|
-
authed_teams: 'team_id',
|
62
|
-
channels: 'channel_id',
|
63
|
-
groups: 'group_id',
|
64
|
-
scopes: 'scope',
|
65
|
-
links: 'link',
|
66
|
-
oauth: 'string',
|
67
|
-
bot: 'string',
|
68
|
-
resources: 'resource_item',
|
69
|
-
}.stringify_keys!
|
70
|
-
|
71
|
-
TOKENS_REVOKED_ARRAY_PROPERTIES = Set.new(%w[
|
72
|
-
oauth
|
73
|
-
bot
|
74
|
-
])
|
75
|
-
|
76
|
-
ARRAY_PROPERTIES = Set.new(ARRAY_PROPERTIES_TYPE_MAP.keys - TOKENS_REVOKED_ARRAY_PROPERTIES.to_a)
|
77
|
-
|
78
|
-
BOOLEAN = Set.new([true, false])
|
79
|
-
|
80
|
-
AMBIENT_PROPERTIES = Set.new(%w[
|
81
|
-
id
|
82
|
-
type
|
83
|
-
name
|
84
|
-
subtype
|
85
|
-
value
|
86
|
-
item
|
87
|
-
])
|
88
|
-
|
89
|
-
class << self
|
90
|
-
def default_type?(type)
|
91
|
-
DEFAULT_TYPES.include?(type)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def initialize(to_schema_instance:, parent_key:, prop_name:, value:, container:, preset:)
|
96
|
-
@to_schema = to_schema_instance
|
97
|
-
@parent_key = parent_key
|
98
|
-
@prop_name = prop_name
|
99
|
-
@value = value
|
100
|
-
@container = container
|
101
|
-
@preset = preset
|
102
|
-
end
|
103
|
-
|
104
|
-
def execute! # rubocop:disable Metrics/PerceivedComplexity,Metrics/CyclomaticComplexity
|
105
|
-
case
|
106
|
-
when root_schema? && constantable?
|
107
|
-
{ 'const' => @value }
|
108
|
-
when item_schema? && type?
|
109
|
-
define_string("#{root_type_prefix}_#{@parent_key}_type")
|
110
|
-
|
111
|
-
when string_id?
|
112
|
-
define_string_id
|
113
|
-
|
114
|
-
when emoji_list?
|
115
|
-
define_string('emoji_name')
|
116
|
-
'[]emoji_name'
|
117
|
-
when emoji_alternative?
|
118
|
-
define_string('emoji_name')
|
119
|
-
|
120
|
-
when array?
|
121
|
-
define_array_type
|
122
|
-
|
123
|
-
when user_count?
|
124
|
-
'user_count'
|
125
|
-
when time_integer?
|
126
|
-
'time_integer'
|
127
|
-
when boolean?
|
128
|
-
'boolean'
|
129
|
-
when direct_string? || (on_url_verification? && @prop_name == 'token')
|
130
|
-
'string'
|
131
|
-
when timestamp?
|
132
|
-
'timestamp'
|
133
|
-
|
134
|
-
else
|
135
|
-
define_default_type(normalized_prop_name, @value, @container, const_type?)
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
private
|
140
|
-
|
141
|
-
delegate(
|
142
|
-
:root_schema?,
|
143
|
-
:define_string,
|
144
|
-
:root_type,
|
145
|
-
:root_type_prefix,
|
146
|
-
:define_default_type,
|
147
|
-
:define_object,
|
148
|
-
:define_enum,
|
149
|
-
:ref_to,
|
150
|
-
to: :@to_schema
|
151
|
-
)
|
152
|
-
|
153
|
-
def normalized_prop_name
|
154
|
-
if ambient?
|
155
|
-
root_schema? ? "#{root_type_prefix}_#{@prop_name}" : "#{@parent_key}_#{@prop_name}"
|
156
|
-
else
|
157
|
-
@prop_name
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
def type?
|
162
|
-
@prop_name == 'type'
|
163
|
-
end
|
164
|
-
|
165
|
-
def const_type?
|
166
|
-
CONST_TYPES.include?(@prop_name) || @prop_name.match(/_type$/)
|
167
|
-
end
|
168
|
-
|
169
|
-
def string?
|
170
|
-
@value.is_a?(String)
|
171
|
-
end
|
172
|
-
|
173
|
-
def constantable?
|
174
|
-
const_type? && (@value.is_a?(String) || @value.is_a?(Integer))
|
175
|
-
end
|
176
|
-
|
177
|
-
def emoji_alternative?
|
178
|
-
@prop_name == 'reaction'
|
179
|
-
end
|
180
|
-
|
181
|
-
def item_schema?
|
182
|
-
@parent_key == 'item'
|
183
|
-
end
|
184
|
-
|
185
|
-
def ambient?
|
186
|
-
AMBIENT_PROPERTIES.include?(@prop_name)
|
187
|
-
end
|
188
|
-
|
189
|
-
def time_integer?
|
190
|
-
@value.is_a?(Integer)
|
191
|
-
end
|
192
|
-
|
193
|
-
def boolean?
|
194
|
-
BOOLEAN.include?(@value)
|
195
|
-
end
|
196
|
-
|
197
|
-
def timestamp?
|
198
|
-
@prop_name == 'latest' || @prop_name.match(/.+_ts$/) || float_string?
|
199
|
-
end
|
200
|
-
|
201
|
-
def float_string?
|
202
|
-
@value.respond_to?(:to_f) && @value == @value.to_f.to_s
|
203
|
-
end
|
204
|
-
|
205
|
-
def array?
|
206
|
-
ARRAY_PROPERTIES.include?(@prop_name) || tokens_revoked_array?
|
207
|
-
end
|
208
|
-
|
209
|
-
def tokens_revoked_array?
|
210
|
-
on_tokens_revoked? && TOKENS_REVOKED_ARRAY_PROPERTIES.include?(@prop_name)
|
211
|
-
end
|
212
|
-
|
213
|
-
def user_count?
|
214
|
-
USER_COUNT_PROPERTIES.include?(@prop_name)
|
215
|
-
end
|
216
|
-
|
217
|
-
def direct_string?
|
218
|
-
DIRECT_STRING_PROPERTIES.include?(@prop_name)
|
219
|
-
end
|
220
|
-
|
221
|
-
def string_id?
|
222
|
-
@prop_name.match(/_id$/) || (string_value? && STRING_ID_PROPERTIES.include?(@prop_name))
|
223
|
-
end
|
224
|
-
|
225
|
-
def string_value?
|
226
|
-
@value.nil? || @value.is_a?(String)
|
227
|
-
end
|
228
|
-
|
229
|
-
def default_type?(type)
|
230
|
-
DEFAULT_TYPES.include?(type)
|
231
|
-
end
|
232
|
-
|
233
|
-
def emoji_list?
|
234
|
-
on_emoji_changed? && @prop_name == 'names'
|
235
|
-
end
|
236
|
-
|
237
|
-
def on_tokens_revoked?
|
238
|
-
root_type == 'tokens_revoked'
|
239
|
-
end
|
240
|
-
|
241
|
-
def on_url_verification?
|
242
|
-
root_type == 'url_verification'
|
243
|
-
end
|
244
|
-
|
245
|
-
def on_emoji_changed?
|
246
|
-
root_type == 'emoji_changed'
|
247
|
-
end
|
248
|
-
|
249
|
-
def define_array_type
|
250
|
-
type = ARRAY_PROPERTIES_TYPE_MAP[@prop_name]
|
251
|
-
array_type = "[]#{type}"
|
252
|
-
|
253
|
-
return array_type if default_type?(type)
|
254
|
-
return define_string(type) && array_type unless @value.is_a?(Hash)
|
255
|
-
|
256
|
-
to_child_schema(
|
257
|
-
prop_name: type,
|
258
|
-
example: @value.first,
|
259
|
-
key: @prop_name,
|
260
|
-
parent: @container
|
261
|
-
)
|
262
|
-
|
263
|
-
array_type
|
264
|
-
end
|
265
|
-
|
266
|
-
def define_string_id
|
267
|
-
type = STRING_ID_PROPERTIES_MAP[@prop_name] || @prop_name
|
268
|
-
define_string(type)
|
269
|
-
end
|
270
|
-
end
|
271
|
-
end
|
272
|
-
end
|
@@ -1,123 +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
|
-
module SlackResources
|
9
|
-
module Generator
|
10
|
-
class Writer
|
11
|
-
using StrongHash
|
12
|
-
|
13
|
-
def initialize(output_dir:, data_dir:)
|
14
|
-
@output_dir = Pathname(output_dir)
|
15
|
-
@details_output_dir = @output_dir.join('details')
|
16
|
-
@schemas_output_dir = @output_dir.join('schemas')
|
17
|
-
@example_output_dir = @output_dir.join('examples')
|
18
|
-
|
19
|
-
@data_dir = Pathname(data_dir)
|
20
|
-
@meta = JSON.parse(File.read(@data_dir.join('meta.json')))
|
21
|
-
@preset_schema = JSON.parse(File.read(@data_dir.join('preset_schemas.json')))
|
22
|
-
@preset_definitions = @preset_schema['definitions']
|
23
|
-
|
24
|
-
@examples_dir = @data_dir.join('examples')
|
25
|
-
@added_examples_dir = @data_dir.join('_added_examples')
|
26
|
-
end
|
27
|
-
|
28
|
-
def execute!
|
29
|
-
FileUtils.mkdir_p(@details_output_dir)
|
30
|
-
FileUtils.mkdir_p(@schemas_output_dir)
|
31
|
-
FileUtils.mkdir_p(@example_output_dir)
|
32
|
-
|
33
|
-
alt_event_type_mapped_examples = ExamplePreparation.new(
|
34
|
-
examples_dir: @examples_dir,
|
35
|
-
added_examples_dir: @added_examples_dir
|
36
|
-
).execute!
|
37
|
-
|
38
|
-
examples_with_metadata = alt_event_type_mapped_examples.map do |alt_event_type, example|
|
39
|
-
info = @meta['subscriptions'][alt_event_type] || @meta['subscriptions'][example['type']] || {}
|
40
|
-
[info['url'], alt_event_type, example, info['compatibility'], info['scopes']]
|
41
|
-
end
|
42
|
-
|
43
|
-
all_sub_schemas = @preset_definitions.merge(
|
44
|
-
'scope' => {
|
45
|
-
"type": 'string',
|
46
|
-
"enum": @meta['scopes'],
|
47
|
-
}
|
48
|
-
)
|
49
|
-
|
50
|
-
main_schemas = {}
|
51
|
-
|
52
|
-
all_details = examples_with_metadata.map do |url, alt_event_type, example, compatibility, scopes|
|
53
|
-
raw_example = example.delete('_raw_example')
|
54
|
-
schema, new_definition, included_props_names = ToSchema.new(
|
55
|
-
example: example,
|
56
|
-
url: url,
|
57
|
-
preset: all_sub_schemas
|
58
|
-
).execute!
|
59
|
-
|
60
|
-
all_sub_schemas.protect_merge!(new_definition)
|
61
|
-
|
62
|
-
included_schemas = included_props_names.inject({}) do |a, included_prop|
|
63
|
-
all_sub_schemas[included_prop] ? a.protect_merge!(included_prop => all_sub_schemas[included_prop]) : a
|
64
|
-
end
|
65
|
-
|
66
|
-
schema['description'] = "learn more: #{url}"
|
67
|
-
schema['example'] = raw_example
|
68
|
-
|
69
|
-
main_schemas[alt_event_type] = schema
|
70
|
-
|
71
|
-
[
|
72
|
-
alt_event_type,
|
73
|
-
{
|
74
|
-
url: url,
|
75
|
-
event: alt_event_type,
|
76
|
-
sub_schemas: included_schemas,
|
77
|
-
schema: schema,
|
78
|
-
compatibility: compatibility,
|
79
|
-
scopes: scopes,
|
80
|
-
},
|
81
|
-
{
|
82
|
-
"$schema": 'http://json-schema.org/draft-07/schema',
|
83
|
-
'definitions' => included_schemas.protect_merge!(alt_event_type => schema),
|
84
|
-
},
|
85
|
-
raw_example,
|
86
|
-
]
|
87
|
-
end
|
88
|
-
|
89
|
-
write_each_data_json!(all_details)
|
90
|
-
write_all_schemas_json!(all_sub_schemas, main_schemas)
|
91
|
-
write_summary!(all_details.map { |d| d[1] })
|
92
|
-
|
93
|
-
all_details
|
94
|
-
end
|
95
|
-
|
96
|
-
# @output_dir = Pathname('./lib/slack_resources/resources/event_api/')
|
97
|
-
|
98
|
-
private
|
99
|
-
|
100
|
-
def write_each_data_json!(all_details)
|
101
|
-
all_details.each do |alt_event_type, data, single_schema, example|
|
102
|
-
File.write(@details_output_dir.join("#{alt_event_type}.json").to_s, JSON.pretty_generate(data))
|
103
|
-
File.write(@example_output_dir.join("#{alt_event_type}.json").to_s, JSON.pretty_generate(example))
|
104
|
-
File.write(@schemas_output_dir.join("#{alt_event_type}.json").to_s, JSON.pretty_generate(single_schema))
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def write_all_schemas_json!(all_sub_schemas, main_schemas)
|
109
|
-
File.write(
|
110
|
-
@output_dir.join('schema.json').to_s,
|
111
|
-
JSON.pretty_generate(
|
112
|
-
"$schema": 'http://json-schema.org/draft-07/schema',
|
113
|
-
'definitions' => all_sub_schemas.protect_merge!(main_schemas).key_ordered
|
114
|
-
)
|
115
|
-
)
|
116
|
-
end
|
117
|
-
|
118
|
-
def write_summary!(data)
|
119
|
-
File.write(@output_dir.join('summary.json').to_s, JSON.pretty_generate(data.sort_by { |a| a[:type] }))
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|