From df4d69af0ae75b2953d9e56e9232855459285d6d Mon Sep 17 00:00:00 2001 From: Abdulla Abdurakhmanov Date: Tue, 2 Aug 2022 21:11:47 +0200 Subject: [PATCH] Release v1 (#137) * Preparing release v1 * Feature rename * Updated docs * Updated docs * Example updates * GitHub actions fixes * Docs updates --- .github/workflows/tests.yml | 2 +- Cargo.toml | 107 +++++++++++++++++- README.md | 2 +- docs/src/block-kit-support.md | 10 +- docs/src/events-api.md | 8 +- docs/src/getting-started.md | 19 +--- docs/src/intro.md | 10 +- docs/src/pagination-support.md | 6 +- docs/src/rate-control-and-retries.md | 1 - docs/src/send-webhooks-messages.md | 1 - docs/src/socket-mode.md | 1 - docs/src/web-api.md | 11 +- {src/hyper/examples => examples}/client.rs | 1 - .../events_api_server.rs | 1 - .../examples => examples}/proxy_client.rs | 1 - .../rate_control_client.rs | 1 - .../examples => examples}/socket_mode.rs | 1 - .../examples => examples}/state_management.rs | 1 - .../examples => examples}/webhook_message.rs | 4 +- src/{client/src => }/api/apps.rs | 2 +- src/{client/src => }/api/auth.rs | 2 +- src/{client/src => }/api/bots.rs | 2 +- src/{client/src => }/api/chat.rs | 4 +- src/{client/src => }/api/conversations.rs | 2 +- src/{client/src => }/api/mod.rs | 0 src/{client/src => }/api/oauth.rs | 2 +- src/{client/src => }/api/team.rs | 2 +- src/{client/src => }/api/test.rs | 0 src/{client/src => }/api/users.rs | 2 +- src/{client/src => }/api/views.rs | 4 +- src/{client/src => }/api/webhook.rs | 2 +- src/axum_support/mod.rs | 0 src/{client/src => }/client.rs | 2 +- src/client/Cargo.toml | 48 -------- src/client/src/prelude.rs | 8 -- src/{client/src => }/errors.rs | 0 src/hyper/Cargo.toml | 57 ---------- src/{hyper/src => hyper_tokio}/connector.rs | 15 +-- .../listener/command_events.rs | 16 ++- .../listener/interaction_events.rs | 16 +-- .../src => hyper_tokio}/listener/mod.rs | 5 +- .../src => hyper_tokio}/listener/oauth.rs | 12 +- .../listener/push_events.rs | 15 +-- src/{hyper/src/lib.rs => hyper_tokio/mod.rs} | 12 +- src/{hyper/src => hyper_tokio}/ratectl/mod.rs | 4 +- .../src => hyper_tokio}/scroller_ext.rs | 5 +- .../src => hyper_tokio}/socket_mode/mod.rs | 11 +- .../socket_mode/tokio_clients_manager.rs | 12 +- .../socket_mode/tungstenite_wss_client.rs | 8 +- src/{client/src => }/lib.rs | 18 ++- src/{client/src => }/listener.rs | 2 +- src/models/Cargo.toml | 30 ----- src/models/{src => }/apps/manifest.rs | 0 src/models/{src => }/apps/mod.rs | 0 src/models/{src => }/blocks/datetime.rs | 0 src/models/{src => }/blocks/dsl.rs | 0 src/models/{src => }/blocks/kit.rs | 2 +- src/models/{src => }/blocks/mod.rs | 0 src/models/{src => }/blocks/view.rs | 2 +- src/models/{src => }/common/bot.rs | 2 +- src/models/{src => }/common/channel.rs | 3 +- src/models/{src => }/common/formatters.rs | 0 src/models/{src => }/common/icon.rs | 0 src/models/{src => }/common/mod.rs | 0 src/models/{src => }/common/reaction.rs | 2 +- src/models/{src => }/common/team.rs | 3 +- src/models/{src => }/common/user.rs | 4 +- src/models/{src => }/events/authorization.rs | 0 src/models/{src => }/events/command.rs | 0 src/models/{src => }/events/interaction.rs | 4 +- src/models/{src => }/events/mod.rs | 0 src/models/{src => }/events/push.rs | 4 +- src/models/{src => }/files/mod.rs | 0 src/models/{src => }/messages/mod.rs | 2 +- src/models/{src => }/messages/templates.rs | 0 src/models/{src/lib.rs => mod.rs} | 0 src/models/{src => }/socket_mode/mod.rs | 2 +- src/prelude.rs | 11 ++ src/{client/src => }/ratectl/config.rs | 0 src/{client/src => }/ratectl/limit.rs | 0 src/{client/src => }/ratectl/mod.rs | 0 src/{client/src => }/ratectl/special_limit.rs | 0 src/{client/src => }/ratectl/team_limits.rs | 0 src/{client/src => }/ratectl/throttler.rs | 2 +- .../src => }/ratectl/throttling_counter.rs | 0 src/{client/src => }/ratectl/tier.rs | 0 src/{client/src => }/scroller.rs | 0 src/{client/src => }/signature_verifier.rs | 2 +- src/{client/src => }/socket_mode/callbacks.rs | 8 +- .../src => }/socket_mode/clients_manager.rs | 0 .../socket_mode/clients_manager_listener.rs | 3 +- src/{client/src => }/socket_mode/config.rs | 0 src/{client/src => }/socket_mode/listener.rs | 0 src/{client/src => }/socket_mode/mod.rs | 0 .../src => }/socket_mode/wss_client_id.rs | 0 src/{client/src => }/token.rs | 2 +- 96 files changed, 240 insertions(+), 326 deletions(-) rename {src/hyper/examples => examples}/client.rs (99%) rename {src/hyper/examples => examples}/events_api_server.rs (99%) rename {src/hyper/examples => examples}/proxy_client.rs (96%) rename {src/hyper/examples => examples}/rate_control_client.rs (97%) rename {src/hyper/examples => examples}/socket_mode.rs (99%) rename {src/hyper/examples => examples}/state_management.rs (99%) rename {src/hyper/examples => examples}/webhook_message.rs (97%) rename src/{client/src => }/api/apps.rs (99%) rename src/{client/src => }/api/auth.rs (97%) rename src/{client/src => }/api/bots.rs (97%) rename src/{client/src => }/api/chat.rs (99%) rename src/{client/src => }/api/conversations.rs (99%) rename src/{client/src => }/api/mod.rs (100%) rename src/{client/src => }/api/oauth.rs (98%) rename src/{client/src => }/api/team.rs (98%) rename src/{client/src => }/api/test.rs (100%) rename src/{client/src => }/api/users.rs (99%) rename src/{client/src => }/api/views.rs (97%) rename src/{client/src => }/api/webhook.rs (98%) create mode 100644 src/axum_support/mod.rs rename src/{client/src => }/client.rs (99%) delete mode 100644 src/client/Cargo.toml delete mode 100644 src/client/src/prelude.rs rename src/{client/src => }/errors.rs (100%) delete mode 100644 src/hyper/Cargo.toml rename src/{hyper/src => hyper_tokio}/connector.rs (97%) rename src/{hyper/src => hyper_tokio}/listener/command_events.rs (95%) rename src/{hyper/src => hyper_tokio}/listener/interaction_events.rs (95%) rename src/{hyper/src => hyper_tokio}/listener/mod.rs (89%) rename src/{hyper/src => hyper_tokio}/listener/oauth.rs (96%) rename src/{hyper/src => hyper_tokio}/listener/push_events.rs (95%) rename src/{hyper/src/lib.rs => hyper_tokio/mod.rs} (76%) rename src/{hyper/src => hyper_tokio}/ratectl/mod.rs (97%) rename src/{hyper/src => hyper_tokio}/scroller_ext.rs (92%) rename src/{hyper/src => hyper_tokio}/socket_mode/mod.rs (63%) rename src/{hyper/src => hyper_tokio}/socket_mode/tokio_clients_manager.rs (93%) rename src/{hyper/src => hyper_tokio}/socket_mode/tungstenite_wss_client.rs (99%) rename src/{client/src => }/lib.rs (90%) rename src/{client/src => }/listener.rs (98%) delete mode 100644 src/models/Cargo.toml rename src/models/{src => }/apps/manifest.rs (100%) rename src/models/{src => }/apps/mod.rs (100%) rename src/models/{src => }/blocks/datetime.rs (100%) rename src/models/{src => }/blocks/dsl.rs (100%) rename src/models/{src => }/blocks/kit.rs (99%) rename src/models/{src => }/blocks/mod.rs (100%) rename src/models/{src => }/blocks/view.rs (98%) rename src/models/{src => }/common/bot.rs (95%) rename src/models/{src => }/common/channel.rs (98%) rename src/models/{src => }/common/formatters.rs (100%) rename src/models/{src => }/common/icon.rs (100%) rename src/models/{src => }/common/mod.rs (100%) rename src/models/{src => }/common/reaction.rs (93%) rename src/models/{src => }/common/team.rs (97%) rename src/models/{src => }/common/user.rs (97%) rename src/models/{src => }/events/authorization.rs (100%) rename src/models/{src => }/events/command.rs (100%) rename src/models/{src => }/events/interaction.rs (98%) rename src/models/{src => }/events/mod.rs (100%) rename src/models/{src => }/events/push.rs (99%) rename src/models/{src => }/files/mod.rs (100%) rename src/models/{src => }/messages/mod.rs (99%) rename src/models/{src => }/messages/templates.rs (100%) rename src/models/{src/lib.rs => mod.rs} (100%) rename src/models/{src => }/socket_mode/mod.rs (99%) create mode 100644 src/prelude.rs rename src/{client/src => }/ratectl/config.rs (100%) rename src/{client/src => }/ratectl/limit.rs (100%) rename src/{client/src => }/ratectl/mod.rs (100%) rename src/{client/src => }/ratectl/special_limit.rs (100%) rename src/{client/src => }/ratectl/team_limits.rs (100%) rename src/{client/src => }/ratectl/throttler.rs (99%) rename src/{client/src => }/ratectl/throttling_counter.rs (100%) rename src/{client/src => }/ratectl/tier.rs (100%) rename src/{client/src => }/scroller.rs (100%) rename src/{client/src => }/signature_verifier.rs (99%) rename src/{client/src => }/socket_mode/callbacks.rs (94%) rename src/{client/src => }/socket_mode/clients_manager.rs (100%) rename src/{client/src => }/socket_mode/clients_manager_listener.rs (98%) rename src/{client/src => }/socket_mode/config.rs (100%) rename src/{client/src => }/socket_mode/listener.rs (100%) rename src/{client/src => }/socket_mode/mod.rs (100%) rename src/{client/src => }/socket_mode/wss_client_id.rs (100%) rename src/{client/src => }/token.rs (95%) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8aed211..c3da980 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,4 +13,4 @@ jobs: profile: minimal toolchain: stable components: rustfmt, clippy - - run: cargo fmt -- --check && cargo clippy -- -Dwarnings && cargo test + - run: cargo fmt -- --check && cargo clippy --all-features -- -Dwarnings && cargo test --all-features diff --git a/Cargo.toml b/Cargo.toml index 8c23b8b..39a5867 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,102 @@ -[workspace] +[package] +name = "slack-morphism" +version = "1.0.0" +authors = ["Abdulla Abdurakhmanov "] +edition = "2021" +license = "Apache-2.0" +description = "Slack Morphism is a modern client library for Slack Web/Events API/Socket Mode and Block Kit" +homepage = "https://github.com/abdolence/slack-morphism-rust" +repository = "https://github.com/abdolence/slack-morphism-rust" +documentation = "https://docs.rs/slack_morphism" +keywords = ["slack", "client"] +categories = ["api-bindings"] +readme = "README.md" +include = ["Cargo.toml", "src/**/*.rs", "README.md", "LICENSE", "SECURITY.md"] -members = [ - "src/models", - "src/client", - "src/hyper" -] +[badges] +maintenance = { status = "actively-developed" } + +[lib] +name = "slack_morphism" +path = "src/lib.rs" + +[features] +default = [] +hyper = ["dep:tokio","dep:hyper", "dep:hyper-rustls", "dep:tokio-stream","dep:tokio-tungstenite", "dep:tokio-tungstenite", "dep:signal-hook", "dep:signal-hook-tokio"] +axum = ["hyper", "dep:axum"] + +[dependencies] +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +serde_with = { version = "1.14", features = ["json"] } +rvstruct = "0.3" +rsb_derive = "0.5" +futures = "0.3" +futures-util = "0.3" +futures-locks = "0.7" +base64 = "0.13" +hex = "0.4" +tracing = "0.1" +ring = "0.16" +lazy_static = "1.4" +http = "0.2" +async-trait = "0.1" +bytes = "1.2" +rand = "0.8" +async-recursion="1.0" +mime = "0.3" +chrono = { version = "0.4", features = ["serde"] } +url = { version = "2.2", features = ["serde"]} +hyper = { version ="0.14", features = ["full"], optional = true } +tokio = { version = "1.20", features = ["full"], optional = true } +tokio-stream = { version = "0.1.9", optional = true } +hyper-rustls = { version="0.23", features = ["rustls-native-certs", "http2"], optional = true } +tokio-tungstenite = { version = "0.17.2", features = ["rustls-tls-native-roots"], optional = true } +signal-hook = { version = "0.3.14", features = ["extended-siginfo"], optional = true} +signal-hook-tokio = { version = "0.3.1", features = ["futures-v0_3"], optional = true } +axum = { version = "0.5", optional = true } + +[dev-dependencies] +cargo-husky = { version = "1", default-features = false, features = ["run-for-all", "prepush-hook", "run-cargo-fmt"] } +cargo-audit = "0.17" +tracing-subscriber = { version ="0.3", features = ["env-filter"] } +hyper-proxy = "0.9" +hyper = { version ="0.14", features = ["full"] } + +[package.metadata.release] +tag-prefix="" + +[[example]] +name = "client" +path = "examples/client.rs" +required-features = ["hyper"] + +[[example]] +name = "events_api_server" +path = "examples/events_api_server.rs" +required-features = ["hyper"] + +[[example]] +name = "proxy_client" +path = "examples/proxy_client.rs" +required-features = ["hyper"] + +[[example]] +name = "rate_control_client" +path = "examples/rate_control_client.rs" +required-features = ["hyper"] + +[[example]] +name = "socket_mode" +path = "examples/socket_mode.rs" +required-features = ["hyper"] + +[[example]] +name = "state_management" +path = "examples/state_management.rs" +required-features = ["hyper"] + +[[example]] +name = "webhook_message" +path = "examples/webhook_message.rs" +required-features = ["hyper"] diff --git a/README.md b/README.md index 9f50931..67ed718 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Please follow to the official website: https://slack-rust.abdolence.dev. ## Examples -https://github.com/abdolence/slack-morphism-rust/tree/master/src/hyper/examples +https://github.com/abdolence/slack-morphism-rust/tree/master/examples The examples require to work the following environment variables (from your Slack bot profile in api.slack.com): diff --git a/docs/src/block-kit-support.md b/docs/src/block-kit-support.md index 16ea32b..14372a3 100644 --- a/docs/src/block-kit-support.md +++ b/docs/src/block-kit-support.md @@ -24,8 +24,7 @@ Let’s take some very simple block example: Now, let’s look at how it looks with type-safe code using Slack Morphism Blocks macro support: ```rust,noplaypen -use slack_morphism_models::*; -use slack_morphism_models::blocks::*; +use slack_morphism::prelude::*; let blocks : Vec = slack_blocks![ some_into( @@ -39,12 +38,7 @@ Let’s look at another more complex example for welcoming message: ```rust,noplaypen -use slack_morphism::*; -use slack_morphism::api::*; -use slack_morphism_models::*; -use slack_morphism_models::blocks::*; - -use slack_morphism_hyper::*; +use slack_morphism::prelude::*; async fn example() -> Result<(), Box> { diff --git a/docs/src/events-api.md b/docs/src/events-api.md index 4955f08..8cf22ab 100644 --- a/docs/src/events-api.md +++ b/docs/src/events-api.md @@ -18,13 +18,7 @@ To create a server, you need hyper `make_service_fn` and `service_fn`. ## Example ```rust,noplaypen -use slack_morphism::api::*; -use slack_morphism::listener::*; -use slack_morphism::*; -use slack_morphism_models::*; - -// Slack Morphism Hyper/Tokio support -use slack_morphism_hyper::*; +use slack_morphism::prelude::*; // Hyper imports use hyper::service::{make_service_fn, service_fn}; diff --git a/docs/src/getting-started.md b/docs/src/getting-started.md index 30491e6..4717a39 100644 --- a/docs/src/getting-started.md +++ b/docs/src/getting-started.md @@ -4,28 +4,13 @@ Cargo.toml dependencies example: ```toml [dependencies] -slack-morphism="0.41" -slack-morphism-models="0.41" -slack-morphism-hyper="0.41" +slack-morphism= { version = "1.0", features = ["hyper"] } ``` All imports you need: ```rust,noplaypen use slack_morphism::prelude::*; -use slack_morphism_hyper::*; -``` - -or more granularly: -```rust,noplaypen -use slack_morphism::*; // access to network/client functions -use slack_morphism::api::*; // Slack Web API methods (chat, users, views, etc) -use slack_morphism::listener::*; // Slack Events API listener (routes) implementation -use slack_morphism_models::*; // common Slack models like SlackUser, etc and macros -use slack_morphism_models::blocks::*; // Slack Block Kit models -use slack_morphism_models::events::*; // Slack Events Models - -use slack_morphism_hyper::*; // Hyper/Tokio client implementation ``` ## Ready to use examples @@ -33,4 +18,4 @@ use slack_morphism_hyper::*; // Hyper/Tokio client implementation - Events API server example - Slack Web API client with Socket Mode -You can find them on [github](https://github.com/abdolence/slack-morphism-rust/tree/master/src/hyper/examples) +You can find them on [github](https://github.com/abdolence/slack-morphism-rust/tree/master/examples) diff --git a/docs/src/intro.md b/docs/src/intro.md index 0d86c2b..036cef1 100644 --- a/docs/src/intro.md +++ b/docs/src/intro.md @@ -14,7 +14,9 @@ in asynchronous manner. ## Modular design -This library provided as multiple modules: -- `slack-morphism-models`, gives you access to all type/models definitions that used for Slack Web/Events APIs. -- `slack-morphism`, base module to support frameworks-agnostic client, that doesn't have any dependency to any HTTP/async library itself, and you can implement binding to any library you want. -- `slack-morphism-hyper`, Slack client support/binding for Hyper/Tokio/Tungstenite. +Base crate to support frameworks-agnostic client and that doesn't have any dependency to any HTTP/async library itself, and you can implement binding to any library you want. +Includes also all type/models definitions that used for Slack Web/Events APIs. + +This library provided the following features: +- `hyper`: Slack client support/binding for Hyper/Tokio/Tungstenite. +- `axum`: Slack client support/binding for [axum framework](https://github.com/tokio-rs/axum) support (WIP, will be available in next releases). diff --git a/docs/src/pagination-support.md b/docs/src/pagination-support.md index 347a440..d3bdf49 100644 --- a/docs/src/pagination-support.md +++ b/docs/src/pagination-support.md @@ -11,10 +11,8 @@ For example for `users.list`: ```rust,noplaypen -use slack_morphism::*; -use slack_morphism::api::*; -use slack_morphism_models::*; -use slack_morphism_hyper::*; +use slack_morphism::prelude::*; + use std::time::Duration; async fn example() -> Result<(), Box> { diff --git a/docs/src/rate-control-and-retries.md b/docs/src/rate-control-and-retries.md index e1bd3ea..03732ba 100644 --- a/docs/src/rate-control-and-retries.md +++ b/docs/src/rate-control-and-retries.md @@ -7,7 +7,6 @@ By default, throttler *isn't* enabled, so you should enable it explicitly: ```rust,noplaypen use slack_morphism::prelude::*; -use slack_morphism_hyper::*; let client = SlackClient::new( SlackClientHyperConnector::new() diff --git a/docs/src/send-webhooks-messages.md b/docs/src/send-webhooks-messages.md index 8077270..3bd2b2a 100644 --- a/docs/src/send-webhooks-messages.md +++ b/docs/src/send-webhooks-messages.md @@ -5,7 +5,6 @@ You can use `client..post_webhook_message` to post [Slack Incoming Webhook](http ```rust,noplaypen use slack_morphism::prelude::*; -use slack_morphism_hyper::*; use url::Url; let client = SlackClient::new(SlackClientHyperConnector::new()); diff --git a/docs/src/socket-mode.md b/docs/src/socket-mode.md index a11134d..64fbd27 100644 --- a/docs/src/socket-mode.md +++ b/docs/src/socket-mode.md @@ -11,7 +11,6 @@ and don't want to work with HTTP endpoints yourself. ```rust,noplaypen use slack_morphism::prelude::*; -use slack_morphism_hyper::*; async fn test_interaction_events_function( event: SlackInteractionEvent, diff --git a/docs/src/web-api.md b/docs/src/web-api.md index 165eb96..cbe856f 100644 --- a/docs/src/web-api.md +++ b/docs/src/web-api.md @@ -3,9 +3,7 @@ ## Create a client instance ```rust,noplaypen -use slack_morphism::*; -// Slack Morphism Hyper/Tokio support -use slack_morphism_hyper::*; +use slack_morphism::prelude::*; let client = SlackClient::new( SlackClientHyperConnector::new() ); @@ -23,12 +21,7 @@ You should securely and properly store all of Slack tokens. ```rust,noplaypen -use slack_morphism::*; -use slack_morphism::api::*; -use slack_morphism_models::*; - -// Slack Morphism Hyper/Tokio support -use slack_morphism_hyper::*; +use slack_morphism::prelude::*; async fn example() -> Result<(), Box> { diff --git a/src/hyper/examples/client.rs b/examples/client.rs similarity index 99% rename from src/hyper/examples/client.rs rename to examples/client.rs index f0018bc..df50ca3 100644 --- a/src/hyper/examples/client.rs +++ b/examples/client.rs @@ -1,6 +1,5 @@ use chrono::prelude::*; use slack_morphism::prelude::*; -use slack_morphism_hyper::*; use rsb_derive::Builder; diff --git a/src/hyper/examples/events_api_server.rs b/examples/events_api_server.rs similarity index 99% rename from src/hyper/examples/events_api_server.rs rename to examples/events_api_server.rs index f699732..97edb13 100644 --- a/src/hyper/examples/events_api_server.rs +++ b/examples/events_api_server.rs @@ -1,5 +1,4 @@ use slack_morphism::prelude::*; -use slack_morphism_hyper::*; use hyper::service::{make_service_fn, service_fn}; use hyper::{Body, Request, Response}; diff --git a/src/hyper/examples/proxy_client.rs b/examples/proxy_client.rs similarity index 96% rename from src/hyper/examples/proxy_client.rs rename to examples/proxy_client.rs index f3527c9..4e5accb 100644 --- a/src/hyper/examples/proxy_client.rs +++ b/examples/proxy_client.rs @@ -1,5 +1,4 @@ use slack_morphism::prelude::*; -use slack_morphism_hyper::*; use hyper_proxy::{Intercept, Proxy, ProxyConnector}; diff --git a/src/hyper/examples/rate_control_client.rs b/examples/rate_control_client.rs similarity index 97% rename from src/hyper/examples/rate_control_client.rs rename to examples/rate_control_client.rs index 3645036..f5a7f9e 100644 --- a/src/hyper/examples/rate_control_client.rs +++ b/examples/rate_control_client.rs @@ -1,5 +1,4 @@ use slack_morphism::prelude::*; -use slack_morphism_hyper::*; use tracing::*; async fn test_rate_control_client() -> Result<(), Box> { diff --git a/src/hyper/examples/socket_mode.rs b/examples/socket_mode.rs similarity index 99% rename from src/hyper/examples/socket_mode.rs rename to examples/socket_mode.rs index 251da0b..90850bd 100644 --- a/src/hyper/examples/socket_mode.rs +++ b/examples/socket_mode.rs @@ -1,5 +1,4 @@ use slack_morphism::prelude::*; -use slack_morphism_hyper::*; use std::sync::Arc; diff --git a/src/hyper/examples/state_management.rs b/examples/state_management.rs similarity index 99% rename from src/hyper/examples/state_management.rs rename to examples/state_management.rs index 18cb3c8..1ad3a89 100644 --- a/src/hyper/examples/state_management.rs +++ b/examples/state_management.rs @@ -1,5 +1,4 @@ use slack_morphism::prelude::*; -use slack_morphism_hyper::*; use std::sync::Arc; diff --git a/src/hyper/examples/webhook_message.rs b/examples/webhook_message.rs similarity index 97% rename from src/hyper/examples/webhook_message.rs rename to examples/webhook_message.rs index ee0ff63..9b00df9 100644 --- a/src/hyper/examples/webhook_message.rs +++ b/examples/webhook_message.rs @@ -1,7 +1,5 @@ -use url::Url; - use slack_morphism::prelude::*; -use slack_morphism_hyper::*; +use url::Url; async fn test_webhook_message() -> Result<(), Box> { let client = SlackClient::new(SlackClientHyperConnector::new()); diff --git a/src/client/src/api/apps.rs b/src/api/apps.rs similarity index 99% rename from src/client/src/api/apps.rs rename to src/api/apps.rs index ea41000..2b1905c 100644 --- a/src/client/src/api/apps.rs +++ b/src/api/apps.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; use url::Url; -use slack_morphism_models::*; +use crate::*; use crate::ratectl::*; use crate::SlackClientSession; diff --git a/src/client/src/api/auth.rs b/src/api/auth.rs similarity index 97% rename from src/client/src/api/auth.rs rename to src/api/auth.rs index 0fe603f..0a9abeb 100644 --- a/src/client/src/api/auth.rs +++ b/src/api/auth.rs @@ -8,9 +8,9 @@ use serde_with::skip_serializing_none; use crate::ratectl::*; use crate::SlackClientSession; +use crate::*; use crate::{ClientResult, SlackClientHttpConnector}; use lazy_static::lazy_static; -use slack_morphism_models::*; impl<'a, SCHC> SlackClientSession<'a, SCHC> where diff --git a/src/client/src/api/bots.rs b/src/api/bots.rs similarity index 97% rename from src/client/src/api/bots.rs rename to src/api/bots.rs index d69ee45..6414684 100644 --- a/src/client/src/api/bots.rs +++ b/src/api/bots.rs @@ -8,8 +8,8 @@ use serde_with::skip_serializing_none; use crate::ratectl::SLACK_TIER3_METHOD_CONFIG; use crate::SlackClientSession; +use crate::*; use crate::{ClientResult, SlackClientHttpConnector}; -use slack_morphism_models::*; impl<'a, SCHC> SlackClientSession<'a, SCHC> where diff --git a/src/client/src/api/chat.rs b/src/api/chat.rs similarity index 99% rename from src/client/src/api/chat.rs rename to src/api/chat.rs index 4fa1119..2ed5ff7 100644 --- a/src/client/src/api/chat.rs +++ b/src/api/chat.rs @@ -7,14 +7,14 @@ use rvstruct::*; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; +use crate::models::blocks::{SlackBlock, SlackBlockText}; +use crate::models::*; use crate::ratectl::*; use crate::scroller::*; use crate::SlackClientSession; use crate::{ClientResult, SlackClientHttpConnector}; use futures::future::{BoxFuture, FutureExt}; use lazy_static::lazy_static; -use slack_morphism_models::blocks::{SlackBlock, SlackBlockText}; -use slack_morphism_models::*; use std::collections::HashMap; use url::Url; diff --git a/src/client/src/api/conversations.rs b/src/api/conversations.rs similarity index 99% rename from src/client/src/api/conversations.rs rename to src/api/conversations.rs index 5df1175..f56bbf6 100644 --- a/src/client/src/api/conversations.rs +++ b/src/api/conversations.rs @@ -7,10 +7,10 @@ use rvstruct::ValueStruct; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; +use crate::models::*; use crate::ratectl::*; use crate::*; use futures::future::{BoxFuture, FutureExt}; -use slack_morphism_models::*; use std::collections::HashSet; impl<'a, SCHC> SlackClientSession<'a, SCHC> diff --git a/src/client/src/api/mod.rs b/src/api/mod.rs similarity index 100% rename from src/client/src/api/mod.rs rename to src/api/mod.rs diff --git a/src/client/src/api/oauth.rs b/src/api/oauth.rs similarity index 98% rename from src/client/src/api/oauth.rs rename to src/api/oauth.rs index cdd273f..3fde2eb 100644 --- a/src/client/src/api/oauth.rs +++ b/src/api/oauth.rs @@ -9,8 +9,8 @@ use serde_with::skip_serializing_none; use std::fmt; use crate::client::*; +use crate::models::*; use crate::token::*; -use slack_morphism_models::*; use url::Url; impl SlackClient diff --git a/src/client/src/api/team.rs b/src/api/team.rs similarity index 98% rename from src/client/src/api/team.rs rename to src/api/team.rs index d22e842..6ad4f47 100644 --- a/src/client/src/api/team.rs +++ b/src/api/team.rs @@ -6,10 +6,10 @@ use rsb_derive::Builder; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; +use crate::models::*; use crate::ratectl::*; use crate::SlackClientSession; use crate::{ClientResult, SlackClientHttpConnector}; -use slack_morphism_models::*; impl<'a, SCHC> SlackClientSession<'a, SCHC> where diff --git a/src/client/src/api/test.rs b/src/api/test.rs similarity index 100% rename from src/client/src/api/test.rs rename to src/api/test.rs diff --git a/src/client/src/api/users.rs b/src/api/users.rs similarity index 99% rename from src/client/src/api/users.rs rename to src/api/users.rs index 920da15..a0926e6 100644 --- a/src/client/src/api/users.rs +++ b/src/api/users.rs @@ -7,12 +7,12 @@ use rvstruct::ValueStruct; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; +use crate::models::*; use crate::ratectl::*; use crate::scroller::*; use crate::SlackClientSession; use crate::{ClientResult, SlackClientHttpConnector}; use futures::future::{BoxFuture, FutureExt}; -use slack_morphism_models::*; impl<'a, SCHC> SlackClientSession<'a, SCHC> where diff --git a/src/client/src/api/views.rs b/src/api/views.rs similarity index 97% rename from src/client/src/api/views.rs rename to src/api/views.rs index 2fcc1b3..9eced4f 100644 --- a/src/client/src/api/views.rs +++ b/src/api/views.rs @@ -6,11 +6,11 @@ use rsb_derive::Builder; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; +use crate::models::blocks::*; +use crate::models::*; use crate::ratectl::*; use crate::SlackClientSession; use crate::{ClientResult, SlackClientHttpConnector}; -use slack_morphism_models::blocks::*; -use slack_morphism_models::*; impl<'a, SCHC> SlackClientSession<'a, SCHC> where diff --git a/src/client/src/api/webhook.rs b/src/api/webhook.rs similarity index 98% rename from src/client/src/api/webhook.rs rename to src/api/webhook.rs index 6e1551f..c12a68a 100644 --- a/src/client/src/api/webhook.rs +++ b/src/api/webhook.rs @@ -8,11 +8,11 @@ use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; use url::Url; +use crate::models::*; use crate::ratectl::*; use crate::SlackClient; use crate::{ClientResult, SlackClientHttpConnector}; use rvstruct::ValueStruct; -use slack_morphism_models::*; impl SlackClient where diff --git a/src/axum_support/mod.rs b/src/axum_support/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/client/src/client.rs b/src/client.rs similarity index 99% rename from src/client/src/client.rs rename to src/client.rs index 08673bf..2acd3aa 100644 --- a/src/client/src/client.rs +++ b/src/client.rs @@ -4,10 +4,10 @@ use std::sync::Arc; use crate::token::*; use crate::errors::SlackClientError; +use crate::models::*; use crate::ratectl::SlackApiMethodRateControlConfig; use futures_util::future::BoxFuture; use lazy_static::*; -use slack_morphism_models::{SlackClientId, SlackClientSecret}; use url::Url; #[derive(Debug)] diff --git a/src/client/Cargo.toml b/src/client/Cargo.toml deleted file mode 100644 index d37ef04..0000000 --- a/src/client/Cargo.toml +++ /dev/null @@ -1,48 +0,0 @@ -[package] -name = "slack-morphism" -version = "0.42.0" -authors = ["Abdulla Abdurakhmanov "] -edition = "2021" -license = "Apache-2.0" -description = "Slack Morphism is a modern client library for Slack Web/Events API/Socket Mode and Block Kit" -homepage = "https://github.com/abdolence/slack-morphism-rust" -repository = "https://github.com/abdolence/slack-morphism-rust" -documentation = "https://docs.rs/slack_morphism" -keywords = ["slack", "client"] -categories = ["api-bindings"] -readme = "../../README.md" -include = ["Cargo.toml", "src/**/*.rs", "../../README.md", "../../LICENSE"] - -[badges] -maintenance = { status = "actively-developed" } - - -[lib] -name = "slack_morphism" -path = "src/lib.rs" - -[dependencies] -slack-morphism-models = { path = "../models", version = "^0.42.0"} -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -serde_with = { version = "1.14", features = ["json"] } -rvstruct = "0.3" -rsb_derive = "0.5" -url = "2.2" -futures = "0.3" -futures-util = "0.3" -futures-locks = "0.7" -base64 = "0.13" -hex = "0.4" -tracing = "0.1" -ring = "0.16" -lazy_static = "1.4" -http = "0.2" -async-trait = "0.1" - -[dev-dependencies] -cargo-husky = { version = "1", default-features = false, features = ["run-for-all", "prepush-hook", "run-cargo-fmt"] } -cargo-audit = "0.17" - -[package.metadata.release] -tag-prefix="" diff --git a/src/client/src/prelude.rs b/src/client/src/prelude.rs deleted file mode 100644 index 5c54eff..0000000 --- a/src/client/src/prelude.rs +++ /dev/null @@ -1,8 +0,0 @@ -pub use super::api::*; // Slack Web API methods (chat, users, views, etc) -pub use super::listener::*; -pub use super::ratectl::*; -pub use super::*; // access to network/client functions // Slack Events API listener (routes) implementation - -pub use slack_morphism_models::blocks::*; // Slack Block Kit models -pub use slack_morphism_models::events::*; -pub use slack_morphism_models::*; // common Slack models like SlackUser, etc and macros // Slack Events Models diff --git a/src/client/src/errors.rs b/src/errors.rs similarity index 100% rename from src/client/src/errors.rs rename to src/errors.rs diff --git a/src/hyper/Cargo.toml b/src/hyper/Cargo.toml deleted file mode 100644 index d451ea5..0000000 --- a/src/hyper/Cargo.toml +++ /dev/null @@ -1,57 +0,0 @@ -[package] -name = "slack-morphism-hyper" -version = "0.42.0" -authors = ["Abdulla Abdurakhmanov "] -edition = "2021" -license = "Apache-2.0" -description = "Slack Morphism Hyper/Tokio support library" -homepage = "https://github.com/abdolence/slack-morphism-rust" -repository = "https://github.com/abdolence/slack-morphism-rust" -documentation = "https://docs.rs/slack_morphism" -keywords = ["slack", "client"] -categories = ["api-bindings"] -readme = "../../README.md" -include = ["Cargo.toml", "src/**/*.rs", "../../README.md", "../../LICENSE"] - -[lib] -name = "slack_morphism_hyper" -path = "src/lib.rs" - -[dependencies] -slack-morphism = { path = "../client", version = "^0.42.0"} -slack-morphism-models = { path = "../models", version = "^0.42.0"} -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -serde_with = "1.14" -rvstruct = "0.3" -rsb_derive = "0.5" -hyper = { version ="0.14", features = ["full"] } -tokio = { version = "1.20", features = ["full"] } -tokio-stream = { version = "0.1.9" } -hyper-rustls = { version="0.23", features = ["rustls-native-certs", "http2"] } -url = { version = "2.2", features = ["serde"]} -mime = "0.3" -futures = "0.3" -futures-util = "0.3" -bytes = "1.2" -base64 = "0.13" -hex = "0.4" -tracing = "0.1" -ring = "0.16" -lazy_static = "1.4" -async-trait = "0.1.56" -http = "0.2" -tokio-tungstenite = { version = "0.17.2", features = ["rustls-tls-native-roots"] } -rand = "0.8.5" -async-recursion="1.0.0" -signal-hook = { version = "0.3.14", features = ["extended-siginfo"]} -signal-hook-tokio = { version = "0.3.1", features = ["futures-v0_3"] } - -[dev-dependencies] -chrono = { version = "0.4", features = ["serde"] } -tracing-subscriber = { version ="0.3", features = ["env-filter"] } -hyper-proxy = "0.9" -cargo-audit = "0.17" - -[package.metadata.release] -disable-tag=true diff --git a/src/hyper/src/connector.rs b/src/hyper_tokio/connector.rs similarity index 97% rename from src/hyper/src/connector.rs rename to src/hyper_tokio/connector.rs index dd922a4..2524b33 100644 --- a/src/hyper/src/connector.rs +++ b/src/hyper_tokio/connector.rs @@ -1,4 +1,9 @@ -use crate::ratectl::SlackTokioRateController; +use crate::errors::*; +use crate::hyper_tokio::ratectl::SlackTokioRateController; +use crate::models::{SlackClientId, SlackClientSecret}; +use crate::signature_verifier::SlackEventAbsentSignatureError; +use crate::signature_verifier::SlackEventSignatureVerifier; +use crate::*; use async_recursion::async_recursion; use bytes::Buf; use futures::future::TryFutureExt; @@ -10,12 +15,8 @@ use hyper::{Body, Request, Response, Uri}; use hyper_rustls::HttpsConnector; use mime::Mime; use rvstruct::ValueStruct; -use slack_morphism::errors::*; -use slack_morphism::prelude::{SlackApiMethodRateControlConfig, SlackApiRateControlConfig}; -use slack_morphism::signature_verifier::SlackEventAbsentSignatureError; -use slack_morphism::signature_verifier::SlackEventSignatureVerifier; -use slack_morphism::*; -use slack_morphism_models::{SlackClientId, SlackClientSecret}; + +use crate::ratectl::{SlackApiMethodRateControlConfig, SlackApiRateControlConfig}; use std::collections::HashMap; use std::io::Read; use std::sync::Arc; diff --git a/src/hyper/src/listener/command_events.rs b/src/hyper_tokio/listener/command_events.rs similarity index 95% rename from src/hyper/src/listener/command_events.rs rename to src/hyper_tokio/listener/command_events.rs index c1261e6..7139764 100644 --- a/src/hyper/src/listener/command_events.rs +++ b/src/hyper_tokio/listener/command_events.rs @@ -1,17 +1,15 @@ -use crate::listener::SlackClientEventsHyperListener; - -use crate::connector::SlackClientHyperConnector; -use slack_morphism::errors::*; -use slack_morphism::listener::*; -use slack_morphism::signature_verifier::SlackEventSignatureVerifier; +use crate::errors::*; +use crate::hyper_tokio::connector::SlackClientHyperConnector; +use crate::listener::*; +use crate::signature_verifier::SlackEventSignatureVerifier; +use crate::hyper_tokio::*; +pub use crate::models::events::*; +pub use crate::models::SlackResponseUrl; use futures::future::{BoxFuture, FutureExt, TryFutureExt}; use hyper::body::*; use hyper::client::connect::Connect; use hyper::{Method, Request, Response, StatusCode}; -use slack_morphism::UserCallbackResult; -pub use slack_morphism_models::events::*; -pub use slack_morphism_models::SlackResponseUrl; use std::collections::HashMap; use std::future::Future; use std::sync::Arc; diff --git a/src/hyper/src/listener/interaction_events.rs b/src/hyper_tokio/listener/interaction_events.rs similarity index 95% rename from src/hyper/src/listener/interaction_events.rs rename to src/hyper_tokio/listener/interaction_events.rs index f2d003a..e379c67 100644 --- a/src/hyper/src/listener/interaction_events.rs +++ b/src/hyper_tokio/listener/interaction_events.rs @@ -1,18 +1,14 @@ -use crate::listener::SlackClientEventsHyperListener; - -pub use slack_morphism_models::events::*; - -use crate::connector::SlackClientHyperConnector; - -use slack_morphism::errors::*; -use slack_morphism::listener::*; -use slack_morphism::signature_verifier::SlackEventSignatureVerifier; +use crate::errors::*; +use crate::hyper_tokio::connector::SlackClientHyperConnector; +use crate::listener::*; +pub use crate::models::events::*; +use crate::signature_verifier::SlackEventSignatureVerifier; +use crate::hyper_tokio::*; use futures::future::{BoxFuture, FutureExt, TryFutureExt}; use hyper::body::*; use hyper::client::connect::Connect; use hyper::{Method, Request, Response, StatusCode}; -use slack_morphism::UserCallbackResult; use std::collections::HashMap; use std::future::Future; use std::sync::Arc; diff --git a/src/hyper/src/listener/mod.rs b/src/hyper_tokio/listener/mod.rs similarity index 89% rename from src/hyper/src/listener/mod.rs rename to src/hyper_tokio/listener/mod.rs index 67bb649..b2c247b 100644 --- a/src/hyper/src/listener/mod.rs +++ b/src/hyper_tokio/listener/mod.rs @@ -1,4 +1,4 @@ -use crate::connector::SlackClientHyperConnector; +use crate::hyper_tokio::connector::SlackClientHyperConnector; use std::future::Future; @@ -6,12 +6,11 @@ use futures::future::{BoxFuture, FutureExt}; use hyper::client::connect::Connect; use hyper::{Body, Request, Response}; +use crate::listener::SlackClientEventsListenerEnvironment; pub use command_events::*; pub use interaction_events::*; pub use oauth::*; pub use push_events::*; -use slack_morphism::listener::SlackClientEventsListenerEnvironment; -pub use slack_morphism::signature_verifier::*; use std::sync::Arc; mod command_events; diff --git a/src/hyper/src/listener/oauth.rs b/src/hyper_tokio/listener/oauth.rs similarity index 96% rename from src/hyper/src/listener/oauth.rs rename to src/hyper_tokio/listener/oauth.rs index 3c85a7d..7cba197 100644 --- a/src/hyper/src/listener/oauth.rs +++ b/src/hyper_tokio/listener/oauth.rs @@ -1,10 +1,10 @@ -use crate::connector::SlackClientHyperConnector; -use crate::listener::SlackClientEventsHyperListener; +use crate::hyper_tokio::connector::SlackClientHyperConnector; +use crate::hyper_tokio::SlackClientEventsHyperListener; -use slack_morphism::api::*; -use slack_morphism::errors::*; -use slack_morphism::listener::*; -use slack_morphism::{SlackClient, SlackClientHttpApiUri}; +use crate::api::*; +use crate::errors::*; +use crate::listener::*; +use crate::{SlackClient, SlackClientHttpApiUri}; use futures::future::{BoxFuture, FutureExt}; use hyper::body::*; diff --git a/src/hyper/src/listener/push_events.rs b/src/hyper_tokio/listener/push_events.rs similarity index 95% rename from src/hyper/src/listener/push_events.rs rename to src/hyper_tokio/listener/push_events.rs index 4f63b11..5689688 100644 --- a/src/hyper/src/listener/push_events.rs +++ b/src/hyper_tokio/listener/push_events.rs @@ -1,16 +1,13 @@ -use crate::connector::SlackClientHyperConnector; -use crate::listener::SlackClientEventsHyperListener; - -use slack_morphism::errors::*; -use slack_morphism::listener::*; -use slack_morphism::signature_verifier::SlackEventSignatureVerifier; - +use crate::errors::*; +use crate::hyper_tokio::connector::SlackClientHyperConnector; +use crate::hyper_tokio::*; +use crate::listener::*; +pub use crate::models::events::*; +use crate::signature_verifier::SlackEventSignatureVerifier; use futures::future::{BoxFuture, FutureExt, TryFutureExt}; use hyper::body::*; use hyper::client::connect::Connect; use hyper::{Method, Request, Response}; -use slack_morphism::UserCallbackResult; -pub use slack_morphism_models::events::*; use std::future::Future; use std::sync::Arc; use tracing::*; diff --git a/src/hyper/src/lib.rs b/src/hyper_tokio/mod.rs similarity index 76% rename from src/hyper/src/lib.rs rename to src/hyper_tokio/mod.rs index 478137c..1bb62f2 100644 --- a/src/hyper/src/lib.rs +++ b/src/hyper_tokio/mod.rs @@ -4,9 +4,11 @@ #![allow(clippy::new_without_default)] -pub use crate::connector::SlackClientHyperConnector; -pub use crate::connector::SlackClientHyperHttpsConnector; -use slack_morphism::SlackClient; +pub use crate::hyper_tokio::connector::SlackClientHyperConnector; +pub use crate::hyper_tokio::connector::SlackClientHyperHttpsConnector; +use crate::SlackClient; + +use crate::*; pub mod connector; pub mod listener; @@ -14,9 +16,9 @@ mod ratectl; pub mod scroller_ext; mod socket_mode; -pub type SlackHyperClient = SlackClient; - pub use listener::chain_service_routes_fn; pub use listener::SlackClientEventsHyperListener; pub use scroller_ext::SlackApiResponseScrollerExt; pub use socket_mode::*; + +pub type SlackHyperClient = SlackClient; diff --git a/src/hyper/src/ratectl/mod.rs b/src/hyper_tokio/ratectl/mod.rs similarity index 97% rename from src/hyper/src/ratectl/mod.rs rename to src/hyper_tokio/ratectl/mod.rs index 84a32d5..1669269 100644 --- a/src/hyper/src/ratectl/mod.rs +++ b/src/hyper_tokio/ratectl/mod.rs @@ -1,4 +1,6 @@ -use slack_morphism::prelude::*; +use crate::models::*; +use crate::ratectl::*; + use std::sync::Arc; use std::time::Duration; use tokio::sync::Mutex; diff --git a/src/hyper/src/scroller_ext.rs b/src/hyper_tokio/scroller_ext.rs similarity index 92% rename from src/hyper/src/scroller_ext.rs rename to src/hyper_tokio/scroller_ext.rs index 72d91f3..d7f995d 100644 --- a/src/hyper/src/scroller_ext.rs +++ b/src/hyper_tokio/scroller_ext.rs @@ -1,10 +1,7 @@ +use crate::*; use futures::future::BoxFuture; use futures::stream::BoxStream; use futures::TryStreamExt; -use slack_morphism::{ - ClientResult, SlackApiResponseScroller, SlackApiScrollableResponse, SlackClientHttpConnector, - SlackClientSession, -}; use std::time::Duration; use tokio_stream::StreamExt; diff --git a/src/hyper/src/socket_mode/mod.rs b/src/hyper_tokio/socket_mode/mod.rs similarity index 63% rename from src/hyper/src/socket_mode/mod.rs rename to src/hyper_tokio/socket_mode/mod.rs index 852d768..82dae6c 100644 --- a/src/hyper/src/socket_mode/mod.rs +++ b/src/hyper_tokio/socket_mode/mod.rs @@ -1,11 +1,8 @@ -use crate::socket_mode::tokio_clients_manager::SlackSocketModeTokioClientsManager; -use crate::SlackClientHyperConnector; +use crate::clients_manager::{SlackSocketModeClientsManager, SlackSocketModeClientsManagerFactory}; +use crate::hyper_tokio::connector::SlackClientHyperConnector; +use crate::hyper_tokio::socket_mode::tokio_clients_manager::SlackSocketModeTokioClientsManager; +use crate::listener::SlackClientEventsListenerEnvironment; use hyper::client::connect::Connect; -use slack_morphism::clients_manager::{ - SlackSocketModeClientsManager, SlackSocketModeClientsManagerFactory, -}; -use slack_morphism::listener::SlackClientEventsListenerEnvironment; -use slack_morphism::SlackSocketModeWssClientId; use std::sync::Arc; mod tokio_clients_manager; diff --git a/src/hyper/src/socket_mode/tokio_clients_manager.rs b/src/hyper_tokio/socket_mode/tokio_clients_manager.rs similarity index 93% rename from src/hyper/src/socket_mode/tokio_clients_manager.rs rename to src/hyper_tokio/socket_mode/tokio_clients_manager.rs index 42eee4f..ab62a13 100644 --- a/src/hyper/src/socket_mode/tokio_clients_manager.rs +++ b/src/hyper_tokio/socket_mode/tokio_clients_manager.rs @@ -3,19 +3,17 @@ use async_trait::async_trait; use hyper::client::connect::Connect; use std::sync::Arc; -use crate::socket_mode::tungstenite_wss_client::SlackTungsteniteWssClient; +use crate::hyper_tokio::socket_mode::tungstenite_wss_client::SlackTungsteniteWssClient; use crate::socket_mode::SlackSocketModeWssClientId; use futures::future; use futures::stream::StreamExt; use signal_hook::consts::TERM_SIGNALS; use signal_hook::iterator::exfiltrator::WithOrigin; use signal_hook_tokio::SignalsInfo; -use slack_morphism::clients_manager::SlackSocketModeClientsManager; -use slack_morphism::listener::SlackClientEventsListenerEnvironment; -use slack_morphism::{ - ClientResult, SlackApiToken, SlackClientHttpConnector, SlackClientSocketModeConfig, - SlackSocketModeClientListener, -}; + +use crate::clients_manager::SlackSocketModeClientsManager; +use crate::hyper_tokio::SlackClientHyperConnector; +use crate::listener::SlackClientEventsListenerEnvironment; use tokio::sync::RwLock; use tracing::*; diff --git a/src/hyper/src/socket_mode/tungstenite_wss_client.rs b/src/hyper_tokio/socket_mode/tungstenite_wss_client.rs similarity index 99% rename from src/hyper/src/socket_mode/tungstenite_wss_client.rs rename to src/hyper_tokio/socket_mode/tungstenite_wss_client.rs index 3c3ee8a..193fea5 100644 --- a/src/hyper/src/socket_mode/tungstenite_wss_client.rs +++ b/src/hyper_tokio/socket_mode/tungstenite_wss_client.rs @@ -1,9 +1,9 @@ +use crate::api::SlackApiAppsConnectionOpenRequest; +use crate::errors::*; +use crate::listener::SlackClientEventsListenerEnvironment; +use crate::*; use futures::{SinkExt, StreamExt}; use rvstruct::*; -use slack_morphism::api::SlackApiAppsConnectionOpenRequest; -use slack_morphism::errors::*; -use slack_morphism::listener::SlackClientEventsListenerEnvironment; -use slack_morphism::*; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; use std::time::SystemTime; diff --git a/src/client/src/lib.rs b/src/lib.rs similarity index 90% rename from src/client/src/lib.rs rename to src/lib.rs index 63abe4b..b1066eb 100644 --- a/src/client/src/lib.rs +++ b/src/lib.rs @@ -7,7 +7,6 @@ //! ### Create a client instance: //! ```ignore //! use slack_morphism::prelude::*; -//! use slack_morphism_hyper::*; //! //! let client = SlackClient::new(SlackClientHyperConnector::new()); //! @@ -26,9 +25,6 @@ //! ```ignore //! //! use slack_morphism::prelude::*; -//! use slack_morphism_hyper::*; -//! use slack_morphism_models::*; -//! //! //!# async fn example() -> Result<(), Box> { //! @@ -82,8 +78,8 @@ //! //! # Docs and examples //! -//! Please follow to the official website: https://slack-rust.abdolence.dev -//! Examples available at: https://github.com/abdolence/slack-morphism-rust/tree/master/src/hyper/examples +//! Please follow to the official [website](https://slack-rust.abdolence.dev). +//! Examples available on: [github](https://github.com/abdolence/slack-morphism-rust/tree/master/examples). //! #![allow(clippy::new_without_default)] @@ -93,6 +89,9 @@ pub use scroller::*; pub use socket_mode::*; pub use token::*; +mod models; +pub use models::*; + pub mod api; mod client; pub mod errors; @@ -103,4 +102,11 @@ pub mod signature_verifier; mod socket_mode; mod token; +#[cfg(feature = "hyper")] +pub mod hyper_tokio; + +// In next releases +// #[cfg(feature = "axum")] +// pub mod axum_support; + pub mod prelude; diff --git a/src/client/src/listener.rs b/src/listener.rs similarity index 98% rename from src/client/src/listener.rs rename to src/listener.rs index 4d484b3..dd65c2a 100644 --- a/src/client/src/listener.rs +++ b/src/listener.rs @@ -1,8 +1,8 @@ +use crate::models::*; use crate::{ClientResult, SlackClient, SlackClientHttpConnector}; use futures::executor::block_on; use futures::FutureExt; use rsb_derive::Builder; -use slack_morphism_models::{SlackClientId, SlackClientSecret, SlackSigningSecret}; use std::any::{Any, TypeId}; use std::collections::HashMap; use std::fmt::Debug; diff --git a/src/models/Cargo.toml b/src/models/Cargo.toml deleted file mode 100644 index ad5bffa..0000000 --- a/src/models/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "slack-morphism-models" -version = "0.42.0" -authors = ["Abdulla Abdurakhmanov "] -edition = "2021" -license = "Apache-2.0" -description = "Slack Morphism Models" -homepage = "https://github.com/abdolence/slack-morphism-rust" -repository = "https://github.com/abdolence/slack-morphism-rust" -documentation = "https://docs.rs/slack_morphism" -keywords = ["slack", "client"] -categories = ["api-bindings"] -readme = "../../README.md" -include = ["Cargo.toml", "src/**/*.rs", "../../README.md", "../../LICENSE"] - -[lib] -name = "slack_morphism_models" -path = "src/lib.rs" - -[dependencies] -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -serde_with = "1.14" -rvstruct = "0.3" -rsb_derive = "0.5" -chrono = { version = "0.4", features = ["serde"] } -url = { version = "2.2", features = ["serde"]} - -[package.metadata.release] -disable-tag=true diff --git a/src/models/src/apps/manifest.rs b/src/models/apps/manifest.rs similarity index 100% rename from src/models/src/apps/manifest.rs rename to src/models/apps/manifest.rs diff --git a/src/models/src/apps/mod.rs b/src/models/apps/mod.rs similarity index 100% rename from src/models/src/apps/mod.rs rename to src/models/apps/mod.rs diff --git a/src/models/src/blocks/datetime.rs b/src/models/blocks/datetime.rs similarity index 100% rename from src/models/src/blocks/datetime.rs rename to src/models/blocks/datetime.rs diff --git a/src/models/src/blocks/dsl.rs b/src/models/blocks/dsl.rs similarity index 100% rename from src/models/src/blocks/dsl.rs rename to src/models/blocks/dsl.rs diff --git a/src/models/src/blocks/kit.rs b/src/models/blocks/kit.rs similarity index 99% rename from src/models/src/blocks/kit.rs rename to src/models/blocks/kit.rs index 913a27c..877d3d4 100644 --- a/src/models/src/blocks/kit.rs +++ b/src/models/blocks/kit.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; use url::Url; -use crate::common::*; +use crate::*; #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Eq, Hash, Serialize, Deserialize, ValueStruct)] diff --git a/src/models/src/blocks/mod.rs b/src/models/blocks/mod.rs similarity index 100% rename from src/models/src/blocks/mod.rs rename to src/models/blocks/mod.rs diff --git a/src/models/src/blocks/view.rs b/src/models/blocks/view.rs similarity index 98% rename from src/models/src/blocks/view.rs rename to src/models/blocks/view.rs index f19f21d..c4cc6f1 100644 --- a/src/models/src/blocks/view.rs +++ b/src/models/blocks/view.rs @@ -1,6 +1,6 @@ use crate::blocks::kit::SlackBlock; use crate::blocks::{SlackBlockId, SlackBlockPlainText, SlackBlockPlainTextOnly}; -use crate::common::SlackCallbackId; +use crate::SlackCallbackId; use crate::*; use rsb_derive::Builder; use serde::{Deserialize, Serialize}; diff --git a/src/models/src/common/bot.rs b/src/models/common/bot.rs similarity index 95% rename from src/models/src/common/bot.rs rename to src/models/common/bot.rs index eb60e0c..f7f54f0 100644 --- a/src/models/src/common/bot.rs +++ b/src/models/common/bot.rs @@ -1,4 +1,4 @@ -use crate::common::*; +use crate::*; use rsb_derive::Builder; use serde::{Deserialize, Serialize}; diff --git a/src/models/src/common/channel.rs b/src/models/common/channel.rs similarity index 98% rename from src/models/src/common/channel.rs rename to src/models/common/channel.rs index 0eec8f7..0b43d47 100644 --- a/src/models/src/common/channel.rs +++ b/src/models/common/channel.rs @@ -1,6 +1,7 @@ -use crate::common::*; +use crate::*; use rsb_derive::Builder; +use rvstruct::*; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; diff --git a/src/models/src/common/formatters.rs b/src/models/common/formatters.rs similarity index 100% rename from src/models/src/common/formatters.rs rename to src/models/common/formatters.rs diff --git a/src/models/src/common/icon.rs b/src/models/common/icon.rs similarity index 100% rename from src/models/src/common/icon.rs rename to src/models/common/icon.rs diff --git a/src/models/src/common/mod.rs b/src/models/common/mod.rs similarity index 100% rename from src/models/src/common/mod.rs rename to src/models/common/mod.rs diff --git a/src/models/src/common/reaction.rs b/src/models/common/reaction.rs similarity index 93% rename from src/models/src/common/reaction.rs rename to src/models/common/reaction.rs index b2b6444..0ce9708 100644 --- a/src/models/src/common/reaction.rs +++ b/src/models/common/reaction.rs @@ -1,4 +1,4 @@ -use crate::common::*; +use crate::*; use rsb_derive::Builder; use serde::{Deserialize, Serialize}; diff --git a/src/models/src/common/team.rs b/src/models/common/team.rs similarity index 97% rename from src/models/src/common/team.rs rename to src/models/common/team.rs index 263f17c..0a91eb6 100644 --- a/src/models/src/common/team.rs +++ b/src/models/common/team.rs @@ -1,6 +1,7 @@ -use crate::common::*; +use crate::*; use rsb_derive::Builder; +use rvstruct::*; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; diff --git a/src/models/src/common/user.rs b/src/models/common/user.rs similarity index 97% rename from src/models/src/common/user.rs rename to src/models/common/user.rs index 194f20c..6a3505c 100644 --- a/src/models/src/common/user.rs +++ b/src/models/common/user.rs @@ -1,6 +1,8 @@ -use crate::common::*; +use crate::*; +use crate::SlackUserId; use rsb_derive::Builder; +use rvstruct::*; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; diff --git a/src/models/src/events/authorization.rs b/src/models/events/authorization.rs similarity index 100% rename from src/models/src/events/authorization.rs rename to src/models/events/authorization.rs diff --git a/src/models/src/events/command.rs b/src/models/events/command.rs similarity index 100% rename from src/models/src/events/command.rs rename to src/models/events/command.rs diff --git a/src/models/src/events/interaction.rs b/src/models/events/interaction.rs similarity index 98% rename from src/models/src/events/interaction.rs rename to src/models/events/interaction.rs index d8f36d4..736efe6 100644 --- a/src/models/src/events/interaction.rs +++ b/src/models/events/interaction.rs @@ -3,8 +3,8 @@ use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; use crate::blocks::*; -use crate::common::*; -use crate::messages::*; +use crate::models::messages::*; +use crate::*; use std::collections::HashMap; #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] diff --git a/src/models/src/events/mod.rs b/src/models/events/mod.rs similarity index 100% rename from src/models/src/events/mod.rs rename to src/models/events/mod.rs diff --git a/src/models/src/events/push.rs b/src/models/events/push.rs similarity index 99% rename from src/models/src/events/push.rs rename to src/models/events/push.rs index fe649a4..98d7caa 100644 --- a/src/models/src/events/push.rs +++ b/src/models/events/push.rs @@ -4,9 +4,9 @@ use serde_with::skip_serializing_none; use url::Url; use crate::blocks::*; -use crate::common::*; use crate::events::*; -use crate::messages::*; +use crate::models::messages::*; +use crate::*; #[allow(clippy::large_enum_variant)] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] diff --git a/src/models/src/files/mod.rs b/src/models/files/mod.rs similarity index 100% rename from src/models/src/files/mod.rs rename to src/models/files/mod.rs diff --git a/src/models/src/messages/mod.rs b/src/models/messages/mod.rs similarity index 99% rename from src/models/src/messages/mod.rs rename to src/models/messages/mod.rs index eae998a..08b3452 100644 --- a/src/models/src/messages/mod.rs +++ b/src/models/messages/mod.rs @@ -1,6 +1,6 @@ use crate::blocks::*; -use crate::common::*; use crate::events::SlackMessageEventType; +use crate::*; use rsb_derive::Builder; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; diff --git a/src/models/src/messages/templates.rs b/src/models/messages/templates.rs similarity index 100% rename from src/models/src/messages/templates.rs rename to src/models/messages/templates.rs diff --git a/src/models/src/lib.rs b/src/models/mod.rs similarity index 100% rename from src/models/src/lib.rs rename to src/models/mod.rs diff --git a/src/models/src/socket_mode/mod.rs b/src/models/socket_mode/mod.rs similarity index 99% rename from src/models/src/socket_mode/mod.rs rename to src/models/socket_mode/mod.rs index b52e633..34de7df 100644 --- a/src/models/src/socket_mode/mod.rs +++ b/src/models/socket_mode/mod.rs @@ -2,10 +2,10 @@ use rsb_derive::Builder; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; -use crate::common::*; use crate::events::{ SlackCommandEvent, SlackCommandEventResponse, SlackInteractionEvent, SlackPushEventCallback, }; +use crate::*; use rvstruct::*; #[allow(clippy::large_enum_variant)] diff --git a/src/prelude.rs b/src/prelude.rs new file mode 100644 index 0000000..dd4d3e1 --- /dev/null +++ b/src/prelude.rs @@ -0,0 +1,11 @@ +pub use super::api::*; // Slack Web API methods (chat, users, views, etc) +pub use super::listener::*; +pub use super::ratectl::*; +pub use super::*; // access to network/client functions // Slack Events API listener (routes) implementation + +pub use crate::models::blocks::*; // Slack Block Kit models +pub use crate::models::events::*; +pub use crate::models::*; // common Slack models like SlackUser, etc and macros // Slack Events Models + +#[cfg(feature = "hyper")] +pub use crate::hyper_tokio::*; diff --git a/src/client/src/ratectl/config.rs b/src/ratectl/config.rs similarity index 100% rename from src/client/src/ratectl/config.rs rename to src/ratectl/config.rs diff --git a/src/client/src/ratectl/limit.rs b/src/ratectl/limit.rs similarity index 100% rename from src/client/src/ratectl/limit.rs rename to src/ratectl/limit.rs diff --git a/src/client/src/ratectl/mod.rs b/src/ratectl/mod.rs similarity index 100% rename from src/client/src/ratectl/mod.rs rename to src/ratectl/mod.rs diff --git a/src/client/src/ratectl/special_limit.rs b/src/ratectl/special_limit.rs similarity index 100% rename from src/client/src/ratectl/special_limit.rs rename to src/ratectl/special_limit.rs diff --git a/src/client/src/ratectl/team_limits.rs b/src/ratectl/team_limits.rs similarity index 100% rename from src/client/src/ratectl/team_limits.rs rename to src/ratectl/team_limits.rs diff --git a/src/client/src/ratectl/throttler.rs b/src/ratectl/throttler.rs similarity index 99% rename from src/client/src/ratectl/throttler.rs rename to src/ratectl/throttler.rs index bf46a78..91b0c62 100644 --- a/src/client/src/ratectl/throttler.rs +++ b/src/ratectl/throttler.rs @@ -1,5 +1,5 @@ +use crate::models::SlackTeamId; use crate::ratectl::*; -use slack_morphism_models::SlackTeamId; use std::collections::{BinaryHeap, HashMap}; use std::time::{Duration, Instant}; diff --git a/src/client/src/ratectl/throttling_counter.rs b/src/ratectl/throttling_counter.rs similarity index 100% rename from src/client/src/ratectl/throttling_counter.rs rename to src/ratectl/throttling_counter.rs diff --git a/src/client/src/ratectl/tier.rs b/src/ratectl/tier.rs similarity index 100% rename from src/client/src/ratectl/tier.rs rename to src/ratectl/tier.rs diff --git a/src/client/src/scroller.rs b/src/scroller.rs similarity index 100% rename from src/client/src/scroller.rs rename to src/scroller.rs diff --git a/src/client/src/signature_verifier.rs b/src/signature_verifier.rs similarity index 99% rename from src/client/src/signature_verifier.rs rename to src/signature_verifier.rs index c33444e..b88d461 100644 --- a/src/client/src/signature_verifier.rs +++ b/src/signature_verifier.rs @@ -1,7 +1,7 @@ +use crate::models::SlackSigningSecret; use ring::hmac; use rsb_derive::Builder; use rvstruct::*; -use slack_morphism_models::SlackSigningSecret; use std::error::Error; use std::fmt::{Display, Formatter}; diff --git a/src/client/src/socket_mode/callbacks.rs b/src/socket_mode/callbacks.rs similarity index 94% rename from src/client/src/socket_mode/callbacks.rs rename to src/socket_mode/callbacks.rs index 6b7960f..492c53c 100644 --- a/src/client/src/socket_mode/callbacks.rs +++ b/src/socket_mode/callbacks.rs @@ -1,10 +1,10 @@ use crate::errors::*; -use crate::listener::SlackClientEventsUserState; -use crate::prelude::{SlackInteractionEvent, SlackPushEventCallback, UserCallbackFunction}; +use crate::events::*; +use crate::listener::{SlackClientEventsUserState, UserCallbackFunction}; +use crate::models::events::{SlackCommandEvent, SlackCommandEventResponse}; +use crate::models::socket_mode::SlackSocketModeHelloEvent; use crate::{SlackClient, SlackClientHttpConnector, UserCallbackResult}; use futures::future::BoxFuture; -use slack_morphism_models::events::{SlackCommandEvent, SlackCommandEventResponse}; -use slack_morphism_models::socket_mode::SlackSocketModeHelloEvent; use std::future::Future; use std::sync::Arc; use tracing::*; diff --git a/src/client/src/socket_mode/clients_manager.rs b/src/socket_mode/clients_manager.rs similarity index 100% rename from src/client/src/socket_mode/clients_manager.rs rename to src/socket_mode/clients_manager.rs diff --git a/src/client/src/socket_mode/clients_manager_listener.rs b/src/socket_mode/clients_manager_listener.rs similarity index 98% rename from src/client/src/socket_mode/clients_manager_listener.rs rename to src/socket_mode/clients_manager_listener.rs index c411bbf..4c552d2 100644 --- a/src/client/src/socket_mode/clients_manager_listener.rs +++ b/src/socket_mode/clients_manager_listener.rs @@ -1,13 +1,12 @@ +use crate::models::socket_mode::*; use crate::socket_mode::clients_manager::*; use crate::*; use async_trait::async_trait; -use slack_morphism_models::socket_mode::*; use std::sync::{Arc, Weak}; use crate::errors::*; use crate::listener::SlackClientEventsListenerEnvironment; use crate::socket_mode::wss_client_id::SlackSocketModeWssClientId; -use slack_morphism_models::socket_mode::SlackSocketModeEvent; use tracing::*; #[async_trait] diff --git a/src/client/src/socket_mode/config.rs b/src/socket_mode/config.rs similarity index 100% rename from src/client/src/socket_mode/config.rs rename to src/socket_mode/config.rs diff --git a/src/client/src/socket_mode/listener.rs b/src/socket_mode/listener.rs similarity index 100% rename from src/client/src/socket_mode/listener.rs rename to src/socket_mode/listener.rs diff --git a/src/client/src/socket_mode/mod.rs b/src/socket_mode/mod.rs similarity index 100% rename from src/client/src/socket_mode/mod.rs rename to src/socket_mode/mod.rs diff --git a/src/client/src/socket_mode/wss_client_id.rs b/src/socket_mode/wss_client_id.rs similarity index 100% rename from src/client/src/socket_mode/wss_client_id.rs rename to src/socket_mode/wss_client_id.rs diff --git a/src/client/src/token.rs b/src/token.rs similarity index 95% rename from src/client/src/token.rs rename to src/token.rs index 974b48a..2cc0a38 100644 --- a/src/client/src/token.rs +++ b/src/token.rs @@ -3,7 +3,7 @@ use rvstruct::ValueStruct; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; -use slack_morphism_models::{SlackApiTokenScope, SlackTeamId}; +use crate::models::{SlackApiTokenScope, SlackTeamId}; #[derive(Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)] pub struct SlackApiTokenValue(pub String);