pub struct LagoPlugin {
sink: BatchSink,
log_format: Option<HashMap<String, Value>>,
include_req_body: bool,
include_resp_body: bool,
event_transaction_id: String,
subscription_id: String,
event_code: String,
}Expand description
Emits one Lago billing event per request, delivered in batches.
Fields§
§sink: BatchSink§log_format: Option<HashMap<String, Value>>§include_req_body: bool§include_resp_body: bool§event_transaction_id: String§subscription_id: String§event_code: StringImplementations§
Source§impl LagoPlugin
impl LagoPlugin
Sourcepub fn from_config(
config: &HashMap<String, Value>,
resources: &Arc<PluginResources>,
) -> Result<Self, String>
pub fn from_config( config: &HashMap<String, Value>, resources: &Arc<PluginResources>, ) -> Result<Self, String>
Builds the plugin from node config.
Config keys:
| Key | Type | Default | Description |
|---|---|---|---|
endpoint | string | — (required) | Lago API base, e.g. http://127.0.0.1:3000. |
token | string | — (required) | Lago API key, sent as Authorization: Bearer <token>. |
event_transaction_id | string | — (required) | $var template for the event’s idempotency/transaction id, e.g. req_$request_uri. |
subscription_id | string | — (required) | $var template identifying the customer subscription, e.g. cus_$consumer_name. |
event_code | string | — (required) | Lago billable-metric code the event bills against. |
endpoint_uri | string | /api/v1/events/batch | Batch-send path appended to endpoint. |
ssl_verify | bool | true | Verify the Lago TLS certificate. |
timeout | int (ms) | 3000 | Per-flush HTTP timeout. |
log_format | object | — | Custom name -> "$var template" entry used for the event properties. |
include_req_body / include_resp_body | bool | false | Include bodies in the default properties entry. |
Batch keys default batch_max_size to 100 (Lago’s batch limit)
rather than 1000; other batch keys follow BatchConfig::from_config.
type: lago
config:
endpoint: http://127.0.0.1:3000
token: ${LAGO_API_KEY}
event_transaction_id: req_$request_uri
subscription_id: cus_$consumer_name
event_code: api_callsTrait Implementations§
Source§impl Plugin for LagoPlugin
impl Plugin for LagoPlugin
Source§fn plugin_type(&self) -> &str
fn plugin_type(&self) -> &str
Unique identifier for the plugin type (e.g., “proxy-rewrite”, “upstream”).
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: Context,
_named_inputs: &'life1 HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: Context,
_named_inputs: &'life1 HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Executes the plugin logic against the request/response context. Read more
Auto Trait Implementations§
impl Freeze for LagoPlugin
impl RefUnwindSafe for LagoPlugin
impl Send for LagoPlugin
impl Sync for LagoPlugin
impl Unpin for LagoPlugin
impl UnsafeUnpin for LagoPlugin
impl UnwindSafe for LagoPlugin
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more