pub struct WebhookTracker { /* private fields */ }Expand description
Tracker over a tenant-configured webhook URL.
No Debug derive: the struct holds the shared signing secret, and a
derived Debug would print it wherever a log line or a panic message
met the adapter.
Implementations§
Trait Implementations§
Source§impl Debug for WebhookTracker
impl Debug for WebhookTracker
Source§impl Tracker for WebhookTracker
impl Tracker for WebhookTracker
Source§fn status<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_dest: &'life1 Destination,
_cred: &'life2 Credential,
_external_id: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<TicketStatus, TrackerError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn status<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_dest: &'life1 Destination,
_cred: &'life2 Credential,
_external_id: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<TicketStatus, TrackerError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
A webhook has nothing to read back.
file POSTs to a URL and the receiver answers with an HTTP status,
not a ticket: there is no id on the far side to ask about later, and
Filed::external_id carries the idempotency key this adapter sent
rather than a handle the receiver minted. Inventing a state here —
“open”, because nothing said otherwise — would make the one method
callers use to check a ticket lie in exactly the case it exists for.
So it refuses, and says which capability is missing. A venture that
needs status wires a tracker that has tickets; RoutingTracker
exists so it can have both.
Source§fn file<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
dest: &'life1 Destination,
_cred: &'life2 Credential,
draft: &'life3 TicketDraft,
) -> Pin<Box<dyn Future<Output = Result<Filed, TrackerError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn file<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
dest: &'life1 Destination,
_cred: &'life2 Credential,
draft: &'life3 TicketDraft,
) -> Pin<Box<dyn Future<Output = Result<Filed, TrackerError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
draft into dest, authenticating as the company cred
speaks for. Idempotent on draft.idempotency_key where the tracker
allows it. Read moreSource§fn comment<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
dest: &'life1 Destination,
_cred: &'life2 Credential,
_external_id: &'life3 str,
_comment: &'life4 TicketComment,
) -> Pin<Box<dyn Future<Output = Result<(), TrackerError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Self: 'async_trait,
fn comment<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
dest: &'life1 Destination,
_cred: &'life2 Credential,
_external_id: &'life3 str,
_comment: &'life4 TicketComment,
) -> Pin<Box<dyn Future<Output = Result<(), TrackerError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Self: 'async_trait,
comment to the existing ticket external_id in dest —
e.g. linking a duplicate report to the ticket it duplicates, so the
tracker holds one ticket per defect rather than one per report. Read more