This commit is contained in:
Waffle 2019-11-27 18:47:06 +03:00
parent 4ae4539631
commit 648ce5c00e
11 changed files with 46 additions and 43 deletions

View file

@ -17,7 +17,7 @@ pub trait ErrorPolicy<E> {
/// ## Example
/// ```
/// # #[tokio::main]
/// # async fn main() {
/// # async fn main_() {
/// use telebofr::dispatching::dispatchers::filter::error_policy::{
/// ErrorPolicy, Ignore,
/// };
@ -47,7 +47,7 @@ where
/// ## Examples
/// ```
/// # #[tokio::main]
/// # async fn main() {
/// # async fn main_() {
/// use std::convert::{TryInto, Infallible};
///
/// use telebofr::dispatching::dispatchers::filter::error_policy::{
@ -110,7 +110,7 @@ impl ErrorPolicy<Infallible> for IgnoreSafe {
/// ## Example
/// ```
/// # #[tokio::main]
/// # async fn main() {
/// # async fn main_() {
/// use telebofr::dispatching::dispatchers::filter::error_policy::ErrorPolicy;
///
/// let closure = |e: i32| async move { eprintln!("Error code{}", e) };

View file

@ -7,7 +7,10 @@ use crate::{
dispatchers::filter::error_policy::ErrorPolicy, filters::Filter,
handler::Handler, updater::Updater, Dispatcher,
},
types::{CallbackQuery, ChosenInlineResult, Message, Update, UpdateKind},
types::{
CallbackQuery, ChosenInlineResult, InlineQuery, Message, Update,
UpdateKind,
},
};
pub mod error_policy;
@ -71,7 +74,7 @@ type FiltersAndHandlers<'a, T, E> = Vec<FilterAndHandler<'a, T, E>>;
///
/// // create dispatching which handlers can't fail
/// // with error policy that just ignores all errors (that can't ever happen)
/// let mut dp = FilterDispatcher::<Infallible, _>::new(|_| async { () })
/// let mut dp = FilterDispatcher::<Infallible, _>::new(|_| async {})
/// // Add 'handler' that will handle all messages sent to the bot
/// .message_handler(true, |mes: Message| {
/// async move { println!("New message: {:?}", mes) }
@ -94,7 +97,7 @@ pub struct FilterDispatcher<'a, E, Ep> {
edited_message_handlers: FiltersAndHandlers<'a, Message, E>,
channel_post_handlers: FiltersAndHandlers<'a, Message, E>,
edited_channel_post_handlers: FiltersAndHandlers<'a, Message, E>,
inline_query_handlers: FiltersAndHandlers<'a, (), E>,
inline_query_handlers: FiltersAndHandlers<'a, InlineQuery, E>,
chosen_inline_result_handlers:
FiltersAndHandlers<'a, ChosenInlineResult, E>,
callback_query_handlers: FiltersAndHandlers<'a, CallbackQuery, E>,
@ -165,8 +168,8 @@ where
pub fn inline_query_handler<F, H>(mut self, filter: F, handler: H) -> Self
where
F: Filter<()> + 'a,
H: Handler<'a, (), E> + 'a,
F: Filter<InlineQuery> + 'a,
H: Handler<'a, InlineQuery, E> + 'a,
{
self.inline_query_handlers
.push(FilterAndHandler::new(filter, handler));
@ -259,6 +262,7 @@ where
.await;
}
#[allow(clippy::ptr_arg)] // TODO: proper fix
async fn handle<T>(
&self,
update: T,
@ -316,7 +320,7 @@ mod tests {
let counter = &AtomicI32::new(0);
let counter2 = &AtomicI32::new(0);
let mut dp = FilterDispatcher::<Infallible, _>::new(|_| async { () })
let mut dp = FilterDispatcher::<Infallible, _>::new(|_| async {})
.message_handler(true, |_mes: Message| {
async move {
counter.fetch_add(1, Ordering::SeqCst);
@ -338,9 +342,9 @@ mod tests {
fn message() -> Message {
Message {
id: 6534,
date: 1567898953,
date: 1_567_898_953,
chat: Chat {
id: 218485655,
id: 218_485_655,
photo: None,
kind: ChatKind::Private {
type_: (),
@ -351,7 +355,7 @@ mod tests {
},
kind: MessageKind::Common {
from: Sender::User(User {
id: 457569668,
id: 457_569_668,
is_bot: true,
first_name: "BT".to_string(),
last_name: None,

View file

@ -37,7 +37,7 @@ mod tests {
performer: Some("Performer".to_string()),
title: Some("Title".to_string()),
mime_type: Some("MimeType".to_string()),
file_size: Some(123456),
file_size: Some(123_456),
thumb: Some(PhotoSize {
file_id: "id".to_string(),
width: 320,

View file

@ -18,7 +18,7 @@ mod tests {
#[test]
fn chat_id_id_serialization() {
let expected_json = String::from(r#"123456"#);
let actual_json = serde_json::to_string(&ChatId::Id(123456)).unwrap();
let actual_json = serde_json::to_string(&ChatId::Id(123_456)).unwrap();
assert_eq!(expected_json, actual_json)
}

View file

@ -106,7 +106,7 @@ mod tests {
language_code: None,
},
status: ChatMemberStatus::Creator,
until_date: Some(123456),
until_date: Some(123_456),
can_be_edited: Some(true),
can_change_info: Some(true),
can_post_messages: Some(true),

View file

@ -61,11 +61,14 @@ mod tests {
"text 2".to_string(),
"url 2".to_string(),
);
let markup = InlineKeyboardMarkup::new()
.append_row(vec![button1.clone(), button2.clone()]);
let expected = InlineKeyboardMarkup {
inline_keyboard: vec![vec![button1.clone(), button2.clone()]],
inline_keyboard: vec![vec![button1, button2]],
};
assert_eq!(markup, expected);
}
@ -79,12 +82,15 @@ mod tests {
"text 2".to_string(),
"url 2".to_string(),
);
let markup = InlineKeyboardMarkup::new()
.append_row(vec![button1.clone()])
.append_to_row(button2.clone(), 0);
let expected = InlineKeyboardMarkup {
inline_keyboard: vec![vec![button1.clone(), button2.clone()]],
inline_keyboard: vec![vec![button1, button2]],
};
assert_eq!(markup, expected);
}
@ -98,12 +104,15 @@ mod tests {
"text 2".to_string(),
"url 2".to_string(),
);
let markup = InlineKeyboardMarkup::new()
.append_row(vec![button1.clone()])
.append_to_row(button2.clone(), 1);
let expected = InlineKeyboardMarkup {
inline_keyboard: vec![vec![button1.clone()], vec![button2.clone()]],
inline_keyboard: vec![vec![button1], vec![button2]],
};
assert_eq!(markup, expected);
}
}

View file

@ -1,6 +1,6 @@
use crate::types::{Location, User};
#[derive(Debug, Serialize, PartialEq, Clone)]
#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
pub struct InlineQuery {
/// Unique identifier for this query
pub id: String,

View file

@ -1,3 +1,5 @@
#![allow(clippy::large_enum_variant)]
use crate::types::{
InlineQueryResultArticle, InlineQueryResultAudio,
InlineQueryResultCachedAudio, InlineQueryResultCachedDocument,
@ -54,21 +56,6 @@ mod tests {
InlineQueryResult, InlineQueryResultCachedAudio, InputMessageContent,
};
#[test]
fn into() {
let structure =
InlineQueryResult::CachedAudio(InlineQueryResultCachedAudio {
id: String::from("id"),
audio_file_id: String::from("audio_file_id"),
caption: None,
parse_mode: None,
reply_markup: None,
input_message_content: None,
});
let _: InlineQueryResult = structure.into();
}
#[test]
fn cached_audio_min_serialize() {
let structure =

View file

@ -1,3 +1,5 @@
#![allow(clippy::large_enum_variant)]
use crate::types::{
Animation, Audio, Chat, Contact, Document, Game, InlineKeyboardMarkup,
Invoice, Location, MessageEntity, PassportData, PhotoSize, Poll, Sticker,

View file

@ -11,7 +11,7 @@ mod tests {
#[test]
fn migrate_to_chat_id_deserialization() {
let expected = ResponseParameters::MigrateToChatId(123456);
let expected = ResponseParameters::MigrateToChatId(123_456);
let actual: ResponseParameters =
serde_json::from_str(r#"{"migrate_to_chat_id":123456}"#).unwrap();
@ -20,7 +20,7 @@ mod tests {
#[test]
fn retry_after_deserialization() {
let expected = ResponseParameters::RetryAfter(123456);
let expected = ResponseParameters::RetryAfter(123_456);
let actual: ResponseParameters =
serde_json::from_str(r#"{"retry_after":123456}"#).unwrap();

View file

@ -1,4 +1,6 @@
use crate::types::{CallbackQuery, ChosenInlineResult, Message};
#![allow(clippy::large_enum_variant)]
use crate::types::{CallbackQuery, ChosenInlineResult, InlineQuery, Message};
#[derive(Debug, Deserialize, PartialEq, Clone)]
pub struct Update {
@ -15,8 +17,7 @@ pub enum UpdateKind {
EditedMessage(Message),
ChannelPost(Message),
EditedChannelPost(Message),
InlineQuery(()),
// TODO
InlineQuery(InlineQuery),
ChosenInlineResult(ChosenInlineResult),
CallbackQuery(CallbackQuery),
}
@ -54,12 +55,12 @@ mod test {
}"#;
let expected: Update = Update {
id: 892252934,
id: 892_252_934,
kind: UpdateKind::Message(Message {
id: 6557,
date: 1569518342,
date: 1_569_518_342,
chat: Chat {
id: 218485655,
id: 218_485_655,
kind: ChatKind::Private {
type_: (),
username: Some(String::from("WaffleLapkin")),
@ -70,7 +71,7 @@ mod test {
},
kind: MessageKind::Common {
from: Sender::User(User {
id: 218485655,
id: 218_485_655,
is_bot: false,
first_name: String::from("Waffle"),
last_name: None,