|
1 | 1 | use serde::Deserialize; |
2 | 2 | use serde::{ser::SerializeMap, Serialize, Serializer}; |
3 | | -use serde_json::Value; |
4 | 3 | use std::collections::BTreeMap; |
5 | 4 | use uuid::Uuid; |
6 | 5 |
|
@@ -93,6 +92,12 @@ impl WebhookUpdate { |
93 | 92 | Self::default() |
94 | 93 | } |
95 | 94 |
|
| 95 | + #[must_use] |
| 96 | + pub fn with_url_owned(mut self, url: impl Into<String>) -> Self { |
| 97 | + self.url = Some(url.into()); |
| 98 | + self |
| 99 | + } |
| 100 | + |
96 | 101 | /// Updates the webhook target URL. |
97 | 102 | pub fn with_url(&mut self, url: impl Into<String>) -> &mut Self { |
98 | 103 | self.url = Some(url.into()); |
@@ -156,7 +161,8 @@ impl Serialize for WebhookUpdate { |
156 | 161 | match &self.headers { |
157 | 162 | HeadersUpdate::NotSet => {} |
158 | 163 | HeadersUpdate::Reset => { |
159 | | - map.serialize_entry("headers", &Value::Null)?; |
| 164 | + let none: Option<()> = None; |
| 165 | + map.serialize_entry("headers", &none)?; |
160 | 166 | } |
161 | 167 | HeadersUpdate::Set(values) => { |
162 | 168 | map.serialize_entry("headers", values)?; |
@@ -228,6 +234,13 @@ mod test { |
228 | 234 | Some(&"value".to_string()) |
229 | 235 | ); |
230 | 236 |
|
| 237 | + let mut clear = WebhookUpdate::new(); |
| 238 | + clear.reset_headers(); |
| 239 | + let cleared = client |
| 240 | + .update_webhook(&created.uuid.to_string(), &clear) |
| 241 | + .await?; |
| 242 | + assert!(cleared.webhook.headers.is_empty()); |
| 243 | + |
231 | 244 | client.delete_webhook(&created.uuid.to_string()).await?; |
232 | 245 |
|
233 | 246 | let remaining = client.get_webhooks().await?; |
|
0 commit comments