shopify_client/
lib.rs

1use std::sync::Arc;
2
3pub mod common;
4pub mod services;
5pub mod types;
6pub mod webhooks;
7
8pub struct ShopifyClient {
9    pub order: services::order::Order,
10    pub subscription: services::subscription::Subscription,
11    pub app_installation: services::app_installation::AppInstallation,
12    pub discount: services::discount::Discount,
13    pub cart_transform: services::cart_transform::CartTransform,
14    pub shopify_functions: services::shopify_functions::ShopifyFunctions,
15}
16
17impl ShopifyClient {
18    pub fn new(shop_url: String, access_token: String, api_version: Option<String>) -> Self {
19        let api_version = api_version.unwrap_or("2026-01".to_string());
20        let shop_url_arc = Arc::new(shop_url);
21        let api_version_arc = Arc::new(api_version);
22        let access_token_arc = Arc::new(access_token);
23
24        ShopifyClient {
25            order: services::order::Order::new(
26                Arc::clone(&shop_url_arc),
27                Arc::clone(&api_version_arc),
28                Arc::clone(&access_token_arc),
29            ),
30            subscription: services::subscription::Subscription::new(
31                Arc::clone(&shop_url_arc),
32                Arc::clone(&api_version_arc),
33                Arc::clone(&access_token_arc),
34            ),
35            app_installation: services::app_installation::AppInstallation::new(
36                Arc::clone(&shop_url_arc),
37                Arc::clone(&api_version_arc),
38                Arc::clone(&access_token_arc),
39            ),
40            discount: services::discount::Discount::new(
41                Arc::clone(&shop_url_arc),
42                Arc::clone(&api_version_arc),
43                Arc::clone(&access_token_arc),
44            ),
45            cart_transform: services::cart_transform::CartTransform::new(
46                Arc::clone(&shop_url_arc),
47                Arc::clone(&api_version_arc),
48                Arc::clone(&access_token_arc),
49            ),
50            shopify_functions: services::shopify_functions::ShopifyFunctions::new(
51                Arc::clone(&shop_url_arc),
52                Arc::clone(&api_version_arc),
53                Arc::clone(&access_token_arc),
54            ),
55        }
56    }
57}