diff --git a/src/core/network/mod.rs b/src/core/network/mod.rs index 543be058..d9f9727b 100644 --- a/src/core/network/mod.rs +++ b/src/core/network/mod.rs @@ -1,16 +1,13 @@ +use apply::Apply; use futures::compat::Future01CompatExt; +use reqwest::r#async::{multipart::Form, Client}; use serde::de::DeserializeOwned; use serde_json::Value; -use reqwest::{ - r#async::{Client, multipart::Form}, -}; -use apply::Apply; + use crate::core::requests::{RequestError, ResponseResult}; - const TELEGRAM_API_URL: &str = "https://api.telegram.org"; - /// Create url for macking requests, see [telegram docs](https://core.telegram.org/bots/api#making-requests) fn method_url(base: &str, token: &str, method_name: &str) -> String { format!( @@ -31,7 +28,6 @@ fn file_url(base: &str, token: &str, file_path: &str) -> String { ) } - pub async fn request( client: &Client, token: &str, diff --git a/src/core/requests/form_builder.rs b/src/core/requests/form_builder.rs index ce4a3d39..ba38bc19 100644 --- a/src/core/requests/form_builder.rs +++ b/src/core/requests/form_builder.rs @@ -38,8 +38,8 @@ impl FormBuilder { form: self.form.text( name.to_owned(), serde_json::to_string(value).expect("serde_json::to_string failed"), - ) - } + ), + }, } } diff --git a/src/core/requests/get_me.rs b/src/core/requests/get_me.rs index a6f6ae5f..87a20e85 100644 --- a/src/core/requests/get_me.rs +++ b/src/core/requests/get_me.rs @@ -1,26 +1,15 @@ -use crate::core::{ - types::User, - network::{ - request, - }, - requests::{ - Request, RequestInfo, RequestFuture, - } -}; use crate::core::requests::ResponseResult; - +use crate::core::{network::request, network::request, types::User}; #[derive(Debug, Constructor)] pub struct GetMe { - info: RequestInfo + info: RequestInfo, } impl Request for GetMe { type ReturnValue = User; fn send(self) -> RequestFuture> { - Box::new(async move { - request(&self.info.client, &self.info.token, "getMe", None).await - }) + Box::new(async move { request(&self.info.client, &self.info.token, "getMe", None).await }) } } diff --git a/src/core/requests/mod.rs b/src/core/requests/mod.rs index e16ffe67..797ea3b8 100644 --- a/src/core/requests/mod.rs +++ b/src/core/requests/mod.rs @@ -1,9 +1,8 @@ use std::future::Future; -use serde::de::DeserializeOwned; use reqwest::r#async::Client; use reqwest::StatusCode; - +use serde::de::DeserializeOwned; mod form_builder; diff --git a/src/core/requests/send_message.rs b/src/core/requests/send_message.rs index 5c725fb6..5d4b4414 100644 --- a/src/core/requests/send_message.rs +++ b/src/core/requests/send_message.rs @@ -1,18 +1,5 @@ -use crate::core::{ - types::Message, - network::{ - request, - }, - requests::{ - form_builder::FormBuilder, - ChatId, - Request, - RequestInfo, - RequestFuture, - } -}; use crate::core::requests::ResponseResult; - +use crate::core::{network::request, network::request, types::Message}; #[derive(Debug, TypedBuilder)] pub struct SendMessage { @@ -36,7 +23,6 @@ pub struct SendMessage { impl Request for SendMessage { type ReturnValue = Message; - fn send(self) -> RequestFuture> { Box::new(async move { let params = FormBuilder::new() @@ -51,7 +37,13 @@ impl Request for SendMessage { .add_if_some("reply_to_message_id", self.reply_to_message_id.as_ref()) .build(); - request(&self.info.client, &self.info.token, "sendMessage", Some(params)).await + request( + &self.info.client, + &self.info.token, + "sendMessage", + Some(params), + ) + .await }) } } diff --git a/src/core/types/chosen_inline_result.rs b/src/core/types/chosen_inline_result.rs index bd479fa5..489acfaa 100644 --- a/src/core/types/chosen_inline_result.rs +++ b/src/core/types/chosen_inline_result.rs @@ -1,4 +1,5 @@ use serde::Deserialize; + use crate::core::types::user::User; #[derive(Debug, Deserealize)] diff --git a/src/core/types/input_media.rs b/src/core/types/input_media.rs index 435fb48f..367267ac 100644 --- a/src/core/types/input_media.rs +++ b/src/core/types/input_media.rs @@ -1,4 +1,5 @@ use serde::Deserialize; + use crate::core::types::InputFile; pub enum InputMedia { diff --git a/src/core/types/input_message_content.rs b/src/core/types/input_message_content.rs index 14e4b142..cf4c6873 100644 --- a/src/core/types/input_message_content.rs +++ b/src/core/types/input_message_content.rs @@ -1,4 +1,5 @@ use serde::Serialize; + use crate::core::parse_mode::ParseMode; pub enum InputMessageContent { diff --git a/src/core/types/message.rs b/src/core/types/message.rs index 2a3e3dc3..f53bb5a6 100644 --- a/src/core/types/message.rs +++ b/src/core/types/message.rs @@ -1,11 +1,9 @@ // use serde::Deserialize; use crate::core::types::{ - Animation, Audio, Chat, Contact, - Document, Game, Invoice, InlineKeyboardMarkup, - PhotoSize, MessageEntity, Location, PassportData, Poll, - Sticker, SuccessfulPayment, - User, Video, VideoNote, Venue, Voice, + Animation, Audio, Chat, Contact, Document, Game, InlineKeyboardMarkup, Invoice, Location, + MessageEntity, PassportData, PhotoSize, Poll, Sticker, SuccessfulPayment, User, Venue, Video, + VideoNote, Voice, }; #[derive(Debug, Deserialize, Hash, PartialEq, Eq)] diff --git a/src/core/types/message_entity.rs b/src/core/types/message_entity.rs index 0763727f..9235bd2f 100644 --- a/src/core/types/message_entity.rs +++ b/src/core/types/message_entity.rs @@ -1,6 +1,5 @@ use crate::core::types::User; - #[derive(Deserialize, Debug, PartialEq, Hash, Eq)] pub struct MessageEntity { #[serde(flatten)] @@ -13,10 +12,19 @@ pub struct MessageEntity { #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum MessageEntityKind { - Mention, Hashtag, Cashtag, BotCommand, Url, Email, PhoneNumber, - Bold, Italic, Code, Pre, + Mention, + Hashtag, + Cashtag, + BotCommand, + Url, + Email, + PhoneNumber, + Bold, + Italic, + Code, + Pre, TextLink { url: String }, - TextMention { user: User } + TextMention { user: User }, } #[test] @@ -25,12 +33,13 @@ fn recursive_kind() { assert_eq!( MessageEntity { - kind: MessageEntityKind::TextLink { url: "ya.ru".into() }, + kind: MessageEntityKind::TextLink { + url: "ya.ru".into() + }, offset: 1, length: 2 }, - from_str::( - r#"{"type":"text_link","url":"ya.ru","offset":1,"length":2}"# - ).unwrap() + from_str::(r#"{"type":"text_link","url":"ya.ru","offset":1,"length":2}"#) + .unwrap() ); } diff --git a/src/core/types/mod.rs b/src/core/types/mod.rs index 3d815491..ffd1a60c 100644 --- a/src/core/types/mod.rs +++ b/src/core/types/mod.rs @@ -1,26 +1,11 @@ -mod not_implemented_types; use self::not_implemented_types::*; - - pub use self::{ - answer_pre_checkout_query::AnswerPreCheckoutQuery, - answer_shipping_query::AnswerShippingQuery, - chat::Chat, - chat_permissions::ChatPermissions, - chat_photo::ChatPhoto, - document::Document, - invoice::Invoice, - label_price::LabeledPrice, - message::Message, - message_entity::MessageEntity, - order_info::OrderInfo, - pre_checkout_query::PreCheckoutQuery, - send_invoice::SendInvoice, - shipping_address::ShippingAddress, - shipping_option::ShippingOption, - shipping_query::ShippingQuery, - sticker::Sticker, - successful_payment::SuccessfulPayment, + answer_pre_checkout_query::AnswerPreCheckoutQuery, answer_shipping_query::AnswerShippingQuery, + chat::Chat, chat_permissions::ChatPermissions, chat_photo::ChatPhoto, document::Document, + invoice::Invoice, label_price::LabeledPrice, message::Message, message_entity::MessageEntity, + order_info::OrderInfo, pre_checkout_query::PreCheckoutQuery, send_invoice::SendInvoice, + shipping_address::ShippingAddress, shipping_option::ShippingOption, + shipping_query::ShippingQuery, sticker::Sticker, successful_payment::SuccessfulPayment, user::User, }; @@ -34,6 +19,7 @@ mod invoice; mod label_price; mod message; mod message_entity; +mod not_implemented_types; mod order_info; mod pre_checkout_query; mod send_invoice;