line_bot_sdk_rust/client/
mod.rs1use std::rc::Rc;
18
19use hyper::{client::HttpConnector, Client as hyperClient};
20use hyper_rustls::HttpsConnector;
21use hyper_rustls::HttpsConnectorBuilder;
22use line_channel_access_token::apis::{
23 configuration::Configuration as ChannelAccessTokenApiConfiguration, ChannelAccessTokenApiClient,
24};
25use line_insight::apis::{configuration::Configuration as InsightConfiguration, InsightApiClient};
26use line_liff::apis::{configuration::Configuration as LiffConfiguration, LiffApiClient};
27use line_manage_audience::apis::{
28 configuration::Configuration as ManageAudienceConfiguration, ManageAudienceApiClient,
29};
30use line_messaging_api::apis::{
31 configuration::Configuration as MessagingApiConfiguration, MessagingApiApiClient,
32};
33use line_module::apis::{
34 configuration::Configuration as LineModuleConfiguration, LineModuleApiClient,
35};
36use line_module_attach::apis::{
37 configuration::Configuration as LineModuleAttachConfiguration, LineModuleAttachApiClient,
38};
39use line_shop::apis::{configuration::Configuration as ShopConfiguration, ShopApiClient};
40use line_webhook::apis::{
41 configuration::Configuration as WebhookConfiguration, DummyApiClient as WebhookDummyApiClient,
42};
43
44type C = HttpsConnector<HttpConnector>;
45
46pub struct LINE {
47 pub channel_access_token_api_client: ChannelAccessTokenApiClient<C>,
48 pub insight_api_client: InsightApiClient<C>,
49 pub liff_api_client: LiffApiClient<C>,
50 pub manage_audience_api_client: ManageAudienceApiClient<C>,
51 pub messaging_api_client: MessagingApiApiClient<C>,
52 pub module_api_client: LineModuleApiClient<C>,
53 pub module_attach_api_client: LineModuleAttachApiClient<C>,
54 pub shop_api_client: ShopApiClient<C>,
55 pub webhook_dummy_api_client: WebhookDummyApiClient<C>,
56}
57
58impl LINE {
59 pub fn new(token: String) -> LINE {
60 let client = LINE::create_hyper_client();
61
62 let mut channel_access_token_api_conf =
64 ChannelAccessTokenApiConfiguration::new(client.clone());
65 channel_access_token_api_conf.oauth_access_token = Some(token.to_owned());
66 let channel_access_token_api_client =
67 ChannelAccessTokenApiClient::new(Rc::new(channel_access_token_api_conf));
68
69 let mut insight_conf = InsightConfiguration::new(client.clone());
71 insight_conf.oauth_access_token = Some(token.to_owned());
72 let insight_api_client = InsightApiClient::new(Rc::new(insight_conf));
73
74 let mut liff_conf = LiffConfiguration::new(client.clone());
76 liff_conf.oauth_access_token = Some(token.to_owned());
77 let liff_api_client = LiffApiClient::new(Rc::new(liff_conf));
78
79 let mut manage_audience_conf = ManageAudienceConfiguration::new(client.clone());
81 manage_audience_conf.oauth_access_token = Some(token.to_owned());
82 let manage_audience_api_client =
83 ManageAudienceApiClient::new(Rc::new(manage_audience_conf));
84
85 let mut messaging_api_conf = MessagingApiConfiguration::new(client.clone());
87 messaging_api_conf.oauth_access_token = Some(token.to_owned());
88 let messaging_api_client = MessagingApiApiClient::new(Rc::new(messaging_api_conf));
89
90 let mut module_conf = LineModuleConfiguration::new(client.clone());
92 module_conf.oauth_access_token = Some(token.to_owned());
93 let module_api_client = LineModuleApiClient::new(Rc::new(module_conf));
94
95 let mut module_attach_conf = LineModuleAttachConfiguration::new(client.clone());
97 module_attach_conf.oauth_access_token = Some(token.to_owned());
98 let module_attach_api_client = LineModuleAttachApiClient::new(Rc::new(module_attach_conf));
99
100 let mut shop_conf = ShopConfiguration::new(client.clone());
102 shop_conf.oauth_access_token = Some(token.to_owned());
103 let shop_api_client = ShopApiClient::new(Rc::new(shop_conf));
104
105 let mut webhook_conf = WebhookConfiguration::new(client.clone());
107 webhook_conf.oauth_access_token = Some(token.to_owned());
108 let webhook_dummy_api_client = WebhookDummyApiClient::new(Rc::new(webhook_conf));
109
110 LINE {
111 channel_access_token_api_client,
112 insight_api_client,
113 liff_api_client,
114 manage_audience_api_client,
115 messaging_api_client,
116 module_api_client,
117 module_attach_api_client,
118 shop_api_client,
119 webhook_dummy_api_client,
120 }
121 }
122
123 fn create_hyper_client() -> hyperClient<C> {
124 let https = HttpsConnectorBuilder::new()
125 .with_native_roots()
126 .https_only()
127 .enable_http1()
128 .build();
129 hyperClient::builder().build::<_, hyper::Body>(https)
130 }
131}