Module webhook

Source
Expand description

webhook handling (forge-agnostic)

Processing happens as follows:

  • HHTP POST data
    1. processed by Rocket route handler
    2. FromData for RawSpecificWebhookPayload<P>
    3. P is f::Payload where f is eg gitlab
    4. P::Deserialize gives us P
    5. client IP address extracted from Rocket
  • RawSpecificWebhookPayload<P>
    1. processed by RawSpecificWebhookPayload::webhook_impl
    2. Find the forge details, from P as SomeWebhookPayload
    3. TryFrom<Payload> for RawWebhookPayloadData<DbData> (DbData is the forge-specific data)
    4. Converted to RawWebhookPayloadData<DbData> and RawWebhookMetadata
    5. processed by RawWebhookMetadata::webhook_impl (with RawWebhookPayloadData<_> argument)
    6. Processed by UnvalidatedWebhookRequest::validate_payload 1. Check forge host (based on repo url) and IP address permission 2. Check tag name etc.
    7. Make a JobRow
  • JobRow, in RawWebhookMetadata::webhook_impl
    • inserted in db

Structs§

RawSpecificWebhookPayload
RawWebhookPayloadData
Not validated

Traits§

SomeWebhookPayload