slack_resources 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.circleci/config.yml +87 -0
- data/.circleci/gem_deployment.rb +53 -0
- data/.gitignore +13 -0
- data/.rubocop.yml +104 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +93 -0
- data/README.md +29 -0
- data/Rakefile +6 -0
- data/lib/generate_event_api_resources.rb +8 -0
- data/lib/slack_resources.rb +11 -0
- data/lib/slack_resources/generator/event_api/examples_preparation.rb +71 -0
- data/lib/slack_resources/generator/event_api/fetch.rb +111 -0
- data/lib/slack_resources/generator/event_api/strong_hash.rb +25 -0
- data/lib/slack_resources/generator/event_api/to_schema.rb +200 -0
- data/lib/slack_resources/generator/event_api/type_detection.rb +272 -0
- data/lib/slack_resources/generator/event_api/write.rb +123 -0
- data/lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.add.json +7 -0
- data/lib/slack_resources/raw_data/event_api/_added_examples/emoji_changed.remove.json +6 -0
- data/lib/slack_resources/raw_data/event_api/_added_examples/event_callback.json +13 -0
- data/lib/slack_resources/raw_data/event_api/examples/app_mention.json +8 -0
- data/lib/slack_resources/raw_data/event_api/examples/app_rate_limited.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/app_uninstalled.json +11 -0
- data/lib/slack_resources/raw_data/event_api/examples/channel_archive.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/channel_created.json +9 -0
- data/lib/slack_resources/raw_data/event_api/examples/channel_deleted.json +4 -0
- data/lib/slack_resources/raw_data/event_api/examples/channel_history_changed.json +6 -0
- data/lib/slack_resources/raw_data/event_api/examples/channel_left.json +4 -0
- data/lib/slack_resources/raw_data/event_api/examples/channel_rename.json +8 -0
- data/lib/slack_resources/raw_data/event_api/examples/channel_unarchive.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/dnd_updated.json +11 -0
- data/lib/slack_resources/raw_data/event_api/examples/dnd_updated_user.json +9 -0
- data/lib/slack_resources/raw_data/event_api/examples/email_domain_changed.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/emoji_changed.json +8 -0
- data/lib/slack_resources/raw_data/event_api/examples/file_change.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/file_comment_added.json +9 -0
- data/lib/slack_resources/raw_data/event_api/examples/file_comment_deleted.json +8 -0
- data/lib/slack_resources/raw_data/event_api/examples/file_comment_edited.json +9 -0
- data/lib/slack_resources/raw_data/event_api/examples/file_created.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/file_deleted.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/file_public.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/file_shared.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/file_unshared.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/grid_migration_finished.json +12 -0
- data/lib/slack_resources/raw_data/event_api/examples/grid_migration_started.json +12 -0
- data/lib/slack_resources/raw_data/event_api/examples/group_archive.json +4 -0
- data/lib/slack_resources/raw_data/event_api/examples/group_close.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/group_deleted.json +4 -0
- data/lib/slack_resources/raw_data/event_api/examples/group_history_changed.json +6 -0
- data/lib/slack_resources/raw_data/event_api/examples/group_left.json +4 -0
- data/lib/slack_resources/raw_data/event_api/examples/group_open.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/group_rename.json +8 -0
- data/lib/slack_resources/raw_data/event_api/examples/group_unarchive.json +4 -0
- data/lib/slack_resources/raw_data/event_api/examples/im_close.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/im_created.json +6 -0
- data/lib/slack_resources/raw_data/event_api/examples/im_history_changed.json +6 -0
- data/lib/slack_resources/raw_data/event_api/examples/im_open.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/link_shared.json +33 -0
- data/lib/slack_resources/raw_data/event_api/examples/member_joined_channel.json +8 -0
- data/lib/slack_resources/raw_data/event_api/examples/member_left_channel.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/message.app_home.json +20 -0
- data/lib/slack_resources/raw_data/event_api/examples/message.channels.json +20 -0
- data/lib/slack_resources/raw_data/event_api/examples/message.groups.json +20 -0
- data/lib/slack_resources/raw_data/event_api/examples/message.im.json +20 -0
- data/lib/slack_resources/raw_data/event_api/examples/message.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/message.mpim.json +20 -0
- data/lib/slack_resources/raw_data/event_api/examples/pin_added.json +8 -0
- data/lib/slack_resources/raw_data/event_api/examples/pin_removed.json +9 -0
- data/lib/slack_resources/raw_data/event_api/examples/reaction_added.json +12 -0
- data/lib/slack_resources/raw_data/event_api/examples/reaction_removed.json +12 -0
- data/lib/slack_resources/raw_data/event_api/examples/resources_added.json +31 -0
- data/lib/slack_resources/raw_data/event_api/examples/resources_removed.json +31 -0
- data/lib/slack_resources/raw_data/event_api/examples/scope_denied.json +20 -0
- data/lib/slack_resources/raw_data/event_api/examples/scope_granted.json +20 -0
- data/lib/slack_resources/raw_data/event_api/examples/star_added.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/star_removed.json +7 -0
- data/lib/slack_resources/raw_data/event_api/examples/subteam_created.json +28 -0
- data/lib/slack_resources/raw_data/event_api/examples/subteam_members_changed.json +17 -0
- data/lib/slack_resources/raw_data/event_api/examples/subteam_self_added.json +4 -0
- data/lib/slack_resources/raw_data/event_api/examples/subteam_self_removed.json +4 -0
- data/lib/slack_resources/raw_data/event_api/examples/subteam_updated.json +34 -0
- data/lib/slack_resources/raw_data/event_api/examples/team_domain_change.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/team_join.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/team_rename.json +4 -0
- data/lib/slack_resources/raw_data/event_api/examples/tokens_revoked.json +19 -0
- data/lib/slack_resources/raw_data/event_api/examples/url_verification.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/user_change.json +5 -0
- data/lib/slack_resources/raw_data/event_api/examples/user_resource_denied.json +20 -0
- data/lib/slack_resources/raw_data/event_api/examples/user_resource_granted.json +20 -0
- data/lib/slack_resources/raw_data/event_api/examples/user_resource_removed.json +16 -0
- data/lib/slack_resources/raw_data/event_api/meta.json +834 -0
- data/lib/slack_resources/raw_data/event_api/preset_schemas.json +33 -0
- data/lib/slack_resources/resources/event_api.rb +38 -0
- data/lib/slack_resources/resources/event_api/details/app_mention.json +85 -0
- data/lib/slack_resources/resources/event_api/details/app_rate_limited.json +80 -0
- data/lib/slack_resources/resources/event_api/details/app_uninstalled.json +36 -0
- data/lib/slack_resources/resources/event_api/details/channel_archive.json +59 -0
- data/lib/slack_resources/resources/event_api/details/channel_created.json +82 -0
- data/lib/slack_resources/resources/event_api/details/channel_deleted.json +48 -0
- data/lib/slack_resources/resources/event_api/details/channel_history_changed.json +66 -0
- data/lib/slack_resources/resources/event_api/details/channel_left.json +48 -0
- data/lib/slack_resources/resources/event_api/details/channel_rename.json +77 -0
- data/lib/slack_resources/resources/event_api/details/channel_unarchive.json +59 -0
- data/lib/slack_resources/resources/event_api/details/dnd_updated.json +86 -0
- data/lib/slack_resources/resources/event_api/details/dnd_updated_user.json +82 -0
- data/lib/slack_resources/resources/event_api/details/email_domain_changed.json +56 -0
- data/lib/slack_resources/resources/event_api/details/emoji_changed.add.json +78 -0
- data/lib/slack_resources/resources/event_api/details/emoji_changed.json +103 -0
- data/lib/slack_resources/resources/event_api/details/emoji_changed.remove.json +77 -0
- data/lib/slack_resources/resources/event_api/details/event_callback.json +126 -0
- data/lib/slack_resources/resources/event_api/details/file_change.json +69 -0
- data/lib/slack_resources/resources/event_api/details/file_comment_added.json +85 -0
- data/lib/slack_resources/resources/event_api/details/file_comment_deleted.json +80 -0
- data/lib/slack_resources/resources/event_api/details/file_comment_edited.json +85 -0
- data/lib/slack_resources/resources/event_api/details/file_created.json +69 -0
- data/lib/slack_resources/resources/event_api/details/file_deleted.json +59 -0
- data/lib/slack_resources/resources/event_api/details/file_public.json +69 -0
- data/lib/slack_resources/resources/event_api/details/file_shared.json +69 -0
- data/lib/slack_resources/resources/event_api/details/file_unshared.json +69 -0
- data/lib/slack_resources/resources/event_api/details/grid_migration_finished.json +47 -0
- data/lib/slack_resources/resources/event_api/details/grid_migration_started.json +47 -0
- data/lib/slack_resources/resources/event_api/details/group_archive.json +48 -0
- data/lib/slack_resources/resources/event_api/details/group_close.json +59 -0
- data/lib/slack_resources/resources/event_api/details/group_deleted.json +48 -0
- data/lib/slack_resources/resources/event_api/details/group_history_changed.json +64 -0
- data/lib/slack_resources/resources/event_api/details/group_left.json +48 -0
- data/lib/slack_resources/resources/event_api/details/group_open.json +59 -0
- data/lib/slack_resources/resources/event_api/details/group_rename.json +77 -0
- data/lib/slack_resources/resources/event_api/details/group_unarchive.json +48 -0
- data/lib/slack_resources/resources/event_api/details/im_close.json +59 -0
- data/lib/slack_resources/resources/event_api/details/im_created.json +73 -0
- data/lib/slack_resources/resources/event_api/details/im_history_changed.json +64 -0
- data/lib/slack_resources/resources/event_api/details/im_open.json +59 -0
- data/lib/slack_resources/resources/event_api/details/link_shared.json +129 -0
- data/lib/slack_resources/resources/event_api/details/member_joined_channel.json +87 -0
- data/lib/slack_resources/resources/event_api/details/member_left_channel.json +79 -0
- data/lib/slack_resources/resources/event_api/details/message.app_home.json +93 -0
- data/lib/slack_resources/resources/event_api/details/message.channels.json +93 -0
- data/lib/slack_resources/resources/event_api/details/message.groups.json +93 -0
- data/lib/slack_resources/resources/event_api/details/message.im.json +93 -0
- data/lib/slack_resources/resources/event_api/details/message.json +129 -0
- data/lib/slack_resources/resources/event_api/details/message.mpim.json +93 -0
- data/lib/slack_resources/resources/event_api/details/pin_added.json +86 -0
- data/lib/slack_resources/resources/event_api/details/pin_removed.json +94 -0
- data/lib/slack_resources/resources/event_api/details/reaction_added.json +115 -0
- data/lib/slack_resources/resources/event_api/details/reaction_removed.json +115 -0
- data/lib/slack_resources/resources/event_api/details/resources_added.json +152 -0
- data/lib/slack_resources/resources/event_api/details/resources_removed.json +152 -0
- data/lib/slack_resources/resources/event_api/details/scope_denied.json +91 -0
- data/lib/slack_resources/resources/event_api/details/scope_granted.json +91 -0
- data/lib/slack_resources/resources/event_api/details/star_added.json +75 -0
- data/lib/slack_resources/resources/event_api/details/star_removed.json +75 -0
- data/lib/slack_resources/resources/event_api/details/subteam_created.json +198 -0
- data/lib/slack_resources/resources/event_api/details/subteam_members_changed.json +140 -0
- data/lib/slack_resources/resources/event_api/details/subteam_self_added.json +48 -0
- data/lib/slack_resources/resources/event_api/details/subteam_self_removed.json +48 -0
- data/lib/slack_resources/resources/event_api/details/subteam_updated.json +210 -0
- data/lib/slack_resources/resources/event_api/details/team_domain_change.json +53 -0
- data/lib/slack_resources/resources/event_api/details/team_join.json +53 -0
- data/lib/slack_resources/resources/event_api/details/team_rename.json +48 -0
- data/lib/slack_resources/resources/event_api/details/tokens_revoked.json +76 -0
- data/lib/slack_resources/resources/event_api/details/url_verification.json +52 -0
- data/lib/slack_resources/resources/event_api/details/user_change.json +53 -0
- data/lib/slack_resources/resources/event_api/details/user_resource_denied.json +100 -0
- data/lib/slack_resources/resources/event_api/details/user_resource_granted.json +100 -0
- data/lib/slack_resources/resources/event_api/details/user_resource_removed.json +58 -0
- data/lib/slack_resources/resources/event_api/examples/app_mention.json +8 -0
- data/lib/slack_resources/resources/event_api/examples/app_rate_limited.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/app_uninstalled.json +3 -0
- data/lib/slack_resources/resources/event_api/examples/channel_archive.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/channel_created.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/channel_deleted.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/channel_history_changed.json +6 -0
- data/lib/slack_resources/resources/event_api/examples/channel_left.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/channel_rename.json +8 -0
- data/lib/slack_resources/resources/event_api/examples/channel_unarchive.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/dnd_updated.json +11 -0
- data/lib/slack_resources/resources/event_api/examples/dnd_updated_user.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/email_domain_changed.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/emoji_changed.add.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/emoji_changed.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/emoji_changed.remove.json +8 -0
- data/lib/slack_resources/resources/event_api/examples/event_callback.json +14 -0
- data/lib/slack_resources/resources/event_api/examples/file_change.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/file_comment_added.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/file_comment_deleted.json +8 -0
- data/lib/slack_resources/resources/event_api/examples/file_comment_edited.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/file_created.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/file_deleted.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/file_public.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/file_shared.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/file_unshared.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/grid_migration_finished.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/grid_migration_started.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/group_archive.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/group_close.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/group_deleted.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/group_history_changed.json +6 -0
- data/lib/slack_resources/resources/event_api/examples/group_left.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/group_open.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/group_rename.json +8 -0
- data/lib/slack_resources/resources/event_api/examples/group_unarchive.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/im_close.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/im_created.json +6 -0
- data/lib/slack_resources/resources/event_api/examples/im_history_changed.json +6 -0
- data/lib/slack_resources/resources/event_api/examples/im_open.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/link_shared.json +21 -0
- data/lib/slack_resources/resources/event_api/examples/member_joined_channel.json +8 -0
- data/lib/slack_resources/resources/event_api/examples/member_left_channel.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/message.app_home.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/message.channels.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/message.groups.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/message.im.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/message.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/message.mpim.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/pin_added.json +8 -0
- data/lib/slack_resources/resources/event_api/examples/pin_removed.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/reaction_added.json +12 -0
- data/lib/slack_resources/resources/event_api/examples/reaction_removed.json +12 -0
- data/lib/slack_resources/resources/event_api/examples/resources_added.json +20 -0
- data/lib/slack_resources/resources/event_api/examples/resources_removed.json +20 -0
- data/lib/slack_resources/resources/event_api/examples/scope_denied.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/scope_granted.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/star_added.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/star_removed.json +7 -0
- data/lib/slack_resources/resources/event_api/examples/subteam_created.json +28 -0
- data/lib/slack_resources/resources/event_api/examples/subteam_members_changed.json +17 -0
- data/lib/slack_resources/resources/event_api/examples/subteam_self_added.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/subteam_self_removed.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/subteam_updated.json +34 -0
- data/lib/slack_resources/resources/event_api/examples/team_domain_change.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/team_join.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/team_rename.json +4 -0
- data/lib/slack_resources/resources/event_api/examples/tokens_revoked.json +11 -0
- data/lib/slack_resources/resources/event_api/examples/url_verification.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/user_change.json +5 -0
- data/lib/slack_resources/resources/event_api/examples/user_resource_denied.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/user_resource_granted.json +9 -0
- data/lib/slack_resources/resources/event_api/examples/user_resource_removed.json +5 -0
- data/lib/slack_resources/resources/event_api/schema.json +2261 -0
- data/lib/slack_resources/resources/event_api/schemas/app_mention.json +46 -0
- data/lib/slack_resources/resources/event_api/schemas/app_rate_limited.json +45 -0
- data/lib/slack_resources/resources/event_api/schemas/app_uninstalled.json +17 -0
- data/lib/slack_resources/resources/event_api/schemas/channel_archive.json +31 -0
- data/lib/slack_resources/resources/event_api/schemas/channel_created.json +53 -0
- data/lib/slack_resources/resources/event_api/schemas/channel_deleted.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/channel_history_changed.json +32 -0
- data/lib/slack_resources/resources/event_api/schemas/channel_left.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/channel_rename.json +49 -0
- data/lib/slack_resources/resources/event_api/schemas/channel_unarchive.json +31 -0
- data/lib/slack_resources/resources/event_api/schemas/dnd_updated.json +52 -0
- data/lib/slack_resources/resources/event_api/schemas/dnd_updated_user.json +50 -0
- data/lib/slack_resources/resources/event_api/schemas/email_domain_changed.json +28 -0
- data/lib/slack_resources/resources/event_api/schemas/emoji_changed.add.json +42 -0
- data/lib/slack_resources/resources/event_api/schemas/emoji_changed.json +61 -0
- data/lib/slack_resources/resources/event_api/schemas/emoji_changed.remove.json +40 -0
- data/lib/slack_resources/resources/event_api/schemas/event_callback.json +76 -0
- data/lib/slack_resources/resources/event_api/schemas/file_change.json +39 -0
- data/lib/slack_resources/resources/event_api/schemas/file_comment_added.json +50 -0
- data/lib/slack_resources/resources/event_api/schemas/file_comment_deleted.json +46 -0
- data/lib/slack_resources/resources/event_api/schemas/file_comment_edited.json +50 -0
- data/lib/slack_resources/resources/event_api/schemas/file_created.json +39 -0
- data/lib/slack_resources/resources/event_api/schemas/file_deleted.json +31 -0
- data/lib/slack_resources/resources/event_api/schemas/file_public.json +39 -0
- data/lib/slack_resources/resources/event_api/schemas/file_shared.json +39 -0
- data/lib/slack_resources/resources/event_api/schemas/file_unshared.json +39 -0
- data/lib/slack_resources/resources/event_api/schemas/grid_migration_finished.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/grid_migration_started.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/group_archive.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/group_close.json +31 -0
- data/lib/slack_resources/resources/event_api/schemas/group_deleted.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/group_history_changed.json +32 -0
- data/lib/slack_resources/resources/event_api/schemas/group_left.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/group_open.json +31 -0
- data/lib/slack_resources/resources/event_api/schemas/group_rename.json +49 -0
- data/lib/slack_resources/resources/event_api/schemas/group_unarchive.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/im_close.json +31 -0
- data/lib/slack_resources/resources/event_api/schemas/im_created.json +44 -0
- data/lib/slack_resources/resources/event_api/schemas/im_history_changed.json +32 -0
- data/lib/slack_resources/resources/event_api/schemas/im_open.json +31 -0
- data/lib/slack_resources/resources/event_api/schemas/link_shared.json +74 -0
- data/lib/slack_resources/resources/event_api/schemas/member_joined_channel.json +46 -0
- data/lib/slack_resources/resources/event_api/schemas/member_left_channel.json +42 -0
- data/lib/slack_resources/resources/event_api/schemas/message.app_home.json +50 -0
- data/lib/slack_resources/resources/event_api/schemas/message.channels.json +50 -0
- data/lib/slack_resources/resources/event_api/schemas/message.groups.json +50 -0
- data/lib/slack_resources/resources/event_api/schemas/message.im.json +50 -0
- data/lib/slack_resources/resources/event_api/schemas/message.json +82 -0
- data/lib/slack_resources/resources/event_api/schemas/message.mpim.json +50 -0
- data/lib/slack_resources/resources/event_api/schemas/pin_added.json +49 -0
- data/lib/slack_resources/resources/event_api/schemas/pin_removed.json +53 -0
- data/lib/slack_resources/resources/event_api/schemas/reaction_added.json +71 -0
- data/lib/slack_resources/resources/event_api/schemas/reaction_removed.json +71 -0
- data/lib/slack_resources/resources/event_api/schemas/resources_added.json +110 -0
- data/lib/slack_resources/resources/event_api/schemas/resources_removed.json +110 -0
- data/lib/slack_resources/resources/event_api/schemas/scope_denied.json +57 -0
- data/lib/slack_resources/resources/event_api/schemas/scope_granted.json +57 -0
- data/lib/slack_resources/resources/event_api/schemas/star_added.json +42 -0
- data/lib/slack_resources/resources/event_api/schemas/star_removed.json +42 -0
- data/lib/slack_resources/resources/event_api/schemas/subteam_created.json +150 -0
- data/lib/slack_resources/resources/event_api/schemas/subteam_members_changed.json +76 -0
- data/lib/slack_resources/resources/event_api/schemas/subteam_self_added.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/subteam_self_removed.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/subteam_updated.json +156 -0
- data/lib/slack_resources/resources/event_api/schemas/team_domain_change.json +25 -0
- data/lib/slack_resources/resources/event_api/schemas/team_join.json +28 -0
- data/lib/slack_resources/resources/event_api/schemas/team_rename.json +24 -0
- data/lib/slack_resources/resources/event_api/schemas/tokens_revoked.json +46 -0
- data/lib/slack_resources/resources/event_api/schemas/url_verification.json +25 -0
- data/lib/slack_resources/resources/event_api/schemas/user_change.json +28 -0
- data/lib/slack_resources/resources/event_api/schemas/user_resource_denied.json +63 -0
- data/lib/slack_resources/resources/event_api/schemas/user_resource_granted.json +63 -0
- data/lib/slack_resources/resources/event_api/schemas/user_resource_removed.json +31 -0
- data/lib/slack_resources/resources/event_api/summary.json +5876 -0
- data/slack_resources.gemspec +33 -0
- metadata +470 -0
@@ -0,0 +1,111 @@
|
|
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('./resources/event_api')
|
9
|
+
EXAMPLES_DIR = BASE_DIR.join('examples')
|
10
|
+
FileUtils.mkdir_p(EXAMPLES_DIR)
|
11
|
+
|
12
|
+
def fetch(url)
|
13
|
+
tmp = Pathname('./tmp')
|
14
|
+
path = tmp.join(url.tr(':', '_').tr('/', '_')).to_s
|
15
|
+
|
16
|
+
return File.read(path) if File.exist?(path)
|
17
|
+
|
18
|
+
RestClient.get(url).tap { |data| File.write(path, data) }
|
19
|
+
end
|
20
|
+
|
21
|
+
def event_api_urls
|
22
|
+
base = 'https://api.slack.com/events/api'
|
23
|
+
doc = Nokogiri.parse(fetch(base))
|
24
|
+
doc.css('#api_main_content a.bold.block').map { |a| URI.join(base, a.attributes['href']).to_s }
|
25
|
+
end
|
26
|
+
|
27
|
+
def event_api_pages
|
28
|
+
@event_api_pages ||= event_api_urls.map do |url|
|
29
|
+
[url, url.split('/').pop, fetch(url)]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def analise(html)
|
34
|
+
doc = Nokogiri.parse(html)
|
35
|
+
[
|
36
|
+
pick_response(doc),
|
37
|
+
pick_compatibility(doc),
|
38
|
+
pick_scopes(doc),
|
39
|
+
]
|
40
|
+
end
|
41
|
+
|
42
|
+
def pick_response(doc)
|
43
|
+
response_raw = doc.css('#api_main_content pre')[0].content
|
44
|
+
parse(response_raw)
|
45
|
+
end
|
46
|
+
|
47
|
+
def pick_compatibility(doc)
|
48
|
+
doc.css('#api_main_content .col.span_2_of_3.small')[0]
|
49
|
+
.content
|
50
|
+
.gsub("\t\t", "\t")
|
51
|
+
.split("\t")
|
52
|
+
.select(&:present?)[1..-1]&.
|
53
|
+
map(&:chomp) || []
|
54
|
+
end
|
55
|
+
|
56
|
+
def pick_scopes(doc)
|
57
|
+
doc.css('#api_main_content .col.span_1_of_3.small')[0]&.
|
58
|
+
content
|
59
|
+
.gsub("\t\t", "\t")
|
60
|
+
.split("\t")
|
61
|
+
.select(&:present?)[1..-1]&.
|
62
|
+
map(&:chomp) || []
|
63
|
+
end
|
64
|
+
|
65
|
+
def parse(json)
|
66
|
+
clean = json.gsub(/\{[\s\n]*…[^}]*\},?/m, '{},').gsub(/\{[\s\n]*\.\.\.[^}]*\},?/m, '{},').gsub(%("3"\n), %("3",\n))
|
67
|
+
JSON.parse(clean)
|
68
|
+
rescue StandardError
|
69
|
+
force(clean)
|
70
|
+
end
|
71
|
+
|
72
|
+
def force(clean)
|
73
|
+
eval(clean)
|
74
|
+
rescue StandardError
|
75
|
+
raise
|
76
|
+
end
|
77
|
+
|
78
|
+
def write_response_sample
|
79
|
+
types = []
|
80
|
+
on_event_api = []
|
81
|
+
on_rtm = []
|
82
|
+
all_scopes = []
|
83
|
+
subscriptions = {}
|
84
|
+
|
85
|
+
event_api_pages.each do |url, type, page|
|
86
|
+
response, compatibility, scopes = analise(page)
|
87
|
+
|
88
|
+
types << type
|
89
|
+
on_event_api << type if compatibility.include?('Events API')
|
90
|
+
on_rtm << type if compatibility.include?('RTM')
|
91
|
+
|
92
|
+
all_scopes += scopes
|
93
|
+
|
94
|
+
subscriptions[type] = {
|
95
|
+
url: url,
|
96
|
+
compatibility: compatibility,
|
97
|
+
scopes: scopes,
|
98
|
+
}
|
99
|
+
File.write(EXAMPLES_DIR.join("#{type}.json"), JSON.pretty_generate(response))
|
100
|
+
end
|
101
|
+
|
102
|
+
File.write(BASE_DIR.join('meta.json'), JSON.pretty_generate({
|
103
|
+
types: types.uniq,
|
104
|
+
on_event_api: on_event_api.uniq,
|
105
|
+
on_rtm: on_rtm.uniq,
|
106
|
+
scopes: all_scopes.uniq,
|
107
|
+
subscriptions: subscriptions,
|
108
|
+
}))
|
109
|
+
end
|
110
|
+
|
111
|
+
write_response_sample
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module SlackResources
|
2
|
+
module Generator
|
3
|
+
module StrongHash
|
4
|
+
refine Hash do
|
5
|
+
def protect_merge!(b)
|
6
|
+
b.keys.map do |new_key|
|
7
|
+
if self[new_key]
|
8
|
+
self[new_key] = b[new_key] if b[new_key].is_a?(Hash) && b[new_key]['type'].is_a?(Array)
|
9
|
+
else
|
10
|
+
self[new_key] = b[new_key]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
def key_ordered
|
18
|
+
keys.sort.inject({}) do |a, k|
|
19
|
+
a.merge!(k => self[k])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,200 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'active_support/core_ext/object/blank'
|
3
|
+
require 'active_support/core_ext/hash/keys'
|
4
|
+
|
5
|
+
module SlackResources
|
6
|
+
module Generator
|
7
|
+
class ToSchema
|
8
|
+
using StrongHash
|
9
|
+
|
10
|
+
def initialize(example:, url:, preset:, key: 'root', defined: {}, defined_used: Set.new, parent: {}, root: nil)
|
11
|
+
@example = JSON.parse(example.to_json).key_ordered
|
12
|
+
@url = url
|
13
|
+
@preset = preset
|
14
|
+
@key = key
|
15
|
+
@defined = defined
|
16
|
+
@defined_used = defined_used
|
17
|
+
@parent = parent
|
18
|
+
@root = root || @example
|
19
|
+
end
|
20
|
+
|
21
|
+
def execute!
|
22
|
+
properties = @example.inject({}) do |a, (prop_name, value)|
|
23
|
+
type = TypeDetection.new(
|
24
|
+
parent_key: @key,
|
25
|
+
to_schema_instance: self,
|
26
|
+
prop_name: prop_name,
|
27
|
+
value: value,
|
28
|
+
container: @example,
|
29
|
+
preset: @preset
|
30
|
+
).execute!
|
31
|
+
|
32
|
+
@defined_used << type if type.is_a?(String)
|
33
|
+
|
34
|
+
definition =
|
35
|
+
case
|
36
|
+
when TypeDetection.default_type?(type)
|
37
|
+
{ 'type' => type }
|
38
|
+
when detail?(type)
|
39
|
+
type
|
40
|
+
when array_type?(type)
|
41
|
+
define_as_array(type, value)
|
42
|
+
else
|
43
|
+
ref_to(type)
|
44
|
+
end
|
45
|
+
|
46
|
+
a.merge(prop_name => definition)
|
47
|
+
end
|
48
|
+
|
49
|
+
[
|
50
|
+
{
|
51
|
+
'type' => 'object',
|
52
|
+
'description' => properties.blank? ? "definition snipped. learn more: #{@url}" : '(defined by script)',
|
53
|
+
'properties' => properties,
|
54
|
+
},
|
55
|
+
@defined,
|
56
|
+
@defined_used,
|
57
|
+
]
|
58
|
+
end
|
59
|
+
|
60
|
+
def root_schema?
|
61
|
+
@root == @example
|
62
|
+
end
|
63
|
+
|
64
|
+
def root_type
|
65
|
+
@root['type']
|
66
|
+
end
|
67
|
+
|
68
|
+
def root_type_prefix
|
69
|
+
@root_type_prefix ||= root_type.split('_').shift
|
70
|
+
end
|
71
|
+
|
72
|
+
def array_type?(type)
|
73
|
+
type.to_s[0..1] == '[]'
|
74
|
+
end
|
75
|
+
|
76
|
+
def detail?(type)
|
77
|
+
type.is_a?(Hash)
|
78
|
+
end
|
79
|
+
|
80
|
+
def define_as_array(array_type, values)
|
81
|
+
type = array_type[2..-1]
|
82
|
+
|
83
|
+
if TypeDetection.default_type?(type)
|
84
|
+
return {
|
85
|
+
'type' => 'array',
|
86
|
+
'items' => {
|
87
|
+
'type' => type,
|
88
|
+
},
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
92
|
+
if values.first.is_a?(Hash)
|
93
|
+
to_child_schema(
|
94
|
+
prop_name: type,
|
95
|
+
example: values.first,
|
96
|
+
key: type,
|
97
|
+
parent: @example
|
98
|
+
)
|
99
|
+
elsif values.first.is_a?(String)
|
100
|
+
define_string(type)
|
101
|
+
end
|
102
|
+
|
103
|
+
{
|
104
|
+
'type' => 'array',
|
105
|
+
'items' => ref_to(type),
|
106
|
+
}
|
107
|
+
end
|
108
|
+
|
109
|
+
def define_object(k, v, types)
|
110
|
+
ref_key = k == 'item' ? "#{root_type_prefix}_item" : k
|
111
|
+
|
112
|
+
to_child_schema(
|
113
|
+
prop_name: ref_key,
|
114
|
+
example: v,
|
115
|
+
key: k,
|
116
|
+
parent: types
|
117
|
+
)
|
118
|
+
|
119
|
+
ref_key
|
120
|
+
end
|
121
|
+
|
122
|
+
def define_special_type(prop_name, value, container, const)
|
123
|
+
@defined_used << prop_name
|
124
|
+
|
125
|
+
return prop_name if @parent[prop_name]
|
126
|
+
|
127
|
+
types = value['items'].map { |v| detect_default_type(prop_name, v, container) }.uniq
|
128
|
+
|
129
|
+
@defined[prop_name] =
|
130
|
+
if const
|
131
|
+
{ 'type' => normalize_type(types), enum: value['items'].uniq }
|
132
|
+
else
|
133
|
+
{ 'type' => normalize_type(types) }
|
134
|
+
end
|
135
|
+
|
136
|
+
prop_name
|
137
|
+
end
|
138
|
+
|
139
|
+
def normalize_type(types)
|
140
|
+
types.size == 1 ? types[0] : types
|
141
|
+
end
|
142
|
+
|
143
|
+
def define_string(prop_name)
|
144
|
+
define_default_type(prop_name, 'string', nil)
|
145
|
+
end
|
146
|
+
|
147
|
+
def define_default_type(prop_name, value, container, const = false)
|
148
|
+
@defined.protect_merge!(
|
149
|
+
prop_name => {
|
150
|
+
'type' => detect_default_type(prop_name, value, container, const),
|
151
|
+
}
|
152
|
+
)
|
153
|
+
@defined_used << prop_name
|
154
|
+
|
155
|
+
ref_to(prop_name)
|
156
|
+
end
|
157
|
+
|
158
|
+
def detect_default_type(prop_name, value, container, const = false)
|
159
|
+
return define_special_type(prop_name, value, container, const) if value.is_a?(Hash) && value[TypeDetection::SPECIAL_TYPE] == TypeDetection::MULTIPLE_EXAMPLES
|
160
|
+
|
161
|
+
case value
|
162
|
+
when Integer
|
163
|
+
'number'
|
164
|
+
when Array
|
165
|
+
'array'
|
166
|
+
when Hash
|
167
|
+
define_object(prop_name, value, container)
|
168
|
+
when true, false
|
169
|
+
'boolean'
|
170
|
+
when nil
|
171
|
+
'null'
|
172
|
+
else
|
173
|
+
'string'
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
def ref_to(type)
|
178
|
+
{ '$ref' => "#/definitions/#{type}" }
|
179
|
+
end
|
180
|
+
|
181
|
+
def to_child_schema(params)
|
182
|
+
prop_name = params.delete(:prop_name)
|
183
|
+
SlackResources::Generator::ToSchema.new(
|
184
|
+
example: @example,
|
185
|
+
url: @url,
|
186
|
+
preset: @preset,
|
187
|
+
key: @key,
|
188
|
+
defined: @defined,
|
189
|
+
defined_used: @defined_used,
|
190
|
+
parent: @parent,
|
191
|
+
root: @root,
|
192
|
+
**params
|
193
|
+
).execute!.tap do |schema,|
|
194
|
+
@defined_used << prop_name
|
195
|
+
@defined[prop_name] = schema
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
@@ -0,0 +1,272 @@
|
|
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
|