allow settings headers and json body

This commit is contained in:
Robin Appelman 2021-08-11 14:51:38 +02:00
commit a5fd6ac39b
4 changed files with 19 additions and 3 deletions

View file

@ -2,6 +2,8 @@ use color_eyre::{eyre::WrapErr, Result};
use serde::Deserialize;
use std::fs::read_to_string;
use tokio::time::Duration;
use std::collections::HashMap;
use serde_json::Value;
#[derive(Debug, Deserialize)]
pub struct Config {
@ -13,6 +15,10 @@ pub struct Config {
pub struct FeedConfig {
pub feed: String,
pub hook: String,
#[serde(default)]
pub headers: HashMap<String, String>,
#[serde(default)]
pub body: Value,
}
impl Config {

View file

@ -34,8 +34,15 @@ async fn main() -> Result<()> {
for feed in config.feed.iter() {
match fetcher.is_feed_updated(&feed.feed).await {
Ok(true) => {
println!("Trigering hook for {}", feed.feed);
fetcher.client.post(&feed.hook).send().await?;
println!("Triggering hook for {}", feed.feed);
let mut req = fetcher.client.post(&feed.hook);
for (key, value) in &feed.headers {
req = req.header(key, value);
}
if !feed.body.is_null() {
req = req.json(&feed.body);
}
req.send().await?;
}
Err(e) => eprintln!("{:#}", e),
Ok(false) => {}