From 555bfc93d5a1d788714d6dd0915b5ecf1951f503 Mon Sep 17 00:00:00 2001 From: Waffle Date: Wed, 13 Jan 2021 15:59:51 +0300 Subject: [PATCH 1/9] Refactor mime type handling - Remove `MimeWrapper` from public api - Use `mime::Mime` in public api instead --- src/types/animation.rs | 10 +- src/types/audio.rs | 10 +- src/types/document.rs | 8 +- src/types/inline_query_result_document.rs | 8 +- src/types/inline_query_result_video.rs | 10 +- src/types/non_telegram_types/mime.rs | 100 +++++++++++++++++++ src/types/non_telegram_types/mime_wrapper.rs | 44 -------- src/types/non_telegram_types/mod.rs | 4 +- src/types/video.rs | 8 +- src/types/voice.rs | 7 +- 10 files changed, 139 insertions(+), 70 deletions(-) create mode 100644 src/types/non_telegram_types/mime.rs delete mode 100644 src/types/non_telegram_types/mime_wrapper.rs diff --git a/src/types/animation.rs b/src/types/animation.rs index 9cf1b0e5..ae0c9de5 100644 --- a/src/types/animation.rs +++ b/src/types/animation.rs @@ -1,6 +1,7 @@ +use mime::Mime; use serde::{Deserialize, Serialize}; -use crate::types::{MimeWrapper, PhotoSize}; +use crate::types::PhotoSize; /// This object represents an animation file (GIF or H.264/MPEG-4 AVC video /// without sound). @@ -33,7 +34,8 @@ pub struct Animation { pub file_name: Option, /// A MIME type of the file as defined by a sender. - pub mime_type: Option, + #[serde(with = "crate::types::non_telegram_types::mime::opt_deser")] + pub mime_type: Option, /// A size of a file. pub file_size: Option, @@ -108,7 +110,7 @@ impl Animation { self } - pub fn mime_type(mut self, val: MimeWrapper) -> Self { + pub fn mime_type(mut self, val: Mime) -> Self { self.mime_type = Some(val); self } @@ -155,7 +157,7 @@ mod tests { file_size: Some(3452), }), file_name: Some("some".to_string()), - mime_type: Some(MimeWrapper("video/gif".parse().unwrap())), + mime_type: Some("video/gif".parse().unwrap()), file_size: Some(6500), }; let actual = serde_json::from_str::(json).unwrap(); diff --git a/src/types/audio.rs b/src/types/audio.rs index b9d6279d..23225eba 100644 --- a/src/types/audio.rs +++ b/src/types/audio.rs @@ -1,6 +1,7 @@ +use mime::Mime; use serde::{Deserialize, Serialize}; -use crate::types::{MimeWrapper, PhotoSize}; +use crate::types::PhotoSize; /// This object represents an audio file to be treated as music by the Telegram /// clients. @@ -27,7 +28,8 @@ pub struct Audio { pub title: Option, /// A MIME type of the file as defined by a sender. - pub mime_type: Option, + #[serde(with = "crate::types::non_telegram_types::mime::opt_deser")] + pub mime_type: Option, /// A size of a file. pub file_size: Option, @@ -91,7 +93,7 @@ impl Audio { self } - pub fn mime_type(mut self, val: MimeWrapper) -> Self { + pub fn mime_type(mut self, val: Mime) -> Self { self.mime_type = Some(val); self } @@ -135,7 +137,7 @@ mod tests { duration: 60, performer: Some("Performer".to_string()), title: Some("Title".to_string()), - mime_type: Some(serde_json::from_str("\"application/zip\"").unwrap()), + mime_type: Some("application/zip".parse().unwrap()), file_size: Some(123_456), thumb: Some(PhotoSize { file_id: "id".to_string(), diff --git a/src/types/document.rs b/src/types/document.rs index aa60c2db..75e28918 100644 --- a/src/types/document.rs +++ b/src/types/document.rs @@ -1,6 +1,7 @@ +use mime::Mime; use serde::{Deserialize, Serialize}; -use crate::types::{MimeWrapper, PhotoSize}; +use crate::types::PhotoSize; /// This object represents a general file (as opposed to [photos], [voice /// messages] and [audio files]). @@ -28,7 +29,8 @@ pub struct Document { pub file_name: Option, /// A MIME type of the file as defined by a sender. - pub mime_type: Option, + #[serde(with = "crate::types::non_telegram_types::mime::opt_deser")] + pub mime_type: Option, /// A size of a file. pub file_size: Option, @@ -79,7 +81,7 @@ impl Document { self } - pub fn mime_type(mut self, val: MimeWrapper) -> Self { + pub fn mime_type(mut self, val: Mime) -> Self { self.mime_type = Some(val); self } diff --git a/src/types/inline_query_result_document.rs b/src/types/inline_query_result_document.rs index 7cf0a5f2..780e2cb7 100644 --- a/src/types/inline_query_result_document.rs +++ b/src/types/inline_query_result_document.rs @@ -1,6 +1,7 @@ +use mime::Mime; use serde::{Deserialize, Serialize}; -use crate::types::{InlineKeyboardMarkup, InputMessageContent, MimeWrapper, ParseMode}; +use crate::types::{InlineKeyboardMarkup, InputMessageContent, ParseMode}; /// Represents a link to a file. /// @@ -35,7 +36,8 @@ pub struct InlineQueryResultDocument { /// Mime type of the content of the file, either `application/pdf` or /// `application/zip`. - pub mime_type: MimeWrapper, + #[serde(with = "crate::types::non_telegram_types::mime::deser")] + pub mime_type: Mime, /// Short description of the result. pub description: Option, @@ -94,7 +96,7 @@ impl InlineQueryResultDocument { self } - pub fn mime_type(mut self, val: MimeWrapper) -> Self { + pub fn mime_type(mut self, val: Mime) -> Self { self.mime_type = val; self } diff --git a/src/types/inline_query_result_video.rs b/src/types/inline_query_result_video.rs index 7d190473..a9d9030f 100644 --- a/src/types/inline_query_result_video.rs +++ b/src/types/inline_query_result_video.rs @@ -1,6 +1,7 @@ +use mime::Mime; use serde::{Deserialize, Serialize}; -use crate::types::{InlineKeyboardMarkup, InputMessageContent, MimeWrapper, ParseMode}; +use crate::types::{InlineKeyboardMarkup, InputMessageContent, ParseMode}; /// Represents a link to a page containing an embedded video player or a video /// file. @@ -20,7 +21,8 @@ pub struct InlineQueryResultVideo { pub video_url: String, /// Mime type of the content of video url, `text/html` or `video/mp4`. - pub mime_type: MimeWrapper, + #[serde(with = "crate::types::non_telegram_types::mime::deser")] + pub mime_type: Mime, /// URL of the thumbnail (jpeg only) for the video. pub thumb_url: String, @@ -69,7 +71,7 @@ impl InlineQueryResultVideo { pub fn new( id: S1, video_url: S2, - mime_type: MimeWrapper, + mime_type: Mime, thumb_url: S3, title: S4, ) -> Self @@ -112,7 +114,7 @@ impl InlineQueryResultVideo { self } - pub fn mime_type(mut self, val: MimeWrapper) -> Self { + pub fn mime_type(mut self, val: Mime) -> Self { self.mime_type = val; self } diff --git a/src/types/non_telegram_types/mime.rs b/src/types/non_telegram_types/mime.rs new file mode 100644 index 00000000..c5655cc7 --- /dev/null +++ b/src/types/non_telegram_types/mime.rs @@ -0,0 +1,100 @@ +use std::fmt; + +use mime::Mime; +use serde::{de::Visitor, Deserialize, Deserializer, Serialize, Serializer}; + +pub(crate) mod deser { + use mime::Mime; + use serde::{Deserialize, Deserializer, Serialize, Serializer}; + + use super::{MimeDe, MimeSer}; + + pub(crate) fn serialize( + this: &Mime, + serializer: S, + ) -> Result<::Ok, ::Error> + where + S: Serializer, + { + MimeSer(this).serialize(serializer) + } + + pub(crate) fn deserialize<'de, D>( + deserializer: D, + ) -> Result>::Error> + where + D: Deserializer<'de>, + { + MimeDe::deserialize(deserializer).map(|MimeDe(m)| m) + } +} + +pub(crate) mod opt_deser { + use mime::Mime; + use serde::{Deserialize, Deserializer, Serialize, Serializer}; + + use super::{MimeDe, MimeSer}; + + pub(crate) fn serialize( + this: &Option, + serializer: S, + ) -> Result<::Ok, ::Error> + where + S: Serializer, + { + this.as_ref().map(MimeSer).serialize(serializer) + } + + pub(crate) fn deserialize<'de, D>( + deserializer: D, + ) -> Result, >::Error> + where + D: Deserializer<'de>, + { + Option::::deserialize(deserializer).map(|opt| opt.map(|MimeDe(m)| m)) + } +} + +struct MimeSer<'a>(&'a Mime); + +impl Serialize for MimeSer<'_> { + fn serialize(&self, serializer: S) -> Result<::Ok, ::Error> + where + S: Serializer, + { + serializer.serialize_str(self.0.as_ref()) + } +} + +struct MimeVisitor; +impl<'a> Visitor<'a> for MimeVisitor { + type Value = MimeDe; + + fn expecting( + &self, + formatter: &mut fmt::Formatter<'_>, + ) -> Result<(), serde::export::fmt::Error> { + formatter.write_str("mime type") + } + + fn visit_str(self, v: &str) -> Result + where + E: serde::de::Error, + { + match v.parse::() { + Ok(mime_type) => Ok(MimeDe(mime_type)), + Err(e) => Err(E::custom(e)), + } + } +} + +struct MimeDe(Mime); + +impl<'de> Deserialize<'de> for MimeDe { + fn deserialize(deserializer: D) -> Result>::Error> + where + D: Deserializer<'de>, + { + deserializer.deserialize_str(MimeVisitor) + } +} diff --git a/src/types/non_telegram_types/mime_wrapper.rs b/src/types/non_telegram_types/mime_wrapper.rs deleted file mode 100644 index 43326de6..00000000 --- a/src/types/non_telegram_types/mime_wrapper.rs +++ /dev/null @@ -1,44 +0,0 @@ -use derive_more::From; -use mime::Mime; -use serde::{de::Visitor, export::Formatter, Deserialize, Deserializer, Serialize, Serializer}; - -/// Serializable & deserializable `MIME` wrapper. -#[derive(Clone, Debug, Eq, Hash, PartialEq, From)] -pub struct MimeWrapper(pub Mime); - -impl Serialize for MimeWrapper { - fn serialize(&self, serializer: S) -> Result<::Ok, ::Error> - where - S: Serializer, - { - serializer.serialize_str(self.0.as_ref()) - } -} - -struct MimeVisitor; -impl<'a> Visitor<'a> for MimeVisitor { - type Value = MimeWrapper; - - fn expecting(&self, formatter: &mut Formatter<'_>) -> Result<(), serde::export::fmt::Error> { - formatter.write_str("mime type") - } - - fn visit_str(self, v: &str) -> Result - where - E: serde::de::Error, - { - match v.parse::() { - Ok(mime_type) => Ok(MimeWrapper(mime_type)), - Err(e) => Err(E::custom(e)), - } - } -} - -impl<'de> Deserialize<'de> for MimeWrapper { - fn deserialize(deserializer: D) -> Result>::Error> - where - D: Deserializer<'de>, - { - deserializer.deserialize_str(MimeVisitor) - } -} diff --git a/src/types/non_telegram_types/mod.rs b/src/types/non_telegram_types/mod.rs index 6c8e1636..49360c4f 100644 --- a/src/types/non_telegram_types/mod.rs +++ b/src/types/non_telegram_types/mod.rs @@ -1,9 +1,9 @@ pub use country_code::*; pub use currency::*; -pub use mime_wrapper::*; pub use non_strict_vec::*; mod country_code; mod currency; -mod mime_wrapper; mod non_strict_vec; + +pub(crate) mod mime; diff --git a/src/types/video.rs b/src/types/video.rs index 98241c49..1db5737f 100644 --- a/src/types/video.rs +++ b/src/types/video.rs @@ -1,6 +1,7 @@ +use mime::Mime; use serde::{Deserialize, Serialize}; -use crate::types::{MimeWrapper, PhotoSize}; +use crate::types::PhotoSize; /// This object represents a video file. /// @@ -29,7 +30,8 @@ pub struct Video { pub thumb: Option, /// Mime type of a file as defined by sender. - pub mime_type: Option, + #[serde(with = "crate::types::non_telegram_types::mime::opt_deser")] + pub mime_type: Option, /// File size. pub file_size: Option, @@ -95,7 +97,7 @@ impl Video { self } - pub fn mime_type(mut self, val: MimeWrapper) -> Self { + pub fn mime_type(mut self, val: Mime) -> Self { self.mime_type = Some(val); self } diff --git a/src/types/voice.rs b/src/types/voice.rs index f60cc204..2fc7a5b9 100644 --- a/src/types/voice.rs +++ b/src/types/voice.rs @@ -1,4 +1,4 @@ -use crate::types::MimeWrapper; +use mime::Mime; use serde::{Deserialize, Serialize}; /// This object represents a voice note. @@ -19,7 +19,8 @@ pub struct Voice { pub duration: u32, /// MIME type of the file as defined by sender. - pub mime_type: Option, + #[serde(with = "crate::types::non_telegram_types::mime::opt_deser")] + pub mime_type: Option, /// File size. pub file_size: Option, @@ -61,7 +62,7 @@ impl Voice { self } - pub fn mime_type(mut self, val: MimeWrapper) -> Self { + pub fn mime_type(mut self, val: Mime) -> Self { self.mime_type = Some(val); self } From 785237985201e5445424032e2836b6b763d72290 Mon Sep 17 00:00:00 2001 From: Waffle Date: Wed, 13 Jan 2021 16:08:05 +0300 Subject: [PATCH 2/9] Make Currency and CountryCode ISO compatible and add docs --- src/types/non_telegram_types/country_code.rs | 250 +++++++++++++++++ src/types/non_telegram_types/currency.rs | 275 +++++++++++++++++++ 2 files changed, 525 insertions(+) diff --git a/src/types/non_telegram_types/country_code.rs b/src/types/non_telegram_types/country_code.rs index 4f7705ac..ddb4154e 100644 --- a/src/types/non_telegram_types/country_code.rs +++ b/src/types/non_telegram_types/country_code.rs @@ -1,254 +1,504 @@ use serde::{Deserialize, Serialize}; +/// ISO 3166-1 alpha-2 language code. #[derive(Copy, Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)] pub enum CountryCode { + /// Andorra AD, + /// United Arab Emirates AE, + /// Afghanistan AF, + /// Antigua and Barbuda AG, + /// Anguilla AI, + /// Albania AL, + /// Armenia AM, + /// Angola AO, + /// Antarctica AQ, + /// Argentina AR, + /// American Samoa AS, + /// Austria AT, + /// Australia AU, + /// Aruba AW, + /// Åland Islands AX, + /// Azerbaijan AZ, + /// Bosnia and Herzegovina BA, + /// Barbados BB, + /// Bangladesh BD, + /// Belgium BE, + /// Burkina Faso BF, + /// Bulgaria BG, + /// Bahrain BH, + /// Burundi BI, + /// Benin BJ, + /// Saint Barthélemy BL, + /// Bermuda BM, + /// Brunei Darussalam BN, + /// Bolivia (Plurinational State of) BO, + /// Bonaire, Sint Eustatius and Saba BQ, + /// Brazil BR, + /// Bahamas BS, + /// Bhutan BT, + /// Bouvet Island BV, + /// Botswana BW, + /// Belarus BY, + /// Belize BZ, + /// Canada CA, + /// Cocos (Keeling) Islands CC, + /// Congo, Democratic Republic of the CD, + /// Central African Republic CF, + /// Congo CG, + /// Switzerland CH, + /// Côte d'Ivoire CI, + /// Cook Islands CK, + /// Chile CL, + /// Cameroon CM, + /// China CN, + /// Colombia CO, + /// Costa Rica CR, + /// Cuba CU, + /// Cabo Verde CV, + /// Curaçao CW, + /// Christmas Island CX, + /// Cyprus CY, + /// Czechia CZ, + /// Germany DE, + /// Djibouti DJ, + /// Denmark DK, + /// Dominica DM, + /// Dominican Republic DO, + /// Algeria DZ, + /// Ecuador EC, + /// Estonia EE, + /// Egypt EG, + /// Western Sahara EH, + /// Eritrea ER, + /// Spain ES, + /// Ethiopia ET, + /// Finland FI, + /// Fiji FJ, + /// Falkland Islands (Malvinas) FK, + /// Micronesia (Federated States of) FM, + /// Faroe Islands FO, + /// France FR, + /// Gabon GA, + /// United Kingdom of Great Britain and Northern Ireland GB, + /// Grenada GD, + /// Georgia GE, + /// French Guiana GF, + /// Guernsey GG, + /// Ghana GH, + /// Gibraltar GI, + /// Greenland GL, + /// Gambia GM, + /// Guinea GN, + /// Guadeloupe GP, + /// Equatorial Guinea GQ, + /// Greece GR, + /// South Georgia and the South Sandwich Islands GS, + /// Guatemala GT, + /// Guam GU, + /// Guinea-Bissau GW, + /// Guyana GY, + /// Hong Kong HK, + /// Heard Island and McDonald Islands HM, + /// Honduras HN, + /// Croatia HR, + /// Haiti HT, + /// Hungary HU, + /// Indonesia ID, + /// Ireland IE, + /// Israel IL, + /// Isle of Man IM, + /// India IN, + /// British Indian Ocean Territory IO, + /// Iraq IQ, + /// Iran (Islamic Republic of) IR, + /// Iceland IS, + /// Italy IT, + /// Jersey JE, + /// Jamaica JM, + /// Jordan JO, + /// Japan JP, + /// Kenya KE, + /// Kyrgyzstan KG, + /// Cambodia KH, + /// Kiribati KI, + /// Comoros KM, + /// Saint Kitts and Nevis KN, + /// Korea (Democratic People's Republic of) KP, + /// Korea, Republic of KR, + /// Kuwait KW, + /// Cayman Islands KY, + /// Kazakhstan KZ, + /// Lao People's Democratic Republic LA, + /// Lebanon LB, + /// Saint Lucia LC, + /// Liechtenstein LI, + /// Sri Lanka LK, + /// Liberia LR, + /// Lesotho LS, + /// Lithuania LT, + /// Luxembourg LU, + /// Latvia LV, + /// Libya LY, + /// Morocco MA, + /// Monaco MC, + /// Moldova, Republic of MD, + /// Montenegro ME, + /// Saint Martin (French part) MF, + /// Madagascar MG, + /// Marshall Islands MH, + /// North Macedonia MK, + /// Mali ML, + /// Myanmar MM, + /// Mongolia MN, + /// Macao MO, + /// Northern Mariana Islands MP, + /// Martinique MQ, + /// Mauritania MR, + /// Montserrat MS, + /// Malta MT, + /// Mauritius MU, + /// Maldives MV, + /// Malawi MW, + /// Mexico MX, + /// Malaysia MY, + /// Mozambique MZ, + /// Namibia NA, + /// New Caledonia NC, + /// Niger NE, + /// Norfolk Island NF, + /// Nigeria NG, + /// Nicaragua NI, + /// Netherlands NL, + /// Norway NO, + /// Nepal NP, + /// Nauru NR, + /// Niue NU, + /// New Zealand NZ, + /// Oman OM, + /// Panama PA, + /// Peru PE, + /// French Polynesia PF, + /// Papua New Guinea PG, + /// Philippines PH, + /// Pakistan PK, + /// Poland PL, + /// Saint Pierre and Miquelon PM, + /// Pitcairn PN, + /// Puerto Rico PR, + /// Palestine, State of PS, + /// Portugal PT, + /// Palau PW, + /// Paraguay PY, + /// Qatar QA, + /// Réunion RE, + /// Romania RO, + /// Serbia RS, + /// Russian Federation RU, + /// Rwanda RW, + /// Saudi Arabia SA, + /// Solomon Islands SB, + /// Seychelles SC, + /// Sudan SD, + /// Sweden SE, + /// Singapore SG, + /// Saint Helena, Ascension and Tristan da Cunha SH, + /// Slovenia SI, + /// Svalbard and Jan Mayen SJ, + /// Slovakia SK, + /// Sierra Leone SL, + /// San Marino SM, + /// Senegal SN, + /// Somalia SO, + /// Suriname SR, + /// South Sudan SS, + /// Sao Tome and Principe ST, + /// El Salvador SV, + /// Sint Maarten (Dutch part) SX, + /// Syrian Arab Republic SY, + /// Eswatini SZ, + /// Turks and Caicos Islands TC, + /// Chad TD, + /// French Southern Territories TF, + /// Togo TG, + /// Thailand TH, + /// Tajikistan TJ, + /// Tokelau TK, + /// Timor-Leste TL, + /// Turkmenistan TM, + /// Tunisia TN, + /// Tonga TO, + /// Turkey TR, + /// Trinidad and Tobago TT, + /// Tuvalu TV, + /// Taiwan, Province of China TW, + /// Tanzania, United Republic of TZ, + /// Ukraine UA, + /// Uganda UG, + /// United States Minor Outlying Islands UM, + /// United States of America US, + /// Uruguay UY, + /// Uzbekistan UZ, + /// Holy See VA, + /// Saint Vincent and the Grenadines VC, + /// Venezuela (Bolivarian Republic of) VE, + /// Virgin Islands (British) VG, + /// Virgin Islands (U.S.) VI, + /// Viet Nam VN, + /// Vanuatu VU, + /// Wallis and Futuna WF, + /// Samoa WS, + /// Yemen YE, + /// Mayotte YT, + /// South Africa ZA, + /// Zambia ZM, + /// Zimbabwe ZW, } diff --git a/src/types/non_telegram_types/currency.rs b/src/types/non_telegram_types/currency.rs index 0cdebce6..dcdec729 100644 --- a/src/types/non_telegram_types/currency.rs +++ b/src/types/non_telegram_types/currency.rs @@ -1,89 +1,364 @@ use serde::{Deserialize, Serialize}; +/// ISO 4217 currency. #[derive(Copy, Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)] pub enum Currency { + /// United Arab Emirates dirham AED, + /// Afghan afghani AFN, + /// Albanian lek ALL, + /// Armenian dram AMD, + /// Netherlands Antillean guilder + ANG, + /// Angolan kwanza + AOA, + /// Argentine peso ARS, + /// Australian dollar AUD, + /// Aruban florin + AWG, + /// Azerbaijani manat AZN, + /// Bosnia and Herzegovina convertible mark BAM, + /// Barbados dollar + BBD, + /// Bangladeshi taka BDT, + /// Bulgarian lev BGN, + /// Bahraini dinar + BHD, + /// Burundian franc + BIF, + /// Bermudian dollar + BMD, + /// Brunei dollar BND, + /// Boliviano BOB, + /// Bolivian Mvdol (funds code) + BOV, + /// Brazilian real BRL, + /// Bahamian dollar + BSD, + /// Bhutanese ngultrum + BTN, + /// Botswana pula + BWP, + /// Belarusian ruble + BYN, + /// Belize dollar + BZD, + /// Canadian dollar CAD, + /// Congolese franc + CDF, + /// WIR euro (complementary currency) + CHE, + /// Swiss franc CHF, + /// WIR franc (complementary currency) + CHW, + /// Unidad de Fomento (funds code) + CLF, + /// Chilean peso CLP, + /// Chinese yuan CNY, + /// Colombian peso COP, + /// Unidad de Valor Real (UVR) (funds code) + COU, + /// Costa Rican colon CRC, + /// Cuban convertible peso + CUC, + /// Cuban peso + CUP, + /// Cape Verdean escudo + CVE, + /// Czech koruna CZK, + /// Djiboutian franc + DJF, + /// Danish krone DKK, + /// Dominican peso DOP, + /// Algerian dinar DZD, + /// Egyptian pound EGP, + /// Eritrean nakfa + ERN, + /// Ethiopian birr + ETB, + /// Euro EUR, + /// Fiji dollar + FJD, + /// Falkland Islands pound + FKP, + /// Pound sterling GBP, + /// Georgian lari GEL, + /// Ghanaian cedi + GHS, + /// Gibraltar pound + GIP, + /// Gambian dalasi + GMD, + /// Guinean franc + GNF, + /// Guatemalan quetzal GTQ, + /// Guyanese dollar + GYD, + /// Hong Kong dollar HKD, + /// Honduran lempira HNL, + /// Croatian kuna HRK, + /// Haitian gourde + HTG, + /// Hungarian forint HUF, + /// Indonesian rupiah IDR, + /// Israeli new shekel ILS, + /// Indian rupee INR, + /// Iraqi dinar + IQD, + /// Iranian rial + IRR, + /// Icelandic króna ISK, + /// Jamaican dollar JMD, + /// Jordanian dinar + JOD, + /// Japanese yen JPY, + /// Kenyan shilling KES, + /// Kyrgyzstani som KGS, + /// Cambodian riel + KHR, + /// Comoro franc + KMF, + /// North Korean won + KPW, + /// South Korean won KRW, + /// Kuwaiti dinar + KWD, + /// Cayman Islands dollar + KYD, + /// Kazakhstani tenge KZT, + /// Lao kip + LAK, + /// Lebanese pound LBP, + /// Sri Lankan rupee LKR, + /// Liberian dollar + LRD, + /// Lesotho loti + LSL, + /// Libyan dinar + LYD, + /// Moroccan dirham MAD, + /// Moldovan leu MDL, + /// Malagasy ariary + MGA, + /// Macedonian denar + MKD, + /// Myanmar kyat + MMK, + /// Mongolian tögrög MNT, + /// Macanese pataca + MOP, + /// Mauritanian ouguiya + MRU, + /// Mauritian rupee MUR, + /// Maldivian rufiyaa MVR, + /// Malawian kwacha + MWK, + /// Mexican peso MXN, + /// Mexican Unidad de Inversion (UDI) (funds code) + MXV, + /// Malaysian ringgit MYR, + /// Mozambican metical MZN, + /// Namibian dollar + NAD, + /// Nigerian naira NGN, + /// Nicaraguan córdoba NIO, + /// Norwegian krone NOK, + /// Nepalese rupee NPR, + /// New Zealand dollar NZD, + /// Omani rial + OMR, + /// Panamanian balboa PAB, + /// Peruvian sol PEN, + /// Papua New Guinean kina + PGK, + /// Philippine peso PHP, + /// Pakistani rupee PKR, + /// Polish złoty PLN, + /// Paraguayan guaraní PYG, + /// Qatari riyal QAR, + /// Romanian leu RON, + /// Serbian dinar RSD, + /// Russian ruble RUB, + /// Rwandan franc + RWF, + /// Saudi riyal SAR, + /// Solomon Islands dollar + SBD, + /// Seychelles rupee + SCR, + /// Sudanese pound + SDG, + /// Swedish krona/kronor SEK, + /// Singapore dollar SGD, + /// Saint Helena pound + SHP, + /// Sierra Leonean leone + SLL, + /// Somali shilling + SOS, + /// Surinamese dollar + SRD, + /// South Sudanese pound + SSP, + /// São Tomé and Príncipe dobra + STN, + /// Salvadoran colón + SVC, + /// Syrian pound + SYP, + /// Swazi lilangeni + SZL, + /// Thai baht THB, + /// Tajikistani somoni TJS, + /// Turkmenistan manat + TMT, + /// Tunisian dinar + TND, + /// Tongan paʻanga + TOP, + /// Turkish lira TRY, + /// Trinidad and Tobago dollar TTD, + /// New Taiwan dollar TWD, + /// Tanzanian shilling TZS, + /// Ukrainian hryvnia UAH, + /// Ugandan shilling UGX, + /// United States dollar USD, + /// United States dollar (next day) (funds code) + USN, + /// Uruguay Peso en Unidades Indexadas (URUIURUI) (funds code) + UYI, + /// Uruguayan peso UYU, + /// Unidad previsional + UYW, + /// Uzbekistan som UZS, + /// Venezuelan bolívar soberano + VES, + /// Vietnamese đồng VND, + /// Vanuatu vatu + VUV, + /// Samoan tala + WST, + /// CFA franc BEAC + XAF, + /// Silver (one troy ounce) + XAG, + /// Gold (one troy ounce) + XAU, + /// European Composite Unit (EURCO) (bond market unit) + XBA, + /// European Monetary Unit (E.M.U.-6) (bond market unit) + XBB, + /// European Unit of Account 9 (E.U.A.-9) (bond market unit) + XBC, + /// European Unit of Account 17 (E.U.A.-17) (bond market unit) + XBD, + /// East Caribbean dollar + XCD, + /// Special drawing rights + XDR, + /// CFA franc BCEAO + XOF, + /// Palladium (one troy ounce) + XPD, + /// CFP franc (franc Pacifique) + XPF, + /// Platinum (one troy ounce) + XPT, + /// SUCRE + XSU, + /// Code reserved for testing + XTS, + /// ADB Unit of Account + XUA, + /// No currency + XXX, + /// Yemeni rial YER, + /// South African rand ZAR, + /// Zambian kwacha + ZMW, + /// Zimbabwean dollar + ZWL, } From e513cbb453155ed3a1460204dc58ba8d939a8aaa Mon Sep 17 00:00:00 2001 From: Waffle Date: Wed, 13 Jan 2021 16:10:56 +0300 Subject: [PATCH 3/9] Add media (example gif & logo) --- media/example.gif | Bin 0 -> 110031 bytes media/logo.png | Bin 0 -> 52318 bytes media/logo.svg | 1907 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1907 insertions(+) create mode 100644 media/example.gif create mode 100644 media/logo.png create mode 100644 media/logo.svg diff --git a/media/example.gif b/media/example.gif new file mode 100644 index 0000000000000000000000000000000000000000..a0605aa6b5455e19e0281efe17329666394b4355 GIT binary patch literal 110031 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 Sh9NKNz#Q3Ds!#~P@V@||Ys6Uq literal 0 HcmV?d00001 diff --git a/media/logo.png b/media/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2155dd30fb8636c6c0c86549277e426aa48bdc9b GIT binary patch literal 52318 zcmY(rbyyW^_dh(FMi4fQNF!wcDk3EyEe%rAp@4L!go4tcpeP`XbV)Z#9)nUqX#u5M zx_)bX-tQmpxvo>X_b@Z}y4U*DZMcS-!r3znXAlHAdq+`L3qf$;KXDKu0{GWo@9zij zFJfoKdu|AVIYs}*hzhX1fnPl5E~oE)*U8G=%iQ$=;^pPV_t4SK&C=ZY0iTnrb@Hk> z1A?$3cVusCd#5aqdp){4cu2V3TepynQR2?^G}k$bUY?VdqGYUQkQ+3kaN@5VRq=T;sK%hylsR19v~;toL73lO|$g{y@sA zeBePFlsq6gj2Kx(8Jk7ry#D$p{=fhJ^Qt_fbyj5wQDVP%u^^?i)XA;K=TeW)b!7XT zrA}2$Bv#!@fF8@l6de{ugtQJ8>bV^JeW-t#HkyN@JAl#O3K%_KAD}Py)cDvJ@|u}enIH{R!b`6A>ZjeLil>aJ~WZaU9)Q_y6ww=e17 z#1Tym_Vx9B`tadH;Jch0pYQC_vF9*(hBc0En$%smicbhT3eRsF(&K0a;%752jr?8s)?c7=Dbb|CZ`YBO zMZ)M;n9^SzY#g?W7@0n2i7O)`;~y8QLs zo=00>Z?11`xy|oG_0tR5V6R=frX5q{ef#!p{rC5YKYmoI4(YsqEyKDuwfobj`qOwF zt!n#wU*3w*X=-Yc-I}x)nt4iRBIWA({?l^`E!U`WH`>St^KY(O57ixxI5J`2trjye zFw|4G+91EjeH^5XZaf^gpq;PP@oO$LBqUukOa4c#OP1B8g-|l4h(BMG6Kmh5r?cYW z;hFWO-Z~@uyD=yT`SSW|R`rLA#t*28LDtLftrdc*gDlmzI-Ru z=g+zJ_I943)U2bUqxFq0maKr|1GScFmzhqoSbFRT8}56g(OI|1RNVJ1|d@)2w7zB-@j1pIKEgtxIhq$VS!Z%4?S5SeiHQh zHGPpu(@61}<#c!q(*j2Ff4M4jbaqZJ z+8%d9v>ZHX=$HbF|5w>j6OL&oY|jC(<{1VYHDgf(RiE*?@s;a8DO5A56Vv+XF&Y0C@F*=xy`@WZXg7js|k-S#nN|Eq4C>O%T!4dFS)K0jhr&cbsmIECC zdPPpAA)}bbVhB_+Z?o=4GlACo*M9A}bU39Fxo{J(=38_`Jih5Pp>40IoR8NEv*Va4 zXpY7<7ONV~aN|ryMn*)?OZv-gb}y)~Z;5t7meg|YM3!SVcv})(~PU?WH3O ztEgy_Ee_V{+66AIKesp;E^g%V!Ghuh)li2$O<+GcIq{y)2<FMe9 zpVnz?tgKQWx+DG&-@uR(;3nO4ipkEt;J*BW!o|gf=**dqP;6%9dG+JT-f7h|mvkHb zxBh&kJl06G`FKTC^nj-G$MTEH+e&G|^sVY1I zg6Y}+;%nU(UW}Fy>j$QGMV}AF;1aaj2-2Q6TpB8-U}lb)3^-KXq7cYDA9Z!87^bz4qSNZT8fnl}%ZBNf?nNlAZ9TY4qrLOmP>9E+KsVTGNALVTsb9x2Z#BP7S-2VOP zrB2N900~jA)u_LJ-E~SW1?bmd6i;=~ znY#PBSi*0m`Y!T9XLy;(VX_#To}Mm5NXFRh^+!&P?vqgR*9wfroO;SYjxt@Ms4nb0 zSe5j96;|{&9T}nQ-buUbGKsqP6>Sj)CEc)_PBaa8{K3q5^e09s|6awPTVkF)BA00+ z-&O7V14zt}Aw1ffi7hbZ5Eo~JTW|iHb-lT{84%aMH}aH&!=%K=%IXguqBi);#rC|J zyZhfr-fF{I-0QrFhXcm-?wZ983j2F|^Ceqec$Qx{$o^<< ztqEVfN-^obYaE_yrF3wQEr-g|{yvP-o7N^X&Nx^)I=#fJLf`hwh{}5w5)=Au+OzM( z3wSR7u%M%;FMwUcS&*epQZtr&A#ey#M#RzO5fW0;_8;YzS04^!ThJYd$SmwB=6|5K z+*_3D0luPEvG{48}(9!ywx_&$G7HD9Q#(v2IsgL=gV zG^YOBGz6sd8q*hDVIITo(&o7~O~!c+fBt*^-SAuvddvBr72M5x( zOW3szdb@k&79AZh$}U$+_1$XOwy?0MM!aP=x)t-^!#JTl+b?#BlM~;vE2iUTg|$P= z+|p9yv$N+jAAEjgGgv?~ZvMO>Ma+w=!E3EE^_Cw{gy#*E-6K_YmLEfi9gp8!eWN0H zO)g=59O%XY?XFolu@uyCR#ds^V0d@}Ews;;lf@Gjj*6dAaQPWnKkwP+3IIk3Ylc#} z4_-ch{uo-_S+qSti(CiH(c0U4tkXMM;}rYli%N}YqBjkNR2x7lrb~+-EU1ED+`moP z8Y*}yr}Px=-~8lg-yrmM*lOe70p-1|Udbx5;CV*N~xsU_V&umo;02h z-)x7dGU@*QWK)_-kz}Hyqtp3r*|CB{pJ5@MO`UQ4C8YM5gqSQFL1f3KfhPIUrGGG( zEWKfo?YY)t+EI#WhJ$4+ep6qWd0XJi#LKpL>5{7zx8kr0{fYE!B^kYBni?7=CMIiv zCx0ZVkYJvOQ;)k+?Vs`S@X}p>e?sq)Pp8D_=an0TiVLkGf%|DKUV1nhxoU68qOSfX zF^t#Bhcd?E<*KD{g(%|PPWM1$@0^8c%P?}}gpTTsrw_m{MmuhNchtzwm z#jwddOSk{|UQQxled_jQgGwSO3%-8Mf}Ypc9z=X5{EL+if@x_9MdDaTYe|YCy2)n$ z{#utA_Oy6dYIJwOfN=~D=ZSS=4g_wO6*NwSSQf=Mh!SKLp_d0zy8B3NrZXD8WeMcS zY-74Zza`+-7psZ_mwqCIjdLcZH!dxWMbvXSY@*3;a@QA1wL@&JG5DfRf!R>ey@D?J z1a2Z}1w`R-g94(42^+e|Go1wE(F{sft%dK#4H^Il9WbJF&JApBZM9W9jG77b#b`+z zJt)^l@sG|6kF5SM6q(%e{VQc-llQHZ1<<&V<5-@zk*tTI+FQ{<<~Yiryu7@N5)u-D z56@G%yo!w_*Dcc5%#7c0b#*PX9lZDmP+zU*N|HsnoSfXRhPCFqMYp7t3MKpxc6(n-QK_VAve1={ zs|}AIKSrBhs{hVCfZFGPdwvAoro?Cn@Je}%Kr^+&;sc;M^J{NdBiMnMgc34)Bl20A zOMQx0lY|@!6w!)f`nxhp2lyx=>dVuoPct5Vd-nsVdH5*1<8PR!b$E!FKN93Np)?Z| zMgj#$ZTHzsfR&e*_|Ba>KUxAMX|EWBOa`8gFW?6c7U;Ao^EZV6_Uo|V;N*y42dEwa z?FXNboLSb>bEhTsZiA;orPCxc^l@2P*$@KF7t@V9BX)Vl4MKl<(_&jrPe${HuXUoB z9lb4LV&aG{S~@xf;vll{%suQZ9wK%9N-$dquW57R#TBj#7g*WYFu;4!(OCBI8y6@? zlUp|^C@8!aauU~JxA^chGa2|MRDBy<4Eg#^)Xm{Hf)HD4B(6s~ZSbI5!a@r*7 zs{88LIe07-slnZl$N%TvJG^&rFpYNNGzot!jn3?C=Ln4@v9P>Iw+Y6w5)2kv=m4gV zKE0=Lqw~D?YTexGX*;EovNDQ#%J2V2dH??Xv2A@tMIxACL4X@R4iD>X>xWr_0tkF(rSEEHW~>tXvs60IV($F+;Qsxo!qVoC z>XOGHadB9nWw`1R``Lz)u`t}TSAq^MFpxgmybNN}c}x43L;cvfZJ4OI1fS!xPifzARuCVZFZ+<-ls0R8jl&YgRG%ddKRg^Qcp@@vwKh#FOMfgVf`!d{o4t~!+ExCUl7cwtrYT!k46^cjfcH~# z`0~N_Qh}+=e{GpzUg>yJE%cU;aS+L3To^CpEYIs^tRDwVbW8U4hLr4+AbA0WYW<D>aqu7%2o<5`ge*d2T<& zN}pHk3H%&4?Xz)5-=;nU_XFSnF@u320{#Plmh9uau$qiD=Ho0psW~1J?$ZlII1~Q6 z?m0TuIPv}T!FH1>FKWQs1)X2b*kD`AJ zkc-mX++9nUm)U=JJ}q_#gB^xe`3oe?K2g%?5Kvq9_G;HG=|EM6#bi{7Vf+BFsVwj` z;0T5&R<3`C5oXBVo_D3gC~fSm9r{lR{eK>njg1)rbhB}Fm~I3yTDwS}0-)JQ%~T}%xGBB|qnQ1bIvuK?BHzzso*vZEz2J9bNw z@D~j@Sl|XyPqMugU@I(YUtzg&y zARAhhRPl2lk-I&QJs&Oqy-<%_HA(Qcv@}j;R@TDYL>tV2nQ!Wn9q`cEihj^RWq?}( zP?Hg~=|c(g`c}hkM%BZI59zO4k&-bArz?`?;Bg{7sD1(veC@DJpIVdp`HL4%I22;0 zx}S3hyU)jcv#vcnJhU9Ebx~ANaX&baWr7R9e34u~Tx+phn`ly0R(6~B0A1?!b!#%) zp`v`(kkrETbObhe7l_1+0nz<7m7KURx#jNP&yJv=v@SBNA!7;H%lO8T29mdYmV7i8 z-Y8TFD5Uj*iE7_4G1;^U3^o>9Us0dkxP^>jvIasP|e zb@^E4Xqd+dd2jprG%9WSaU4b}Zv&RFIs3R1t+D4E3hcLTHFbC4-hRVdZk5{D zJ}D_Fg87y&>-Fn*%Y~ZgIguFXB`nWK&t)#&xOV-zgB?)}^DSFL1&u8Evnpv4Z)uMn zPN7xO>@QYr|5Gcor&$=DyAzmmIAD`YBPHCQKYwn6%^BY0w|jA<1OydIO3J=!2g6EG z{6IF+uJoUN4R8%5Wwnp?-#eU`Fb~AW#)kIWXm1~Yp#BlWbDgGViRpN)n&>XJw=Xg* zeJGUdvM|7@U8wst=ON*=c#nu$s(5&@VT}b4GgNq494^wzIRgM8cYgjwE;=y7C^($= z*3ETFIf!t8L^_C_=kf6@1vkN{-klf#mDi!yFx2wK(N=H6c9N(ZaZr}$>e!vPWprYG zJC}z_j3a?l3O5PK5Z|yHYEKby!!j~1@7OgcgJNOgw{jyz+-IP8_(4<#$U=%rN+|Yj zI_Q0^@02o9`7q0a-dBn^hy#SQfWwuWBQdiNwC>(5H*X_20u>j4`;aK3tb&5&&hpO! z^5?d{;Ku2N>|g&0>;d>`GtnsW;>8OTxb7Vu+A)x8rt(C9SbYPuh@lK`Q6+@2%6Hqg zAnFf3Xi??MIMj=v+q1xrS0Gu zc(Uvy29uBAD1drn5Sl^ARe(324!i=|=rYJ9`pu6-0C@*TMUfV_@ecK8DQx^ncCvsc zGjZ|q-QRpbdhQyYUa85TXhI+$w-0dtT$aVxLs=@m7EtX> zr5;#cR271KWXnY0@&sV*&dTUj5ON>w{IrHP@tTiJpw9L8nVuApUsT#zyA5|2t7<^1(Ex&Do%TuEbJl%YYg}?)m!@&1K_y>Pxys>q+sSL_u^0mtw&d zvk3C#`iNaAukL|?UDQ?33a0+!PLqZ4=l&+{C9PG(IY8(pTl;$FiZRX!Mx&;mWsH>0 z_teR_m2<15v_jpNgSKpOiFa`jCOHbd8n=fG>t82M07Rd7w51A$lnqmah49>u8YdQb zd7<6iijAO$K{v~mZN<&^CrYl#xPhqUnKX%VB987YWNW*Vfn9_wkAg(p{;+a#%57Zq zPnAB=vKuOTGn6s*4X~_$?RTEpKYwhQB5VPmMx$E_P^R4lb@{q3#tWJn`1klU>Q!QOCs(HWcaCQCs=T+BM?`I@3p* z1?qx%&ZoQw&Bdm&)rPpRGT?;Aa?wX5~W#uwA&&zA~ppZT<88gFVnB8y#1k zR=j`zzRbFpxyZPI7K6c{WM-VF_UHcAT)Fp#MR8jnRT7S~uC{hU*Q0&khDbVoi-GJr zuW#7t=CAFoto*D1(PxjRHRND*tS%VnbcWMpGp7Xq#QE^dFk&h$Gx%asM;T~sUy^P_ zik@1a-OH(Io0fo_ISNYHhDj}7YVvDO7A*T2a`G-v^ef5QF1`6`b+q0_z6YB&?#-Kg z4`F5$rpXGrJN#c3;O;w>+l9KtW1gx#B33;q;cLx@Jr2X)#cpH!KrL;AHkC8oZC#A& z;wa}GGM^`=!EwcBBF%1uA~lB=vj;=7icC%q2kaP!5kbL+1G3w8aM!$d-e^-RB7EpD9%A#3zNA-T)*ePdf5VpA(`F+PK}R2 zy2|%uitKm-#hWI2O4$t!rqO4sFH3d9nHl4~ex2$cqKyZZfSR$ufD3FI+6~0>p~m+B*(e_ieR`3(c7M2!0ih#$ z5(K524nDX+Xyzr9st7qSfRv|D*roH4UItj-#(*+En}9%>tiuY7am&uA{_XGpUsUyL z-0BendogAxV_wb5ii_EA`KnT8io(+%qYokqFrnweG`Np;MxDHmw}*M}dIiIlvVido z+mnwb8}>A*#KAlV*xOx&WZN6}0YbI{c8y9&VQlZ}YU>K^dFb}N+5fOC;Mf-`nByYe zY{B}vv!KI>_L6|O3H(4XgQB45*u=yPmzx788v=2BE+D zJ=Z3p$t91lT=937G>D1}3EJA)P)h`$D+j!4uhp@~z_kFgR*}X2xJplot_1-Zqhc0j z_n+rkjSPL(WJ2`z_xI6#RGC(Tav&)c?0{$|Cul5A&$eKs#Za|z8+PK4&CQ189L?s38i zLp##;d){N%N48AQx~5Vr0jznS?9aKZj)}ljXt#rAiOxZK5!VaQFpFVpAJp<_lpgNh4_BWw$ zlq*SE?*J};ebtfxU|o&}53~8{$uSsSJa4__!_MEgwzdRF4h7Fo!-)Wt!Wn(Uy5b=8Rr;LK?xkixR)<;JcL6M7*gDp#~bKCK#}|W z>dM0llw~W9psgfB1rh^(o(J^jyR)3{L7(&)wjGFEk??}F%&jFAx|D4ga%Z=iz%u^J5oH4i!{J|Ow$&oS`N zH*bicFF=_BKj7fz?%Em23;_~1>eM2qs2G+!nPL4CkSRJS7&f`vaknAVBlCu6&iin6*pX%mo z;lm7xFi}t!p3^Tg!vH)|kU0tQE(2y|0m%c{zj6{iBK$NYgl^EYpwEqp`s}wT1;!?; zaD7P;p*nxlQM=OkX1_I#!2NFQ-=$&oB>|jc}XB8r{x=x<~>ae7)=)a8mtmpg<@W-012hTg28VqhmL@fE)dxaLhoLL zZUGB-UfBPjawtQXLs{?A2*i&B?0*OpxAD;MnKnm(xPxYoh>(~0rW3-w*zuH1KrX%?Wo|lEp>w`(x8OsujzIlUCt&8;0@?dDg z=DO?t5)rihuDFD4oPan5`qKa@*g>^qhX~K@0WQA^YFNRGIRf9MEcmQ;f%YBv>o=T~PP)e2=mGRSu&A#6G^a*FNsky!%fJxIfo3)hR5RxmEKnV=mg$#zCKnEWfqT!c{}(_8pEKH1{8y&|NgkSz=!$K z2ex0h9R^lLP0Y909ql+HKA|3 z{r+8h{FTwr0~|A<Cds1w>ToTMoR)l??&-hFI^%j)GHklC5^3t z?>^e-paV;Vs6QNr-1J+oiHw4DGW{xB8la(7WNi=XRT0E)-{64l$^;bOIv{HsCIU8D zYrs)Y0VvJ8nkP4at}q^3v?z)J$ie^vtH^_%83JC$XkLRYB6BDMEA0+M$^+za28Sv4xogntv?N9_dDH*rDhgWjA`$Y&{7%I-9kqd(a!A?vl*ldOL3q4pXG&1ZVwS%A% zqk?{Mn{y%PNk#hQ(s0|qb%>>`tlkYD$7YE>%V# z``$4yZ8R8!z7eH5sI=*(-HELvosABZv3^aySw$w}Vv>lUvN+`I;LAxUC)}L< z4=qDBBxt)IIRj7&p!y;<3-HndPfwuXqt}OhiO}&Gf#4`jR2K;h7<_q`xgMrs8BJB-B2B9V z-|Q%ZKu2_68d6;n(5?X2$$qR>b4h@REn5*SwDxeSCf{4F(DcJ0UI9NVYWM;Iu#6pI ztnfTE@Mx%=fIf5gEr-cwCUl32k`989;5Wz<1VsQ{L=JEe`e8s(sC>q>rcBiT6e^kn z7$W@CZ&h}BVC=vXvO`tQPqs*s60{k&%w1{I03@@uNKVDp-T<*Va}d%@?#BL3^A9gA zAs3yg`HD?Y(7kc!cI`(P>M&kVX#|pat@I5`8-XV+%qu_2ap5(8M_+-lb*uO?R-f zva}$h5Q3e?LZ%5aRiH0`8qn1M&yL=~@!>9NjR?F^u{BX^!jr<{iJu;Aq0sf$+FEHR zXJZUc1iiSo0Qjca9y}q~%-2AOXJAV1F1i^cyaL39PeN<<;R!xgPBU8hwf0Z^R{AzT zqkRotPJ4TMJmZbS=yL#qdFMe7U(bUb4Oke>6~H7o54sh4)85{-21_5_Yv<#l?A(1} zKrZ@S(<^}YFlgY3;d>Ej0SCn3kq?NHjsvzP0UNqRX%s?!0DkF(ozn-t`Zj@9PIT|y zy?^_#piKYrYjL0VCc9tkY#~NbpptVb6%llrV1$r|(#@qoaB;)XbQQWuWOcaJQ`>=9 zKzVz?PVH;-aqAe>5l5YWo%%bauToQEz|^sWt`}0<0Yc{Uq@)55`uZ&S$pUX24an5y zB>%Mqe3)e$7!s!i^d#QV*C_qp?@s-ZCa6aTI>-;8V8I0jp*He|!sEZs8`7vFCr4ZA z@NEN#Hss)6g>UD=Lgu^|cfOO?Uvn`PK|^@3h4t$1m2QEQG!34|zXx>WB*O9iJD&l! z;d*@F0UuM}@PzBZ6j-tLY6UGM!-EKx-4k`+{|N{(dJ>?V>&Qpy@Zwd1rf5G>c?VuI z0gV!SNP;}L&;z1)#y=|`QVH4rNLLyyfX*)fP|B#uSEu-oN2%A^1Vj;G?!pdChVl0; zLrM+GrXZEH&;SSIf^e@%|3un4nl>{5G)v~Li^G=v9gQgtvCTh&rUgY2_xyRr$PH~} z1VOcRRA%_z7*aA=Vx0V}jfgEr8obhx8mCftqzy1nX5cdgCNhJ7dccxZFC1UXfS#DA zl@o#Xsjvdn`xa%GxV>8Mqk9X3m7@SLf)DhNteqTpURG8Fh%i)(G?AvNloWynzF>gi zd#R-rrXtADQ&Loa7vsxOMkxdYP5)iyDBm(*sb0ov zUM7LZ9(efp=mZSmiMT5NG?1|pWL4<5{SL!!hH&}Nt zkx`Tq8W@etbaZrNKz9FM{csL})i2NqvQHM1xHlGsd$S`+7m!RIbl}Or`2*U-U2h`^5p$vR(=({~Uiq)_?fm_we)m_} z;cLN%lmHK`hKJqX`|Pfcqrul#Y~DrIY5uej8~FCGpproGr#Y#Mg*RjlqF+*H`o3)i zYF)u(0x`e^=F|pgr2pQ!@D+$4z%GVgFGrNR4XRdsNy%qx* zjlS|vA>Kr^l%$i~lx!Ei6BaUK_V#h3f@$5i=%Awo}@3=fWYjPVjHEQcElG2P17V#On)xiLfk|O{3PN zadcPR2v%osb+gVqDwHHjD~bJh^h;cyjB!}d{z@Ok-0q({cPC)(crS|dgIzbv^q^>Y&kTMg}52YghXG@KPKD@zN*M1Nf=sbk#y&@ zn*&pQN=RRO<93h@6Mh^s&kqme&&G8@AN5sj7_UV}b(Fx>3rx5rC0W3by#DI)y(h4; zG>45aMo>R{{#!12fnI5etxAvY@0WVcz~PG91kQm{(PhWfalKa@wibg8LmOn5t^!$S zlnfZlpOyt2j7Cs4LBNQMOE=iLM1=DsIJo@5XIh;R?riOgrew=+_^>ADkze_IW`itv zkNnxZj?JXZ^~jvNvoI?4-$GY>7;)%@>8Y}15yTq%u}x$Bvo7m!10DX(>bT+duTxa2 z2NMm>ZOr)R%5K4NA0RG(v2j39yA3T<+)5Tr6#i)NDjhPv@6+D=5}L|G-(xU;%uw^q z|FHVA0}5yW14b1TZbQaZ$1XWetIZ6t8zQp*OGHFs^?2Kt;WE3?V*8t_TtY;^`JrN( zo7MTVSO;Dtm`G}tbc!^}B@A1%g!B6xhM;wrP{JXp{@9^D9)uP2NXOs^og4+|VgCrs z(r~HRHs}gCm+!sDgM@fHSOwY6`ABL5=B2KI+AZXbpocQ z4lA%h%}huWYTKn@OKB;{hE65TNF)e5V{i;EAOSU__GPDJ{QA6u@)dfgzCfP>rL_Ug*+5Y9YNPbGf1P7G65=)gDframu!pV&@VkZqOHC#kr^gGWw8JvfxR#=3Vb;t~OQ4z5P%wnFT zV8Loss_H@LL3asTc?W?(10+-C;X+{n0oten=|;J8Jwb4O}4lufsYsB^a5ua4>u&)9Rr+T_Vscmg8CQopz)^Y7M>kt%wfL>VfO z$dXy@G6+0e5BiUopyHUBkZ^9S{)&d0@PN^z`Rsov_#7FU11=_J6x%@~=DFM_h$(~I zposh01QW1e1z26w5QkWPfrL_q5{?-hD}lp!Xw(i~{!aIbT~`d#-70?{@&bc9>fpve zKsqNfmi#jLEj);`i*pfRi@bhrmNi}>Hj}%6sh;d=d4cp`9@FqGS9ty`xTEBrD!-CzLW~+s4KSf)o6a?13&9t)ebqMMh$B7Tmu}UP}EsN2csB5 zrcSpuN{1J94|Efn3pR0%yJVg4AMAvDYS}ky&+}zagcWVKR4(ga4Iy z+EbT@6Q*U!Yl(DwR}Tqh#e+ZJ3mLBr5@c^Z75}{|d0S`y;Gn=@k5DT7OofQj($k=r zGsMKVVY~GM=L7kQ0X2d^Y*Tt9m7+`>1c6wCYWszLnWJ6swE&94LTER|jErv2ew0e& zH`U!14XKUfe8+eB&RdPX>~s3*EcA&>D;QVxOV_Lt@wz*FPoCqY3*4D1%DaGIKje63 z>l_cb*+=5!tUP8Hrms;uE70@1<5bIjb14T;+V^a{9g#p#?l_M6pn}3oUVFPNssIn# z<=xZKdH06_w+aFj9B_~YQcM-96oAvZa^!xgaUyWk5IvIt09QO9>@&!?cZmf5!=MS=)iPd12+ZPMF?7gPh@rbY_HM>`N ziGw_ZO`5k7Z;HAJz4Wk>RERes&Jx-K;6K?Mv@?p)hL+k-jkf8jDSf~ZYy$ZebQrGnkLJFJYpA0t4)UDD%&2nc$oz>z-ef>! z>#Kwx7V)%%0zq!K7yrH)w=?%67cN|le%8>@)s+R^vcNPKysZLmR5a45^7n%IfO@Tc zg?ju)V7Gz&P1^$qd~$fa2CD%%2Z6woN2QBLn59FlyKwGl+;vkM!q$Jdc`2uP%56Pn zw^w4nyfNjNi|)ss7lKn}VXmPU6BjGS{bfd!`CtBdnK+syKwQS$ZrMT;eNSO6C)Z_T z72j{uZFZn(hyoX5ROx4AVAv{BLyO>CQX#Xq!+HIezJ`<8>m|(}gjMQjt8z0ij=^@a zxyi63YiHL0(jg&(zQWh9}gWAfU8P8ci5$oKK^C6NJ zxz@Sf%@JGs+rT!k^cJ}ENjg(^lYupHsilNL?qg!hXIBLQGMLkV9}u&-vGD;;d}==w zV`KYJ%)td&B=^xOBA0|5&&%&kd`K4D5?TGGmU!}*{Pf-!Awz24boFxuh@~{|Ab1TI zkTS8i@PB3e1Q#6EE-_XoiaIXzOdM$Mx26TWN(=wLEWk%uOi%((w=($|yA!v32R=@+ zp`QrvL$kOu_;;?l5(I1$$iDQ#t-A|S+-UXJ!BSHekRk5oI6zhaJb9gw9cnPjz{LN4 zEA6g5jz+1;E%Yoea{~9m_x$*2Ni+1QA{f{-4qE{i{r2xz%1YLjGj6^}{rL93EobX7 z?b#Yz!qp|~r8u_9@U{SnrrHZqwU>zF3YT0)jT+s%924>McTec}x+|K?)?>zfL-`$; z5@>gRj>OGO4;VKUr;{(Ia2xx zQgZz)N>B_ZAjT?UF9~5luF~LSRc9x{LA5!#>myzhK7=qpbc=2&fc#mz?He*Chc%0F ziix6Fn;D8)iyO?9Y$q(F8R{fNMoU*-ASbaGTC2NE)Nq{jD9xHitNE&DJl!_F@Daz^ zt$mhzw0vm4pHv<4(UVBySG@$E>Q(1D8EffZS3ju47@mwIOyE{H+$d|J(@dBan=!@@ z`qXHQZv)GXKSAI{9Ai?B0a_`DENJ4_|Z~v zjWZa=j3Tbt?GE7F^9FpITUgyTiDbeEBsXpSEy(;{Vtjt`(H43j#>m%SLj#M35#ZD} zFXJ0aknnT<^SHx1I~Uui8_RZl`fg??!Rh(8CjRy*jr{90%YRzfikGdc8|;t)MCzAP z;L>>gxMI*=uZZ7~r7B|YbyR&8H*;+6bKzf-c-+yxW{39MWev?$H+)uth;)VTvlioH z9n`6^PtCQWSsiQK)15zk@I5LOOfu&~dQ3I;`P-W+=js0MC_0?i<+SaB;3hbLIgZ1S zXg4X3r4hpcB{@?`Ahkd%M`;hthH}pp15|Y;drJcVX}z6F9hLr*n4MIJ5lzE@;`(l% zJlro|nV;!*+BCUgYmI`tL<#v?hcvHSU76S_eU3a-d#miVHH9NgMY7v}os26Quhp}i zFZ(&Zh)A3Q(X80v$7z2R1D@{FtF~t6Y2ylxT?p*LO{Z8QPc^(L(-W}zy#!O$c(_^% z=A)ONrU)z6;l;lo@!Y>Q^~~0DHG9xY70zIyJ`PH%C6E8cf78Lq%FGmiKMCM_o~F!O z@?)vKAT{!U)wGAUC1w7Csq?qVghLyj3eXpVDLCY( z!nsph0UVS=KJt)OiUdMfprN5id&%N++JOIku%{uQV!S-l!G)lty~_4wCZUA4>zq^X zRp#1U=Jl8MD2zG7@zGVw%kF>?r10cKXZ0okxr5ydX`@x z4g7pQB`KemmU1ox-D{8=O=(HNYjsRDP10>?m`N1#TY6BOjE@{;4>!Gw&bJ zx!Zwi=~1`tuxZ?99JhS;GQm^+#M76Px#AJ5UA^Z*zU5}b zI*E6^MdKG(4an4?{uo%DZNN>Pmw#L}YJPO?=g*((+uL&b`t+HZnW(4*KEDih)o`uH zl4o3@#GvX7JaC68KNr`#A2j#jWXcCL#|wWPg0ymgVA`NxJ-;9 zmSo6UiK&W}pCH6N)~O-Os+wkR$mq!^CE=2XoZ*6r$Op5j?wg0~lH3Sw1^?wSB=~kn z;2V{_#OG>9m68PXo0+m)4g^yJ;ei9@(m}->b6WeRo!Ps5XG8SW=|dV-TdU*xJ;OBQ zpXqs?AZWf&eEa)dkZo7lL`2R($gD|kj=c481u`%&AYjwS$|&ZkQa%-SO;)oV01JBb zQN<+MW^DB)rCx4Pd+}*hNS$Y6Rr*<6)@!3HR}xQITx)o^F+oPEy+UbZhjTb_@rX~4 zu@cU#{~r77`3F8K>CPikCNFz`AMbb#l3?x2or%h3_t}@MOR%)pp|q-GhyOwvAuIQd%}OM6JWgWv8-kxtfT<`pFQY|X43ULtU1cYj%G_n{ zZvxj|^wF1KkP%5i1CurwIgU;Dv~j(_!GT-ad~osW4ZqhwDrb&-)-DQ4e`h0j+4Z(P zwN}CtqmtDuWmVXN#r>q{HSqNKhIO3URIo9(o-8G6bg0`8P7EU%7iM4!^N?&3hAGMX z56UME@j)Ne^rR-L|u``1394avEHE zjMZ^o`%|{AKF8}Geie^MnJ}^H4OZy7`JRNDH~xO@4eL%0>M!P22_`(3p&lku;= zNW5PARi6hbV>{#ANB0iZMh6-`-oUAT>b5z3%hT&}HG<#JV=Q&zz_EG#(@)5^nQ*AD zUMDzBzl@jg`Nf~r-#hlo=h(dF%UVjt!WvIm5KEld8`0H!bw>fOukbBJ1sP-6Lwo5= zaZHR41TacrjsIjI zEQC`G!C$x?M^1S#cjnPjsR+&|>yM=>)q*svX&f50t#O|X8GOt?epva2YqIBOG;3D9 z*)qUFO~o29K!$hNf0j#~%DL=&vXs?3rND2gsQ0P>`)15jT!423ERqmN1J+mawdJU; zq`09o8qNuRjAN5AdibOk4row8G`bxmA;_e76S;Y--mhGK^5q>98$&RgmuCu{V|)dl z4Zo3aSM7IAWsapW&s?L|cv5lk1R}&{o_B(_H!|Z9#|GtUb)4lwf=@a}t03bP6A?Aw zKQ;@}p9+35dK>$7$QN%Y!4PX}o(ExbX$8LpTp3xV!{ud<5^y1)YiBdC9zqjFQDx zcZfTBeF`v}@!ukw*^-0TC6l2p@F&RL(Y>6VR!TGBe;5$a(D2oOm80fr`iUIiR~jX$ zXk!g%vfimt(k-hJvNs_MojwjTa0$R~{lMgMk9T!O7$g7mih=)HQjT%q6wIg

