aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs26
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))
}