telegram_bot_fork_raw/requests/
get_updates.rs

1use requests::*;
2use types::*;
3
4/// Use this method to receive incoming updates using long polling.
5#[derive(Debug, Clone, PartialEq, PartialOrd, Serialize, Default)]
6#[must_use = "requests do nothing unless sent"]
7pub struct GetUpdates {
8    #[serde(skip_serializing_if = "Option::is_none")]
9    offset: Option<Integer>,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    limit: Option<Integer>, // TODO(knsd): Values between 1—100 are accepted
12    #[serde(skip_serializing_if = "Option::is_none")]
13    timeout: Option<Integer>, // TODO(knsd): Should be positive
14    allowed_updates: Vec<AllowedUpdate>, // TODO(knsd) BitSet? HashSet? BTreeSet?
15}
16
17impl Request for GetUpdates {
18    type Type = JsonRequestType<Self>;
19    type Response = JsonIdResponse<Vec<Update>>;
20
21    fn serialize(&self) -> Result<HttpRequest, Error> {
22        Self::Type::serialize(RequestUrl::method("getUpdates"), self)
23    }
24}
25
26impl GetUpdates {
27    pub fn new() -> Self {
28        Default::default()
29    }
30
31    pub fn offset(&mut self, offset: Integer) -> &mut Self {
32        self.offset = Some(offset);
33        self
34    }
35
36    pub fn limit(&mut self, limit: Integer) -> &mut Self {
37        self.limit = Some(limit);
38        self
39    }
40
41    pub fn timeout(&mut self, timeout: Integer) -> &mut Self {
42        self.timeout = Some(timeout);
43        self
44    }
45
46    pub fn allowed_updates(&mut self, updates: &[AllowedUpdate]) -> &mut Self {
47        self.allowed_updates = updates.to_vec();
48        self
49    }
50}
51
52#[derive(Debug, Clone, PartialEq, PartialOrd, Deserialize, Serialize)]
53pub enum AllowedUpdate {
54    #[serde(rename = "message")]
55    Message,
56    #[serde(rename = "edited_message")]
57    EditedMessage,
58    #[serde(rename = "channel_post")]
59    ChannelPost,
60    #[serde(rename = "edited_channel_post")]
61    EditedChannelPost,
62    #[serde(rename = "inline_query")]
63    InlineQuery,
64    #[serde(rename = "chosen_inline_query")]
65    ChosenInlineResult,
66    #[serde(rename = "callback_query")]
67    CallbackQuery,
68    #[serde(rename = "shipping_query")]
69    ShippingQuery,
70    #[serde(rename = "pre_checkout_query")]
71    PreCheckoutQuery,
72}