LMRtME)i)B;Mx34TD5rIR$bjR@aOZ9v+$|y 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 E55j + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + From 580f50e736cf7d237c5d824afd78881b55b3023b Mon Sep 17 00:00:00 2001 From: Waffle Date: Wed, 13 Jan 2021 16:12:04 +0300 Subject: [PATCH 4/9] Add very basic example --- Cargo.toml | 4 ++++ examples/self_info.rs | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 examples/self_info.rs diff --git a/Cargo.toml b/Cargo.toml index 09993956..1cae30f1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,3 +60,7 @@ full = ["throttle", "cache_me", "auto_send"] [package.metadata."docs.rs"] all-features = true rustdoc-args = ["--cfg", "docsrs", "-Znormalize-docs"] + +[[example]] +name = "self_info" +required-features = ["tokio/macros", "tokio/rt-multi-thread", "auto_send"] diff --git a/examples/self_info.rs b/examples/self_info.rs new file mode 100644 index 00000000..78678e9f --- /dev/null +++ b/examples/self_info.rs @@ -0,0 +1,23 @@ +use teloxide_core::{ + prelude::*, + types::{DiceEmoji, ParseMode}, +}; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let chat_id = std::env::var("CHAT_ID") + .expect("Expected CHAT_ID env var") + .parse::()?; + + let bot = Bot::from_env() + .parse_mode(ParseMode::MarkdownV2) + .auto_send(); + + let me = bot.get_me().await?; + + bot.send_dice(chat_id, DiceEmoji::Dice).await?; + bot.send_message(chat_id, format!("Hi, my name is **{}** 👋", me.first_name)) + .await?; + + Ok(()) +} From 2ee7bb22a1f4e3cf179b029b4c0b47e04232c1b6 Mon Sep 17 00:00:00 2001 From: Waffle Date: Wed, 13 Jan 2021 16:14:02 +0300 Subject: [PATCH 5/9] Move `client_from_env` from root into `net` --- src/lib.rs | 26 -------------------------- src/net/mod.rs | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index d1105eaf..79f43df4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -35,29 +35,3 @@ mod errors; // implementation details mod serde_multipart; - -/// Constructs a client from the `TELOXIDE_PROXY` environmental variable. -/// -/// This function passes the value of `TELOXIDE_PROXY` into -/// [`reqwest::Proxy::all`], if it exists, otherwise returns the default -/// client. -/// -/// # Note -/// The created client will have safe settings, meaning that it will be able to -/// work in long time durations, see the [issue 223]. -/// -/// [`reqwest::Proxy::all`]: https://docs.rs/reqwest/latest/reqwest/struct.Proxy.html#method.all -/// [issue 223]: https://github.com/teloxide/teloxide/issues/223 -pub fn client_from_env() -> reqwest::Client { - use crate::bot::{sound_bot, TELOXIDE_PROXY}; - use reqwest::Proxy; - - let builder = sound_bot(); - - match std::env::var(TELOXIDE_PROXY).ok() { - Some(proxy) => builder.proxy(Proxy::all(&proxy).expect("creating reqwest::Proxy")), - None => builder, - } - .build() - .expect("creating reqwest::Client") -} diff --git a/src/net/mod.rs b/src/net/mod.rs index 944e1538..6c9665dc 100644 --- a/src/net/mod.rs +++ b/src/net/mod.rs @@ -14,6 +14,38 @@ mod telegram_response; /// The default Telegram API URL. pub const TELEGRAM_API_URL: &str = "https://api.telegram.org"; +/// Constructs a network client from the `TELOXIDE_PROXY` environmental +/// variable. +/// +/// This function passes the value of `TELOXIDE_PROXY` into +/// [`reqwest::Proxy::all`], if it exists, otherwise returns the default +/// client. +/// +/// ## Note +/// +/// The created client will have safe settings, meaning that it will be able to +/// work in long time durations, see the [issue 223]. +/// +/// [`reqwest::Proxy::all`]: https://docs.rs/reqwest/latest/reqwest/struct.Proxy.html#method.all +/// [issue 223]: https://github.com/teloxide/teloxide/issues/223 +/// +/// ## Panics +/// +/// If `TELOXIDE_PROXY` exists, but isn't correct url. +pub fn client_from_env() -> reqwest::Client { + use crate::bot::{sound_bot, TELOXIDE_PROXY}; + use reqwest::Proxy; + + let builder = sound_bot(); + + match std::env::var(TELOXIDE_PROXY).ok() { + Some(proxy) => builder.proxy(Proxy::all(&proxy).expect("creating reqwest::Proxy")), + None => builder, + } + .build() + .expect("creating reqwest::Client") +} + /// Creates URL for making HTTPS requests. See the [Telegram documentation]. /// /// [Telegram documentation]: https://core.telegram.org/bots/api#making-requests From 84df33dbefbc1da6b34bbe6cb81109bcb68854e4 Mon Sep 17 00:00:00 2001 From: Waffle Date: Fri, 15 Jan 2021 21:51:15 +0300 Subject: [PATCH 6/9] improve docs --- README.md | 25 +++++++++++++++- src/adaptors.rs | 15 ++++++++++ src/adaptors/auto_send.rs | 19 ++++++++---- src/bot/mod.rs | 57 +++++++++++++++++++++++++++++++++-- src/errors.rs | 2 +- src/lib.rs | 62 +++++++++++++++++++++++++++++++++++++-- src/local_macros.rs | 2 ++ src/payloads/mod.rs | 5 ++-- src/prelude.rs | 6 +++- src/requests/request.rs | 8 +++-- src/requests/requester.rs | 35 +++++++++++++++++++++- 11 files changed, 217 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index e6ad7315..0e01f9b1 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,30 @@ +

