diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 54 |
1 files changed, 18 insertions, 36 deletions
diff --git a/src/main.rs b/src/main.rs index 8200b3f..9f4ad6a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,6 @@ use std::fmt; use std::fs; use std::process; use std::str; -use std::string; #[derive(Debug)] @@ -34,19 +33,6 @@ 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(); @@ -97,7 +83,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { Ok(()) } -async fn rsvp(eid: &Eid, response: &EventResponseStatus) { +async fn rsvp(event_id: &str, response: &EventResponseStatus) { let secret = secret_from_file(); let auth = oauth2::InstalledFlowAuthenticator::builder( @@ -117,26 +103,22 @@ async fn rsvp(eid: &Eid, response: &EventResponseStatus) { auth, ); + let result = hub.events() + .get("primary", event_id) + .doit() + .await + .unwrap(); + let mut event = Event::default(); let mut attendee = EventAttendee::default(); - if let Some(email) = &eid.email { - attendee.email = Some(email.to_owned()); - } else { - let result = hub.events() - .get("primary", &eid.event_id) - .doit() - .await - .unwrap(); - - if let Some(attendees) = result.1.attendees { - for a in &attendees { - if let Some(is_me) = a.self_ { - if is_me { - attendee.email = a.email.clone(); - - break; - } + if let Some(attendees) = result.1.attendees { + for a in &attendees { + if let Some(is_me) = a.self_ { + if is_me { + attendee.email = a.email.clone(); + + break; } } } @@ -147,7 +129,7 @@ async fn rsvp(eid: &Eid, response: &EventResponseStatus) { event.attendees = Some(vec![attendee]); let res = hub.events() - .patch(event, "primary", &eid.event_id) + .patch(event, "primary", event_id) .doit() .await .unwrap(); @@ -170,7 +152,7 @@ fn secret_from_file() -> oauth2::ApplicationSecret { } } -fn event_id_from_base64(event_id: &str) -> Eid { +fn event_id_from_base64(event_id: &str) -> String { // Base64-matching regex from Xuanyuanzhiyuan // (https://stackoverflow.com/users/1076906/xuanyuanzhiyuan) on Stack // Overflow: @@ -180,7 +162,7 @@ fn event_id_from_base64(event_id: &str) -> Eid { ).unwrap(); if !re.is_match(event_id) { - return Eid::new(event_id.to_owned(), None); + return event_id.to_owned(); } let decoded = &base64::decode(event_id).unwrap(); @@ -188,7 +170,7 @@ fn event_id_from_base64(event_id: &str) -> Eid { let values = id_email_pair.split(" ").collect::<Vec<_>>(); let id = values.first().unwrap().to_string(); - Eid::new(id, values.last().map(string::ToString::to_string)) + id } |
