Skip to main content

CreateMeterBuilder

Struct CreateMeterBuilder 

Source
pub struct CreateMeterBuilder {
    pub config: CreateMeterConfig,
    /* private fields */
}

Fields§

§config: CreateMeterConfig

Implementations§

Source§

impl CreateMeterBuilder

Source

pub fn new( handle: Arc<Handle>, name: String, event_name: String, aggregation: MeterAggregation, measurement_unit: String, ) -> Self

Source

pub fn name(self, name: String) -> Self

Source

pub fn event_name(self, event_name: String) -> Self

Source

pub fn aggregation(self, aggregation: MeterAggregation) -> Self

Source

pub fn measurement_unit(self, measurement_unit: String) -> Self

Source

pub fn description(self, description: String) -> Self

Examples found in repository?
examples/create_meter.rs (line 32)
9async fn main() {
10    let bearer_token = env::var("DODO_PAYMENTS_BEARER_TOKEN")
11        .expect("DODO_PAYMENTS_BEARER_TOKEN must be set in env variables");
12
13    let client = DodoPayments::new(
14        DodoPaymentsConfigBuilder::new()
15            .bearer_token(&bearer_token)
16            .environment("test_mode"),
17    );
18
19    // Create a simple count aggregation meter
20    let aggregation = MeterAggregation {
21        aggregation_type: AggregationType::Count,
22        key: None,
23    };
24
25    let response = client
26        .create_meter(
27            "API Requests".to_string(),
28            "api_request".to_string(),
29            aggregation,
30            "requests".to_string(),
31        )
32        .description("Track API requests".to_string())
33        .send()
34        .await;
35
36    println!("Response: {:#?}", response);
37
38    // Create a more complex meter with sum aggregation and a filter
39    let sum_aggregation = MeterAggregation {
40        aggregation_type: AggregationType::Sum,
41        key: Some("amount".to_string()),
42    };
43
44    // Note: For complex filters, you would need to construct the JSON structure manually
45    // This is a simplified example showing the basic structure
46    let filter_json = serde_json::json!({
47        "conjunction": "and",
48        "clauses": [
49            {
50                "key": "user_type",
51                "operator": "equals",
52                "value": "premium"
53            }
54        ]
55    });
56
57    let filter = MeterFilter {
58        conjunction: Conjunction::And,
59        clauses: vec![filter_json],
60    };
61
62    let response2 = client
63        .create_meter(
64            "Premium Revenue".to_string(),
65            "payment_processed".to_string(),
66            sum_aggregation,
67            "usd_cents".to_string(),
68        )
69        .description("Track revenue from premium users".to_string())
70        .filter(filter)
71        .send()
72        .await;
73
74    println!("Response 2: {:#?}", response2);
75}
Source

pub fn filter(self, filter: MeterFilter) -> Self

Examples found in repository?
examples/create_meter.rs (line 70)
9async fn main() {
10    let bearer_token = env::var("DODO_PAYMENTS_BEARER_TOKEN")
11        .expect("DODO_PAYMENTS_BEARER_TOKEN must be set in env variables");
12
13    let client = DodoPayments::new(
14        DodoPaymentsConfigBuilder::new()
15            .bearer_token(&bearer_token)
16            .environment("test_mode"),
17    );
18
19    // Create a simple count aggregation meter
20    let aggregation = MeterAggregation {
21        aggregation_type: AggregationType::Count,
22        key: None,
23    };
24
25    let response = client
26        .create_meter(
27            "API Requests".to_string(),
28            "api_request".to_string(),
29            aggregation,
30            "requests".to_string(),
31        )
32        .description("Track API requests".to_string())
33        .send()
34        .await;
35
36    println!("Response: {:#?}", response);
37
38    // Create a more complex meter with sum aggregation and a filter
39    let sum_aggregation = MeterAggregation {
40        aggregation_type: AggregationType::Sum,
41        key: Some("amount".to_string()),
42    };
43
44    // Note: For complex filters, you would need to construct the JSON structure manually
45    // This is a simplified example showing the basic structure
46    let filter_json = serde_json::json!({
47        "conjunction": "and",
48        "clauses": [
49            {
50                "key": "user_type",
51                "operator": "equals",
52                "value": "premium"
53            }
54        ]
55    });
56
57    let filter = MeterFilter {
58        conjunction: Conjunction::And,
59        clauses: vec![filter_json],
60    };
61
62    let response2 = client
63        .create_meter(
64            "Premium Revenue".to_string(),
65            "payment_processed".to_string(),
66            sum_aggregation,
67            "usd_cents".to_string(),
68        )
69        .description("Track revenue from premium users".to_string())
70        .filter(filter)
71        .send()
72        .await;
73
74    println!("Response 2: {:#?}", response2);
75}
Source

pub async fn send(self) -> Result<CreateMeterResponse, Error>

Examples found in repository?
examples/create_meter.rs (line 33)
9async fn main() {
10    let bearer_token = env::var("DODO_PAYMENTS_BEARER_TOKEN")
11        .expect("DODO_PAYMENTS_BEARER_TOKEN must be set in env variables");
12
13    let client = DodoPayments::new(
14        DodoPaymentsConfigBuilder::new()
15            .bearer_token(&bearer_token)
16            .environment("test_mode"),
17    );
18
19    // Create a simple count aggregation meter
20    let aggregation = MeterAggregation {
21        aggregation_type: AggregationType::Count,
22        key: None,
23    };
24
25    let response = client
26        .create_meter(
27            "API Requests".to_string(),
28            "api_request".to_string(),
29            aggregation,
30            "requests".to_string(),
31        )
32        .description("Track API requests".to_string())
33        .send()
34        .await;
35
36    println!("Response: {:#?}", response);
37
38    // Create a more complex meter with sum aggregation and a filter
39    let sum_aggregation = MeterAggregation {
40        aggregation_type: AggregationType::Sum,
41        key: Some("amount".to_string()),
42    };
43
44    // Note: For complex filters, you would need to construct the JSON structure manually
45    // This is a simplified example showing the basic structure
46    let filter_json = serde_json::json!({
47        "conjunction": "and",
48        "clauses": [
49            {
50                "key": "user_type",
51                "operator": "equals",
52                "value": "premium"
53            }
54        ]
55    });
56
57    let filter = MeterFilter {
58        conjunction: Conjunction::And,
59        clauses: vec![filter_json],
60    };
61
62    let response2 = client
63        .create_meter(
64            "Premium Revenue".to_string(),
65            "payment_processed".to_string(),
66            sum_aggregation,
67            "usd_cents".to_string(),
68        )
69        .description("Track revenue from premium users".to_string())
70        .filter(filter)
71        .send()
72        .await;
73
74    println!("Response 2: {:#?}", response2);
75}

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more