From dbf817e97a81685d05449eafc0b4454b28fd51f7 Mon Sep 17 00:00:00 2001 From: Jarkko Toivanen Date: Fri, 28 Apr 2023 03:13:48 +0300 Subject: [PATCH] Fixed: Panic if no image attached or post has newlines --- src/main.rs | 49 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6b7a21d..c4229ac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,7 +8,10 @@ use std::{ io::{self, Read, Seek, Write}, }; -const APPID: &str = "227300"; +const APPID: &str = "227300"; // ETS2: 227300, AssettoCorsa: 244210 +const CLANIMGURLBASE: &str = + "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/clans/"; +const LOGOURL: &str = "https://eurotrucksimulator2.com/images/logo.png"; #[derive(Deserialize)] struct SUResp { @@ -88,32 +91,44 @@ fn main() { .split("[img]{STEAM_CLAN_IMAGE}") .collect(); - let tmptext2: Vec<&str> = tmptext[1].split("[/img]").collect(); - let imgurl = &tmptext2[0]; + let imgurl = if tmptext.len() > 1 { + let splitend: Vec<&str> = tmptext[1].split("[/img]").collect(); + format!("{}{}", CLANIMGURLBASE, splitend[0]) + } else { + LOGOURL.to_string() + }; let whreq: String = format!( r#" {{ "username": "ETS2 Updates", -"avatar_url": "https://eurotrucksimulator2.com/images/logo.png", +"avatar_url": "{}", "content": "", "embeds": [{{ "title": "{}", "description": "{}", "url": "{}", "timestamp": "{}", -"thumbnail": {{"url": "https://cdn.akamai.steamstatic.com/steamcommunity/public/images/clans/{}"}} +"thumbnail": {{"url": "{}"}} }}] }} "#, + LOGOURL, body.appnews.newsitems.post0.title, if body.appnews.newsitems.post0.contents.len() > 250 { format!( "{} ...", - body.appnews.newsitems.post0.contents[..250].to_string() + body.appnews.newsitems.post0.contents[..250] + .to_string() + .replace("\n", " ") ) } else { - body.appnews.newsitems.post0.contents.to_string() + body.appnews + .newsitems + .post0 + .contents + .to_string() + .replace("\n", " ") }, body.appnews.newsitems.post0.url, t_str, @@ -123,15 +138,23 @@ fn main() { let resp = ureq::post(&webhook) .set("Content-Type", "application/json;charset=utf-8") .send_string(&whreq); - resp.expect("Error sending Discord webhook"); + + match resp { + Ok(_) => { + println!("Successfully updated webhook"); + + f.set_len(0).expect("Cannot empty the file"); + f.seek(io::SeekFrom::Start(0)) + .expect("Cannot seek to file beginning"); + write!(f, "{}", body.appnews.newsitems.post0.date).expect("Can't write file"); + } + Err(e) => { + println!("Error updating webhook:\n{}\nRequest JSON:\n{}", e, &whreq); + } + } fdt = body.appnews.newsitems.post0.date; } - f.set_len(0).expect("Cannot empty the file"); - f.seek(io::SeekFrom::Start(0)) - .expect("Cannot seek to file beginning"); - write!(f, "{}", body.appnews.newsitems.post0.date).expect("Can't write file"); - println!("{}: Sleeping...", chrono::offset::Utc::now()); thread::sleep(time::Duration::from_secs(60 * 15)); }