pub struct RoutingTracker { /* private fields */ }Expand description
Dispatches by Destination variant to the adapter a venture
configured for that tracker, so venture code holds one
Arc<dyn Tracker> and never matches on the destination itself.
A destination whose tracker has no adapter is
TrackerError::NotConfigured — the same answer an unconfigured
adapter gives, and deliberately an error rather than a silent success:
a ticket that was never filed must look like a failure to the code that
needed it filed (see TrackerError::NotConfigured).
Implementations§
Source§impl RoutingTracker
impl RoutingTracker
Sourcepub fn github(self, tracker: Arc<dyn Tracker>) -> Self
pub fn github(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::GitHub.
Sourcepub fn jira(self, tracker: Arc<dyn Tracker>) -> Self
pub fn jira(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::Jira.
Sourcepub fn linear(self, tracker: Arc<dyn Tracker>) -> Self
pub fn linear(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::Linear.
Sourcepub fn zendesk(self, tracker: Arc<dyn Tracker>) -> Self
pub fn zendesk(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::Zendesk.
Sourcepub fn freshdesk(self, tracker: Arc<dyn Tracker>) -> Self
pub fn freshdesk(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::Freshdesk.
Sourcepub fn intercom(self, tracker: Arc<dyn Tracker>) -> Self
pub fn intercom(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::Intercom.
Sourcepub fn salesforce(self, tracker: Arc<dyn Tracker>) -> Self
pub fn salesforce(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::Salesforce.
Sourcepub fn hubspot(self, tracker: Arc<dyn Tracker>) -> Self
pub fn hubspot(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::HubSpot.
Sourcepub fn slack(self, tracker: Arc<dyn Tracker>) -> Self
pub fn slack(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::Slack.
Sourcepub fn webhook(self, tracker: Arc<dyn Tracker>) -> Self
pub fn webhook(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::Webhook.
Sourcepub fn colonizer(self, tracker: Arc<dyn Tracker>) -> Self
pub fn colonizer(self, tracker: Arc<dyn Tracker>) -> Self
The adapter for Destination::Colonizer.
Trait Implementations§
Source§impl Clone for RoutingTracker
impl Clone for RoutingTracker
Source§impl Debug for RoutingTracker
impl Debug for RoutingTracker
Source§impl Default for RoutingTracker
impl Default for RoutingTracker
Source§impl Tracker for RoutingTracker
impl Tracker for RoutingTracker
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 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,
dest. 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
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: '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
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: '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