+ # teloxide-core [![CI status](https://github.com/teloxide/teloxide-core/workflows/Continuous%20integration/badge.svg)](https://github.com/teloxide/teloxide-core/actions) +[![documentation](https://docs.rs/teloxide_core/badge.svg)](https://docs.rs/teloxide_core/) [![documentation (master)](https://img.shields.io/badge/docs-master-blue)](https://teloxide-core.netlify.com) [![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) +[![Api Cov](https://img.shields.io/badge/API%20coverage-Up%20to%200.4.9%20(inclusively)-green.svg)](https://core.telegram.org/bots/api) +[![crates.io](https://img.shields.io/crates/v/teloxide_core.svg)](https://crates.io/crates/teloxide_core) +[![Official Chat](https://img.shields.io/badge/official%20chat-t.me%2Fteloxide-blueviolet)](https://t.me/teloxide) -Core part of `teloxide` library. + + +Core part of the [`teloxide`] library. + +This library provides tools for making requests to the [Telegram Bot API] +(Currently, version `4.9` is supported) with ease. The library is fully +asynchronouns and built using [`tokio`]. + +```toml +teloxide_core = "0.1" +``` +_Compiler support: requires rustc 1.49+_ + +[`teloxide`]: https://docs.rs/teloxide +[Telegram Bot API]: https://core.telegram.org/bots/api +[`tokio`]: https://tokio.rs \ No newline at end of file diff --git a/src/adaptors.rs b/src/adaptors.rs index 1a308c57..8692d43c 100644 --- a/src/adaptors.rs +++ b/src/adaptors.rs @@ -8,12 +8,27 @@ //! //! [`Requester`]: crate::requests::Requester +/// [`AutoSend`] bot adaptor which allows sending a request without calling +/// [`send`]. +/// +/// [`AutoSend`]: auto_send::AutoSend +/// [`send`]: crate::requests::Request::send #[cfg(feature = "auto_send")] #[cfg_attr(all(docsrs, feature = "nightly"), doc(cfg(feature = "auto_send")))] pub mod auto_send; + +/// [`CacheMe`] bot adaptor which caches [`GetMe`] requests. +/// +/// [`CacheMe`]: cache_me::CacheMe +/// [`GetMe`]: crate::payloads::GetMe #[cfg(feature = "cache_me")] #[cfg_attr(all(docsrs, feature = "nightly"), doc(cfg(feature = "cache_me")))] pub mod cache_me; + +/// [`Throttle`] bot adaptor which allows automatically throttle when hitting +/// API limits. +/// +/// [`Throttle`]: throttle::Throttle #[cfg(feature = "throttle")] #[cfg_attr(all(docsrs, feature = "nightly"), doc(cfg(feature = "throttle")))] pub mod throttle; diff --git a/src/adaptors/auto_send.rs b/src/adaptors/auto_send.rs index 890979ac..77ce8e25 100644 --- a/src/adaptors/auto_send.rs +++ b/src/adaptors/auto_send.rs @@ -20,8 +20,8 @@ use crate::{ /// Notes: /// 1. This wrapper should be the most outer i.e.: `AutoSend>` /// will automatically send requests, while `CacheMe>` - won't. -/// 2. After first call to `poll` on a request you will unable to access payload -/// nor could you use [`send_ref`](Request::send_ref). +/// 2. After first call to `poll` on a request you will be unable to access +/// payload nor could you use [`send_ref`](Request::send_ref). /// /// ## Examples /// @@ -74,7 +74,10 @@ macro_rules! fty { }; } -impl Requester for AutoSend { +impl Requester for AutoSend +where + B: Requester, +{ type Err = B::Err; requester_forward! { @@ -112,7 +115,10 @@ download_forward! { #[pin_project::pin_project] pub struct AutoRequest(#[pin] Inner); -impl AutoRequest { +impl AutoRequest +where + R: Request, +{ pub fn new(inner: R) -> Self { Self(Inner::Request(inner)) } @@ -133,7 +139,10 @@ enum Inner { Done, } -impl Request for AutoRequest { +impl Request for AutoRequest +where + R: Request, +{ type Err = R::Err; type Send = R::Send; type SendRef = R::SendRef; diff --git a/src/bot/mod.rs b/src/bot/mod.rs index 07c78829..06f6cea6 100644 --- a/src/bot/mod.rs +++ b/src/bot/mod.rs @@ -22,9 +22,41 @@ pub(crate) const TELOXIDE_PROXY: &str = "TELOXIDE_PROXY"; /// A requests sender. /// -/// No need to put it into [`Arc`], because it's already in. +/// This is the main type of the library, it allows to send requests to the +/// [Telegram Bot API] and download files. +/// +/// ## TBA methods +/// +/// All TBA methods are located in the [`Requester`] [`impl for Bot`]. This +/// allows for opt-in behaviours using requester [adaptors]. +/// +/// ``` +/// # async { +/// use teloxide_core::prelude::*; +/// +/// let bot = Bot::new("TOKEN"); +/// dbg!(bot.get_me().send().await?); +/// # Ok::<_, teloxide_core::RequestError>(()) }; +/// ``` +/// +/// [`Requester`]: crate::requests::Requester +/// [`impl for Bot`]: Bot#impl-Requester +/// [adaptors]: crate::adaptors +/// +/// ## File download +/// +/// In the similar way as with TBA methods, file downloading methods are located +/// in a trait — [`Download<'_>`]. See its documentation for more. +/// +/// [`Download<'_>`]: crate::net::Download +/// +/// ## Clone cost +/// +/// `Bot::clone` is relatively cheap, so if you need to share `Bot`, it's +/// recommended to clone it, instead of wrapping it in [`Arc<_>`]. /// /// [`Arc`]: std::sync::Arc +/// [Telegram Bot API]: https://core.telegram.org/bots/api #[derive(Debug, Clone)] pub struct Bot { token: Arc, @@ -32,6 +64,7 @@ pub struct Bot { client: Client, } +/// Constructors impl Bot { /// Creates a new `Bot` with the specified token and the default /// [http-client](reqwest::Client). @@ -81,7 +114,7 @@ impl Bot { /// [`reqwest::Client`]: https://docs.rs/reqwest/0.10.1/reqwest/struct.Client.html /// [`reqwest::Proxy::all`]: https://docs.rs/reqwest/latest/reqwest/struct.Proxy.html#method.all pub fn from_env() -> Self { - Self::from_env_with_client(crate::client_from_env()) + Self::from_env_with_client(crate::net::client_from_env()) } /// Creates a new `Bot` with the `TELOXIDE_TOKEN` environmental variable (a @@ -122,11 +155,31 @@ impl Bot { /// bot.get_me().send().await /// # }; /// ``` + /// + /// ## Multi-instance behaviour + /// + /// This method only sets the url for one bot instace, older clones are + /// unaffected. + /// + /// ``` + /// use teloxide_core::Bot; + /// + /// let bot = Bot::new("TOKEN"); + /// let bot2 = bot.clone(); + /// let bot = bot.set_api_url(reqwest::Url::parse("https://example.com/").unwrap()); + /// + /// assert_eq!(bot.api_url().as_str(), "https://example.com/"); + /// assert_eq!(bot.clone().api_url().as_str(), "https://example.com/"); + /// assert_ne!(bot2.api_url().as_str(), "https://example.com/"); + /// ``` pub fn set_api_url(mut self, url: reqwest::Url) -> Self { self.api_url = ApiUrl::Custom(Arc::new(url)); self } +} +/// Getters +impl Bot { /// Returns currently used token. pub fn token(&self) -> &str { &self.token diff --git a/src/errors.rs b/src/errors.rs index 3476ceed..4efcae04 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -53,7 +53,7 @@ pub enum RequestError { #[error("An error while parsing JSON: {0}")] InvalidJson(#[source] serde_json::Error), - // Occurs when trying to send a file to Telegram. + /// Occurs when trying to send a file to Telegram. #[error("An I/O error: {0}")] Io(#[source] io::Error), } diff --git a/src/lib.rs b/src/lib.rs index 79f43df4..797c36a7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,13 +1,69 @@ -//! Core part of `teloxide` library. -// TODO: expand docs +//! Core part of the [`teloxide`] library. +//! +//! This library provides tools for making requests to the [Telegram Bot API] +//! (Currently, version `4.9` is supported) with ease. The library is fully +//! asynchronouns and built using [`tokio`]. +//! +//!```toml +//! teloxide_core = "0.1" +//! ``` +//! _Compiler support: requires rustc 1.49+_ +//! +//! ``` +//! # #[cfg(feature = "auto_send")] +//! # async { +//! # let chat_id = 0; +//! use teloxide_core::{ +//! prelude::*, +//! types::{DiceEmoji, ParseMode}, +//! }; +//! +//! let bot = Bot::from_env() +//! .parse_mode(ParseMode::MarkdownV2) +//! .auto_send(); +//! +//! let me = bot.get_me().await?; +//! +//! bot.send_dice(chat_id, DiceEmoji::Dice).await?; +//! bot.send_message(chat_id, format!("Hi, my name is **{}** 👋", me.first_name)) +//! .await?; +//! # Ok::<_, Box>(()) }; +//! ``` +//! +//!
+//! +//!
+//! +//! [`teloxide`]: https://docs.rs/teloxide +//! [Telegram Bot API]: https://core.telegram.org/bots/api +//! [`tokio`]: https://tokio.rs +//! +//! ## Cargo features +//! +//! - `auto_send` — enables [`AutoSend`] bot adaptor +//! - `throttle` — enables [`Throttle`] bot adaptor +//! - `cache_me` — enables [`CacheMe`] bot adaptor +//! - `full` — enables all features except `nigthly` +//! - `nightly` — enables nigthly-only features, currently: +//! - Removes some future boxing using `#![feature(type_alias_impl_trait)]` +//! - Used to built docs (`#![feature(doc_cfg, doc_spotlight)]`) +//! +//! [`AutoSend`]: adaptors::AutoSend +//! [`Throttle`]: adaptors::Throttle +//! [`CacheMe`]: adaptors::CacheMe +#![doc( + // FIXME(waffle): use github + html_logo_url = "https://cdn.discordapp.com/attachments/224881373326999553/798598120760934410/logo.png", + html_favicon_url = "https://cdn.discordapp.com/attachments/224881373326999553/798598120760934410/logo.png" +)] +#![forbid(unsafe_code)] // we pass "--cfg docsrs" when building docs to add `This is supported on feature="..." only.` // // To properly build docs of this crate run // ```console // $ RUSTDOCFLAGS="--cfg docsrs -Znormalize-docs" cargo doc --open --all-features // ``` -#![forbid(unsafe_code)] #![cfg_attr(all(docsrs, feature = "nightly"), feature(doc_cfg, doc_spotlight))] #![cfg_attr(feature = "nightly", feature(type_alias_impl_trait))] #![cfg_attr(feature = "full", deny(broken_intra_doc_links))] diff --git a/src/local_macros.rs b/src/local_macros.rs index 25cffd7f..91f5623a 100644 --- a/src/local_macros.rs +++ b/src/local_macros.rs @@ -188,6 +188,8 @@ macro_rules! impl_payload { #[allow(clippy::too_many_arguments)] // It's just easier for macros to generate such code. #[allow(clippy::redundant_field_names)] + // It's obvious what this method does. (If you think it's not, feel free to open a PR) + #[allow(missing_docs)] $vi fn new($($($fields : impl_payload!(@convert? $FTy $([$conv])?)),*)?) -> Self { Self { $( diff --git a/src/payloads/mod.rs b/src/payloads/mod.rs index abfebc1b..cf31ea9d 100644 --- a/src/payloads/mod.rs +++ b/src/payloads/mod.rs @@ -1,7 +1,8 @@ //! Request data sent to Telegram. -/// This module re-exports all the setters traits as `_`. When used with a glob -/// import: +/// This module re-exports all the setters traits as `_`. +/// +/// When used with a glob import: /// /// ``` /// use teloxide_core::payloads::setters::*; diff --git a/src/prelude.rs b/src/prelude.rs index 3ea2b60c..ed53d1d7 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -1,3 +1,7 @@ //! Commonly used items. -pub use crate::requests::Requester; +pub use crate::{ + payloads::setters::*, + requests::{Request, Requester, RequesterExt}, + Bot, +}; diff --git a/src/requests/request.rs b/src/requests/request.rs index b719abf5..8517daa2 100644 --- a/src/requests/request.rs +++ b/src/requests/request.rs @@ -13,7 +13,7 @@ use crate::requests::{HasPayload, Output}; /// /// This is crucial for request wrappers which may want to cancel and/or never /// send the underlying request. E.g.: [`Throttle`]'s `send_ref` calls -/// `B::send_ref` while _not_ meaning to really send the request right now. +/// `B::send_ref` while _not_ meaning to really send the request at the moment. /// /// [`Throttle`]: crate::adaptors::Throttle #[cfg_attr(all(docsrs, feature = "nightly"), doc(spotlight))] @@ -32,8 +32,8 @@ pub trait Request: HasPayload { /// A type of the future returned by the [`send_ref`](Request::send_ref) /// method. - // Note: it intentionally forbids borrowing from `self` though anyway we - // couldn't allow borrowing without GATs. + // Note: it intentionally forbids borrowing from `self` though we couldn't allow + // borrowing without GATs anyway. type SendRef: Future, Self::Err>> + Send; /// Send this request. @@ -49,6 +49,8 @@ pub trait Request: HasPayload { /// }; /// /// let bot = Bot::new("TOKEN"); + /// + /// // Note: it's recommended to `Requester` instead of creating requests directly /// let method = GetMe::new(); /// let request = JsonRequest::new(bot, method); /// let _: User = request.send().await.unwrap(); diff --git a/src/requests/requester.rs b/src/requests/requester.rs index 09ff0641..7e30be76 100644 --- a/src/requests/requester.rs +++ b/src/requests/requester.rs @@ -15,9 +15,42 @@ use crate::{ /// /// This trait is implemented by all bots & bot adaptors. /// -/// _This trait is included in the crate's [`prelude`](crate::prelude)_. +/// ## Examples +/// +/// Calling TBA methods: +/// +/// ``` +/// # async { +/// use teloxide_core::{prelude::*, types::ParseMode}; +/// +/// // Bot implements `Requester` +/// let bot = Bot::new("TOKEN"); +/// +/// // Required parameters are supplied to the `Requester` methods: +/// bot.send_message(0, "Text") +/// // Optional parameters can be supplied by calling setters +/// .parse_mode(ParseMode::HTML) +/// // To send request to telegram you need to call `.send()` and await the resulting future +/// .send() +/// .await?; +/// # Ok::<_, teloxide_core::RequestError>(()) }; +/// ``` +/// +/// Using `Requester` in a generic context: +/// +/// ``` +/// use teloxide_core::{prelude::*, types::Message}; +/// +/// async fn send_hi(bot: R, chat: i64) -> Message +/// where +/// R: Requester, +/// { +/// bot.send_message(chat, "hi").send().await.expect("error") +/// } +/// ``` #[cfg_attr(all(docsrs, feature = "nightly"), doc(spotlight))] pub trait Requester { + /// Error type returned by all requests. type Err: std::error::Error + Send; // This block is auto generated by `cg` (de3765b). From b93947c0ab2da8719605456609b0f541075c27b4 Mon Sep 17 00:00:00 2001 From: Waffle Date: Fri, 15 Jan 2021 22:19:42 +0300 Subject: [PATCH 7/9] stop using serde internall module --- src/types/non_telegram_types/mime.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/types/non_telegram_types/mime.rs b/src/types/non_telegram_types/mime.rs index c5655cc7..34422e34 100644 --- a/src/types/non_telegram_types/mime.rs +++ b/src/types/non_telegram_types/mime.rs @@ -70,10 +70,7 @@ struct MimeVisitor; impl<'a> Visitor<'a> for MimeVisitor { type Value = MimeDe; - fn expecting( - &self, - formatter: &mut fmt::Formatter<'_>, - ) -> Result<(), serde::export::fmt::Error> { + fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> { formatter.write_str("mime type") } From cc9e3a56e6084f63fddfb3c11861a753bd4a4749 Mon Sep 17 00:00:00 2001 From: Waffle Date: Thu, 21 Jan 2021 09:45:20 +0300 Subject: [PATCH 8/9] workaround rustc bug --- src/local_macros.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/local_macros.rs b/src/local_macros.rs index 91f5623a..eaf50554 100644 --- a/src/local_macros.rs +++ b/src/local_macros.rs @@ -47,7 +47,15 @@ macro_rules! req_future { $(where $($wh:tt)*)? ) => { #[pin_project::pin_project] - $v struct $i<$T> + pub + // FIXME(waffle): + // The `pub` above should ideally be `$v`, but we currently can't do + // this due to compiler bug, see: + // - pin_project bug report + // - related rustc issue + // - original fix (closed) + // - second iteration of the fix + struct $i<$T> $(where $($wh)*)? { #[pin] From 3aec4e5070fa92e95eea2068b8aec2b188819b3e Mon Sep 17 00:00:00 2001 From: Waffle Date: Thu, 21 Jan 2021 10:15:02 +0300 Subject: [PATCH 9/9] fix test --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 797c36a7..cca00141 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -24,7 +24,7 @@ //! //! let me = bot.get_me().await?; //! -//! bot.send_dice(chat_id, DiceEmoji::Dice).await?; +//! bot.send_dice(chat_id).emoji(DiceEmoji::Dice).await?; //! bot.send_message(chat_id, format!("Hi, my name is **{}** 👋", me.first_name)) //! .await?; //! # Ok::<_, Box>(()) };

p)%MU^)-HM?16J^fj(Y4 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