diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs index 9f4ad6a..18ce4fe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,6 +13,7 @@ use std::fmt; use std::fs; use std::process; use std::str; +use std::string; #[derive(Debug)] @@ -33,6 +34,19 @@ impl fmt::Display for EventResponseStatus { } +#[derive(Debug)] +struct Eid { + event_id: String, + email: Option<String>, +} + +impl Eid { + fn new(event_id: String, email: Option<String>) -> Self { + Eid { event_id, email } + } +} + + #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { let args: Vec<String> = env::args().collect(); @@ -83,7 +97,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { Ok(()) } -async fn rsvp(event_id: &str, response: &EventResponseStatus) { +async fn rsvp(eid: &Eid, response: &EventResponseStatus) { let secret = secret_from_file(); let auth = oauth2::InstalledFlowAuthenticator::builder( @@ -104,7 +118,7 @@ async fn rsvp(event_id: &str, response: &EventResponseStatus) { ); let result = hub.events() - .get("primary", event_id) + .get("primary", &eid.event_id) .doit() .await .unwrap(); @@ -129,7 +143,7 @@ async fn rsvp(event_id: &str, response: &EventResponseStatus) { event.attendees = Some(vec![attendee]); let res = hub.events() - .patch(event, "primary", event_id) + .patch(event, "primary", &eid.event_id) .doit() .await .unwrap(); @@ -152,7 +166,7 @@ fn secret_from_file() -> oauth2::ApplicationSecret { } } -fn event_id_from_base64(event_id: &str) -> String { +fn event_id_from_base64(event_id: &str) -> Eid { // Base64-matching regex from Xuanyuanzhiyuan // (https://stackoverflow.com/users/1076906/xuanyuanzhiyuan) on Stack // Overflow: @@ -162,7 +176,7 @@ fn event_id_from_base64(event_id: &str) -> String { ).unwrap(); if !re.is_match(event_id) { - return event_id.to_owned(); + return Eid::new(event_id.to_owned(), None); } let decoded = &base64::decode(event_id).unwrap(); @@ -170,7 +184,7 @@ fn event_id_from_base64(event_id: &str) -> String { let values = id_email_pair.split(" ").collect::<Vec<_>>(); let id = values.first().unwrap().to_string(); - id + Eid::new(id, values.last().map(string::ToString::to_string)) } |
