(&self, event: &str, v: &T)
| 59 | } |
| 60 | |
| 61 | async fn post<T>(&self, event: &str, v: &T) -> Result<()> |
| 62 | where |
| 63 | T: Serialize, |
| 64 | { |
| 65 | let event = if self.event_prefix.is_empty() { |
| 66 | event.to_string() |
| 67 | } else { |
| 68 | format!("{}_{}", self.event_prefix, event) |
| 69 | }; |
| 70 | |
| 71 | let url = if self.arbitrary_json { |
| 72 | format!( |
| 73 | "{}/trigger/{}/json/with/key/{}", |
| 74 | self.server, event, self.key |
| 75 | ) |
| 76 | } else { |
| 77 | format!("{}/trigger/{}/with/key/{}", self.server, event, self.key) |
| 78 | }; |
| 79 | |
| 80 | let mut headers = HeaderMap::new(); |
| 81 | headers.insert(CONTENT_TYPE, "application/json".parse().unwrap()); |
| 82 | |
| 83 | info!(event = %event, "Sending event to IFTTT"); |
| 84 | let res = get_client() |
| 85 | .post(url) |
| 86 | .json(&v) |
| 87 | .headers(headers) |
| 88 | .send() |
| 89 | .await?; |
| 90 | match res.error_for_status() { |
| 91 | Ok(_) => Ok(()), |
| 92 | Err(e) => { |
| 93 | warn!(event = %event, error = %e, "Sending event to IFTTT failed"); |
| 94 | Err(anyhow::Error::new(e)) |
| 95 | } |
| 96 | } |
| 97 | } |
| 98 | } |
| 99 | |
| 100 | #[async_trait] |
no test coverage detected