replace type Message.from from Sender to User

This commit is contained in:
p0lunin 2020-02-11 21:34:32 +02:00
parent 44471d3090
commit 2242a8bad8
3 changed files with 13 additions and 30 deletions

View file

@ -35,7 +35,7 @@ pub enum MessageKind {
Common {
/// Sender, empty for messages sent to channels.
#[serde(flatten)]
from: Option<Sender>,
from: User,
#[serde(flatten)]
forward_kind: ForwardKind,
@ -144,17 +144,6 @@ pub enum MessageKind {
},
}
#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)]
pub enum Sender {
/// Sender of a message from chat.
#[serde(rename = "from")]
User(User),
/// Signature of a sender of a message from a channel.
#[serde(rename = "author_signature")]
Signature(String),
}
#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)]
pub enum ForwardedFrom {
#[serde(rename = "forward_from")]
@ -340,7 +329,7 @@ mod getters {
Pinned, SuccessfulPayment, SupergroupChatCreated,
},
},
Chat, ForwardedFrom, Message, MessageEntity, PhotoSize, Sender, True,
Chat, ForwardedFrom, Message, MessageEntity, PhotoSize, True,
User,
};
@ -350,9 +339,9 @@ mod getters {
/// [telegram docs]: https://core.telegram.org/bots/api#message
impl Message {
/// NOTE: this is getter for both `from` and `author_signature`
pub fn from(&self) -> Option<&Sender> {
pub fn from(&self) -> Option<&User> {
match &self.kind {
Common { from, .. } => from.as_ref(),
Common { from, .. } => Some(&from),
_ => None,
}
}

View file

@ -51,7 +51,7 @@ impl MessageEntity {
mod tests {
use super::*;
use crate::types::{
Chat, ChatKind, ForwardKind, MediaKind, MessageKind, Sender,
Chat, ChatKind, ForwardKind, MediaKind, MessageKind,
};
#[test]
@ -116,14 +116,14 @@ mod tests {
photo: None,
},
kind: MessageKind::Common {
from: Some(Sender::User(User {
from: Some(User {
id: 0,
is_bot: false,
first_name: "".to_string(),
last_name: None,
username: None,
language_code: None,
})),
}),
forward_kind: ForwardKind::Origin {
reply_to_message: None,
},

View file

@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize};
use crate::types::{
CallbackQuery, Chat, ChosenInlineResult, InlineQuery, Message, Poll,
PollAnswer, PreCheckoutQuery, Sender, ShippingQuery, User,
PollAnswer, PreCheckoutQuery, ShippingQuery, User,
};
/// This [object] represents an incoming update.
@ -80,14 +80,8 @@ pub enum UpdateKind {
impl Update {
pub fn user(&self) -> Option<&User> {
match &self.kind {
UpdateKind::Message(m) => match m.from() {
Some(Sender::User(user)) => Some(user),
_ => None,
},
UpdateKind::EditedMessage(m) => match m.from() {
Some(Sender::User(user)) => Some(user),
_ => None,
},
UpdateKind::Message(m) => m.from(),
UpdateKind::EditedMessage(m) => m.from(),
UpdateKind::CallbackQuery(query) => Some(&query.from),
UpdateKind::ChosenInlineResult(chosen) => Some(&chosen.from),
UpdateKind::InlineQuery(query) => Some(&query.from),
@ -114,7 +108,7 @@ impl Update {
mod test {
use crate::types::{
Chat, ChatKind, ForwardKind, LanguageCode, MediaKind, Message,
MessageKind, Sender, Update, UpdateKind, User,
MessageKind, Update, UpdateKind, User,
};
// TODO: more tests for deserialization
@ -158,14 +152,14 @@ mod test {
photo: None,
},
kind: MessageKind::Common {
from: Some(Sender::User(User {
from: Some(User {
id: 218_485_655,
is_bot: false,
first_name: String::from("Waffle"),
last_name: None,
username: Some(String::from("WaffleLapkin")),
language_code: Some(LanguageCode::EN),
})),
}),
forward_kind: ForwardKind::Origin {
reply_to_message: None,
},