diff --git a/crates/teloxide/examples/heroku_ping_pong.rs b/crates/teloxide/examples/heroku_ping_pong.rs index 59767047..c9198132 100644 --- a/crates/teloxide/examples/heroku_ping_pong.rs +++ b/crates/teloxide/examples/heroku_ping_pong.rs @@ -20,7 +20,7 @@ use std::env; -use teloxide::{dispatching::update_listeners::webhooks, prelude::*}; +use teloxide::{prelude::*, update_listeners::webhooks}; #[tokio::main] async fn main() { diff --git a/crates/teloxide/examples/ngrok_ping_pong.rs b/crates/teloxide/examples/ngrok_ping_pong.rs index 3ea157ed..b3f0b4b3 100644 --- a/crates/teloxide/examples/ngrok_ping_pong.rs +++ b/crates/teloxide/examples/ngrok_ping_pong.rs @@ -1,7 +1,7 @@ // The version of ngrok ping-pong-bot, which uses a webhook to receive updates // from Telegram, instead of long polling. -use teloxide::{dispatching::update_listeners::webhooks, prelude::*}; +use teloxide::{prelude::*, update_listeners::webhooks}; #[tokio::main] async fn main() { diff --git a/crates/teloxide/src/dispatching.rs b/crates/teloxide/src/dispatching.rs index 3d64ef8e..914599a8 100644 --- a/crates/teloxide/src/dispatching.rs +++ b/crates/teloxide/src/dispatching.rs @@ -215,16 +215,13 @@ //! [`examples/dispatching_features.rs`]: https://github.com/teloxide/teloxide/blob/master/examples/dispatching_features.rs //! [`Update`]: crate::types::Update -#[cfg(all(feature = "ctrlc_handler"))] -pub mod repls; - pub mod dialogue; + mod dispatcher; mod distribution; mod filter_ext; mod handler_description; mod handler_ext; -pub mod update_listeners; pub use crate::utils::shutdown_token::{IdleShutdownError, ShutdownToken}; pub use dispatcher::{Dispatcher, DispatcherBuilder, UpdateHandler}; diff --git a/crates/teloxide/src/dispatching/dialogue.rs b/crates/teloxide/src/dispatching/dialogue.rs index 89d16326..cb84d51d 100644 --- a/crates/teloxide/src/dispatching/dialogue.rs +++ b/crates/teloxide/src/dispatching/dialogue.rs @@ -93,23 +93,15 @@ //! //! [`examples/dialogue.rs`]: https://github.com/teloxide/teloxide/blob/master/examples/dialogue.rs -#[cfg(feature = "redis-storage")] -pub use crate::dispatching::dialogue::{RedisStorage, RedisStorageError}; - -#[cfg(feature = "sqlite-storage")] -pub use crate::dispatching::dialogue::{SqliteStorage, SqliteStorageError}; - -use dptree::{prelude::DependencyMap, Handler}; +pub use crate::storage::*; pub use get_chat_id::GetChatId; -pub use storage::*; -use teloxide_core::types::ChatId; + +use crate::{dispatching::DpHandlerDescription, types::ChatId}; +use dptree::{prelude::DependencyMap, Handler}; use std::{fmt::Debug, marker::PhantomData, sync::Arc}; -use super::DpHandlerDescription; - mod get_chat_id; -mod storage; /// A handle for controlling dialogue state. #[derive(Debug)] diff --git a/crates/teloxide/src/dispatching/dispatcher.rs b/crates/teloxide/src/dispatching/dispatcher.rs index 954a6ecd..d7c14387 100644 --- a/crates/teloxide/src/dispatching/dispatcher.rs +++ b/crates/teloxide/src/dispatching/dispatcher.rs @@ -1,11 +1,12 @@ use crate::{ dispatching::{ - distribution::default_distribution_function, update_listeners, - update_listeners::UpdateListener, DefaultKey, DpHandlerDescription, ShutdownToken, + distribution::default_distribution_function, DefaultKey, DpHandlerDescription, + ShutdownToken, }, error_handlers::{ErrorHandler, LoggingErrorHandler}, requests::{Request, Requester}, types::{Update, UpdateKind}, + update_listeners::{self, UpdateListener}, utils::shutdown_token::shutdown_check_timeout_for, }; diff --git a/crates/teloxide/src/dispatching/handler_ext.rs b/crates/teloxide/src/dispatching/handler_ext.rs index 0013acb4..0495f0b9 100644 --- a/crates/teloxide/src/dispatching/handler_ext.rs +++ b/crates/teloxide/src/dispatching/handler_ext.rs @@ -1,8 +1,6 @@ use crate::{ - dispatching::{ - dialogue::{GetChatId, Storage}, - DpHandlerDescription, - }, + dispatching::{dialogue::GetChatId, DpHandlerDescription}, + storage::Storage, types::{Me, Message}, utils::command::BotCommands, }; diff --git a/crates/teloxide/src/lib.rs b/crates/teloxide/src/lib.rs index 77a67781..15c88d49 100644 --- a/crates/teloxide/src/lib.rs +++ b/crates/teloxide/src/lib.rs @@ -60,16 +60,20 @@ #![allow(clippy::nonstandard_macro_braces)] #[cfg(feature = "ctrlc_handler")] -pub use dispatching::repls::{repl, repl_with_listener}; +pub use repls::{repl, repl_with_listener}; #[cfg(feature = "ctrlc_handler")] #[allow(deprecated)] -pub use dispatching::repls::{commands_repl, commands_repl_with_listener}; +pub use repls::{commands_repl, commands_repl_with_listener}; pub mod dispatching; pub mod error_handlers; pub mod prelude; +#[cfg(all(feature = "ctrlc_handler"))] +pub mod repls; pub mod stop; +pub mod storage; +pub mod update_listeners; pub mod utils; #[doc(inline)] diff --git a/crates/teloxide/src/prelude.rs b/crates/teloxide/src/prelude.rs index 27336320..00c7fb2e 100644 --- a/crates/teloxide/src/prelude.rs +++ b/crates/teloxide/src/prelude.rs @@ -10,7 +10,7 @@ pub use crate::dispatching::{ }; #[cfg(feature = "ctrlc_handler")] -pub use crate::dispatching::repls::CommandReplExt as _; +pub use crate::repls::CommandReplExt as _; pub use teloxide_core::{ requests::ResponseResult, diff --git a/crates/teloxide/src/dispatching/repls.rs b/crates/teloxide/src/repls.rs similarity index 100% rename from crates/teloxide/src/dispatching/repls.rs rename to crates/teloxide/src/repls.rs diff --git a/crates/teloxide/src/dispatching/repls/caution.md b/crates/teloxide/src/repls/caution.md similarity index 100% rename from crates/teloxide/src/dispatching/repls/caution.md rename to crates/teloxide/src/repls/caution.md diff --git a/crates/teloxide/src/dispatching/repls/commands_repl.rs b/crates/teloxide/src/repls/commands_repl.rs similarity index 98% rename from crates/teloxide/src/dispatching/repls/commands_repl.rs rename to crates/teloxide/src/repls/commands_repl.rs index 15f2396d..68093d8f 100644 --- a/crates/teloxide/src/dispatching/repls/commands_repl.rs +++ b/crates/teloxide/src/repls/commands_repl.rs @@ -1,10 +1,9 @@ use crate::{ - dispatching::{ - update_listeners, update_listeners::UpdateListener, HandlerExt, UpdateFilterExt, - }, + dispatching::{HandlerExt, UpdateFilterExt}, error_handlers::LoggingErrorHandler, requests::{Requester, ResponseResult}, types::Update, + update_listeners::{self, UpdateListener}, utils::command::BotCommands, }; use dptree::di::{DependencyMap, Injectable}; diff --git a/crates/teloxide/src/dispatching/repls/preamble.md b/crates/teloxide/src/repls/preamble.md similarity index 100% rename from crates/teloxide/src/dispatching/repls/preamble.md rename to crates/teloxide/src/repls/preamble.md diff --git a/crates/teloxide/src/dispatching/repls/repl.rs b/crates/teloxide/src/repls/repl.rs similarity index 95% rename from crates/teloxide/src/dispatching/repls/repl.rs rename to crates/teloxide/src/repls/repl.rs index b352d8e3..dcb0a308 100644 --- a/crates/teloxide/src/dispatching/repls/repl.rs +++ b/crates/teloxide/src/repls/repl.rs @@ -1,8 +1,9 @@ use crate::{ - dispatching::{update_listeners, update_listeners::UpdateListener, UpdateFilterExt}, + dispatching::UpdateFilterExt, error_handlers::LoggingErrorHandler, requests::{Requester, ResponseResult}, types::Update, + update_listeners::{self, UpdateListener}, }; use dptree::di::{DependencyMap, Injectable}; use std::fmt::Debug; @@ -65,7 +66,7 @@ where #[doc = include_str!("preamble.md")] /// /// [REPL]: https://en.wikipedia.org/wiki/Read-eval-print_loop -/// [`UpdateListener`]: crate::dispatching::update_listeners::UpdateListener +/// [`UpdateListener`]: crate::update_listeners::UpdateListener /// /// ## Signature /// diff --git a/crates/teloxide/src/dispatching/repls/stopping.md b/crates/teloxide/src/repls/stopping.md similarity index 100% rename from crates/teloxide/src/dispatching/repls/stopping.md rename to crates/teloxide/src/repls/stopping.md diff --git a/crates/teloxide/src/stop.rs b/crates/teloxide/src/stop.rs index 71fcebe9..e7b185ba 100644 --- a/crates/teloxide/src/stop.rs +++ b/crates/teloxide/src/stop.rs @@ -1,6 +1,6 @@ //! Stopping asynchronous tasks, e.g., [listeners]. //! -//! [listeners]: crate::dispatching::update_listeners +//! [listeners]: crate::update_listeners use std::{convert::Infallible, future::Future, pin::Pin, task}; diff --git a/crates/teloxide/src/dispatching/dialogue/storage.rs b/crates/teloxide/src/storage.rs similarity index 100% rename from crates/teloxide/src/dispatching/dialogue/storage.rs rename to crates/teloxide/src/storage.rs diff --git a/crates/teloxide/src/dispatching/dialogue/storage/in_mem_storage.rs b/crates/teloxide/src/storage/in_mem_storage.rs similarity index 100% rename from crates/teloxide/src/dispatching/dialogue/storage/in_mem_storage.rs rename to crates/teloxide/src/storage/in_mem_storage.rs diff --git a/crates/teloxide/src/dispatching/dialogue/storage/redis_storage.rs b/crates/teloxide/src/storage/redis_storage.rs similarity index 100% rename from crates/teloxide/src/dispatching/dialogue/storage/redis_storage.rs rename to crates/teloxide/src/storage/redis_storage.rs diff --git a/crates/teloxide/src/dispatching/dialogue/storage/serializer.rs b/crates/teloxide/src/storage/serializer.rs similarity index 100% rename from crates/teloxide/src/dispatching/dialogue/storage/serializer.rs rename to crates/teloxide/src/storage/serializer.rs diff --git a/crates/teloxide/src/dispatching/dialogue/storage/sqlite_storage.rs b/crates/teloxide/src/storage/sqlite_storage.rs similarity index 100% rename from crates/teloxide/src/dispatching/dialogue/storage/sqlite_storage.rs rename to crates/teloxide/src/storage/sqlite_storage.rs diff --git a/crates/teloxide/src/dispatching/dialogue/storage/trace_storage.rs b/crates/teloxide/src/storage/trace_storage.rs similarity index 100% rename from crates/teloxide/src/dispatching/dialogue/storage/trace_storage.rs rename to crates/teloxide/src/storage/trace_storage.rs diff --git a/crates/teloxide/src/dispatching/update_listeners.rs b/crates/teloxide/src/update_listeners.rs similarity index 100% rename from crates/teloxide/src/dispatching/update_listeners.rs rename to crates/teloxide/src/update_listeners.rs diff --git a/crates/teloxide/src/dispatching/update_listeners/polling.rs b/crates/teloxide/src/update_listeners/polling.rs similarity index 98% rename from crates/teloxide/src/dispatching/update_listeners/polling.rs rename to crates/teloxide/src/update_listeners/polling.rs index ffe8aa5a..20dd95ba 100644 --- a/crates/teloxide/src/dispatching/update_listeners/polling.rs +++ b/crates/teloxide/src/update_listeners/polling.rs @@ -13,10 +13,10 @@ use std::{ use futures::{ready, stream::Stream}; use crate::{ - dispatching::update_listeners::{assert_update_listener, AsUpdateStream, UpdateListener}, requests::{HasPayload, Request, Requester}, stop::{mk_stop_token, StopFlag, StopToken}, types::{AllowedUpdate, Update}, + update_listeners::{assert_update_listener, AsUpdateStream, UpdateListener}, }; /// Builder for polling update listener. @@ -73,7 +73,7 @@ where /// /// [`Dispatcher`]: crate::dispatching::Dispatcher /// [`repl`]: fn@crate::repl - /// [`hint_allowed_updates`]: crate::dispatching::update_listeners::UpdateListener::hint_allowed_updates + /// [`hint_allowed_updates`]: crate::update_listeners::UpdateListener::hint_allowed_updates pub fn allowed_updates(self, allowed_updates: Vec) -> Self { Self { allowed_updates: Some(allowed_updates), ..self } } diff --git a/crates/teloxide/src/dispatching/update_listeners/stateful_listener.rs b/crates/teloxide/src/update_listeners/stateful_listener.rs similarity index 95% rename from crates/teloxide/src/dispatching/update_listeners/stateful_listener.rs rename to crates/teloxide/src/update_listeners/stateful_listener.rs index 0eec921d..2cbca5cf 100644 --- a/crates/teloxide/src/dispatching/update_listeners/stateful_listener.rs +++ b/crates/teloxide/src/update_listeners/stateful_listener.rs @@ -3,9 +3,9 @@ use std::time::Duration; use futures::Stream; use crate::{ - dispatching::update_listeners::{AsUpdateStream, UpdateListener}, stop::StopToken, types::{AllowedUpdate, Update}, + update_listeners::{AsUpdateStream, UpdateListener}, }; /// A listener created from functions. @@ -15,7 +15,7 @@ use crate::{ /// /// For an example of usage, see [`polling`]. /// -/// [`polling`]: crate::dispatching::update_listeners::polling() +/// [`polling`]: crate::update_listeners::polling() #[non_exhaustive] pub struct StatefulListener { /// The state of the listener. diff --git a/crates/teloxide/src/dispatching/update_listeners/webhooks.rs b/crates/teloxide/src/update_listeners/webhooks.rs similarity index 100% rename from crates/teloxide/src/dispatching/update_listeners/webhooks.rs rename to crates/teloxide/src/update_listeners/webhooks.rs diff --git a/crates/teloxide/src/dispatching/update_listeners/webhooks/axum.rs b/crates/teloxide/src/update_listeners/webhooks/axum.rs similarity index 95% rename from crates/teloxide/src/dispatching/update_listeners/webhooks/axum.rs rename to crates/teloxide/src/update_listeners/webhooks/axum.rs index 45cb5e79..ba2c930f 100644 --- a/crates/teloxide/src/dispatching/update_listeners/webhooks/axum.rs +++ b/crates/teloxide/src/update_listeners/webhooks/axum.rs @@ -7,10 +7,10 @@ use axum::{ use tokio::sync::mpsc; use crate::{ - dispatching::update_listeners::{webhooks::Options, UpdateListener}, requests::Requester, stop::StopFlag, types::Update, + update_listeners::{webhooks::Options, UpdateListener}, }; /// Webhook implementation based on the [mod@axum] framework. @@ -118,7 +118,7 @@ where R: Requester + Send, ::DeleteWebhook: Send, { - use crate::{dispatching::update_listeners::webhooks::setup_webhook, requests::Request}; + use crate::{requests::Request, update_listeners::webhooks::setup_webhook}; use futures::FutureExt; setup_webhook(&bot, &mut options).await?; @@ -156,8 +156,8 @@ pub fn axum_no_setup( options: Options, ) -> (impl UpdateListener, impl Future, axum::Router) { use crate::{ - dispatching::update_listeners::{self, webhooks::tuple_first_mut}, stop::{mk_stop_token, StopToken}, + update_listeners::{webhooks::tuple_first_mut, StatefulListener}, }; use axum::{response::IntoResponse, routing::post}; use tokio_stream::wrappers::UnboundedReceiverStream; @@ -218,7 +218,7 @@ pub fn axum_no_setup( let stream = UnboundedReceiverStream::new(rx); // FIXME: this should support `hint_allowed_updates()` - let listener = update_listeners::StatefulListener::new( + let listener = StatefulListener::new( (stream, stop_token), tuple_first_mut, |state: &mut (_, StopToken)| state.1.clone(), @@ -276,7 +276,7 @@ impl FromRequestParts for XTelegramBotApiSecretToken { 'l1: 'at, Self: 'at, { - use crate::dispatching::update_listeners::webhooks::check_secret; + use crate::update_listeners::webhooks::check_secret; let res = req .headers diff --git a/crates/teloxide/src/utils/shutdown_token.rs b/crates/teloxide/src/utils/shutdown_token.rs index 998a64ae..cb4da020 100644 --- a/crates/teloxide/src/utils/shutdown_token.rs +++ b/crates/teloxide/src/utils/shutdown_token.rs @@ -10,7 +10,7 @@ use std::{ use tokio::sync::Notify; -use crate::dispatching::update_listeners::UpdateListener; +use crate::update_listeners::UpdateListener; /// A token which used to shutdown [`Dispatcher`]. ///