pub struct CreateMeterBuilder {
pub config: CreateMeterConfig,
/* private fields */
}Fields§
§config: CreateMeterConfigImplementations§
Source§impl CreateMeterBuilder
impl CreateMeterBuilder
pub fn new( handle: Arc<Handle>, name: String, event_name: String, aggregation: MeterAggregation, measurement_unit: String, ) -> Self
pub fn name(self, name: String) -> Self
pub fn event_name(self, event_name: String) -> Self
pub fn aggregation(self, aggregation: MeterAggregation) -> Self
pub fn measurement_unit(self, measurement_unit: String) -> Self
Sourcepub fn description(self, description: String) -> Self
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}Sourcepub fn filter(self, filter: MeterFilter) -> Self
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}Sourcepub async fn send(self) -> Result<CreateMeterResponse, Error>
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§
impl Freeze for CreateMeterBuilder
impl RefUnwindSafe for CreateMeterBuilder
impl Send for CreateMeterBuilder
impl Sync for CreateMeterBuilder
impl Unpin for CreateMeterBuilder
impl UnsafeUnpin for CreateMeterBuilder
impl UnwindSafe for CreateMeterBuilder
Blanket Implementations§
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> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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