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}
15
16impl ShopifyClient {
17 pub fn new(shop_url: String, access_token: String, api_version: Option<String>) -> Self {
18 let api_version = api_version.unwrap_or("2024-07".to_string());
19 let shop_url_arc = Arc::new(shop_url);
20 let api_version_arc = Arc::new(api_version);
21 let access_token_arc = Arc::new(access_token);
22
23 ShopifyClient {
24 order: services::order::Order::new(
25 Arc::clone(&shop_url_arc),
26 Arc::clone(&api_version_arc),
27 Arc::clone(&access_token_arc),
28 ),
29 subscription: services::subscription::Subscription::new(
30 Arc::clone(&shop_url_arc),
31 Arc::clone(&api_version_arc),
32 Arc::clone(&access_token_arc),
33 ),
34 app_installation: services::app_installation::AppInstallation::new(
35 Arc::clone(&shop_url_arc),
36 Arc::clone(&api_version_arc),
37 Arc::clone(&access_token_arc),
38 ),
39 discount: services::discount::Discount::new(
40 Arc::clone(&shop_url_arc),
41 Arc::clone(&api_version_arc),
42 Arc::clone(&access_token_arc),
43 ),
44 cart_transform: services::cart_transform::CartTransform::new(
45 Arc::clone(&shop_url_arc),
46 Arc::clone(&api_version_arc),
47 Arc::clone(&access_token_arc),
48 ),
49 }
50 }
51}