use crate::{
apis::{
associations::AssociationsApi, blogs::BlogsApi, businesses::BusinessesApi,
calendars::CalendarsApi, campaigns::CampaignsApi, companies::CompaniesApi,
contacts::ContactsApi, conversations::ConversationsApi, courses::CoursesApi,
custom_fields::CustomFieldsApi, custom_menus::CustomMenusApi, forms::FormsApi,
funnels::FunnelsApi, invoices::InvoicesApi, links::LinksApi, locations::LocationsApi,
medias::MediasApi, objects::ObjectsApi, opportunities::OpportunitiesApi,
payments::PaymentsApi, pipelines::PipelinesApi, products::ProductsApi,
snapshots::SnapshotsApi, social_planner::SocialPlannerApi, surveys::SurveysApi,
tags::TagsApi, users::UsersApi, webhooks::WebhooksApi, workflows::WorkflowsApi,
},
auth::OAuthClient,
config::HighLevelConfig,
http::HttpClient,
};
use std::sync::Arc;
pub struct HighLevel {
pub(crate) http: Arc<HttpClient>,
pub(crate) config: Arc<HighLevelConfig>,
}
impl HighLevel {
pub fn new(config: HighLevelConfig) -> Self {
let http = Arc::new(HttpClient::new(&config));
Self {
http,
config: Arc::new(config),
}
}
pub async fn set_access_token(&self, token: impl Into<String>) {
self.http.set_token(token.into()).await;
}
pub async fn access_token(&self) -> Option<String> {
self.http.get_token().await
}
pub fn oauth(&self) -> OAuthClient {
OAuthClient::new(self.config.clone(), reqwest::Client::new())
}
pub fn associations(&self) -> AssociationsApi {
AssociationsApi::new(self.http.clone())
}
pub fn blogs(&self) -> BlogsApi {
BlogsApi::new(self.http.clone())
}
pub fn businesses(&self) -> BusinessesApi {
BusinessesApi::new(self.http.clone())
}
pub fn calendars(&self) -> CalendarsApi {
CalendarsApi::new(self.http.clone())
}
pub fn campaigns(&self) -> CampaignsApi {
CampaignsApi::new(self.http.clone())
}
pub fn companies(&self) -> CompaniesApi {
CompaniesApi::new(self.http.clone())
}
pub fn contacts(&self) -> ContactsApi {
ContactsApi::new(self.http.clone())
}
pub fn conversations(&self) -> ConversationsApi {
ConversationsApi::new(self.http.clone())
}
pub fn courses(&self) -> CoursesApi {
CoursesApi::new(self.http.clone())
}
pub fn custom_fields(&self) -> CustomFieldsApi {
CustomFieldsApi::new(self.http.clone())
}
pub fn custom_menus(&self) -> CustomMenusApi {
CustomMenusApi::new(self.http.clone())
}
pub fn forms(&self) -> FormsApi {
FormsApi::new(self.http.clone())
}
pub fn funnels(&self) -> FunnelsApi {
FunnelsApi::new(self.http.clone())
}
pub fn invoices(&self) -> InvoicesApi {
InvoicesApi::new(self.http.clone())
}
pub fn links(&self) -> LinksApi {
LinksApi::new(self.http.clone())
}
pub fn locations(&self) -> LocationsApi {
LocationsApi::new(self.http.clone())
}
pub fn medias(&self) -> MediasApi {
MediasApi::new(self.http.clone())
}
pub fn objects(&self) -> ObjectsApi {
ObjectsApi::new(self.http.clone())
}
pub fn opportunities(&self) -> OpportunitiesApi {
OpportunitiesApi::new(self.http.clone())
}
pub fn payments(&self) -> PaymentsApi {
PaymentsApi::new(self.http.clone())
}
pub fn pipelines(&self) -> PipelinesApi {
PipelinesApi::new(self.http.clone())
}
pub fn products(&self) -> ProductsApi {
ProductsApi::new(self.http.clone())
}
pub fn snapshots(&self) -> SnapshotsApi {
SnapshotsApi::new(self.http.clone())
}
pub fn social_planner(&self) -> SocialPlannerApi {
SocialPlannerApi::new(self.http.clone())
}
pub fn surveys(&self) -> SurveysApi {
SurveysApi::new(self.http.clone())
}
pub fn tags(&self) -> TagsApi {
TagsApi::new(self.http.clone())
}
pub fn users(&self) -> UsersApi {
UsersApi::new(self.http.clone())
}
pub fn webhooks(&self) -> WebhooksApi {
WebhooksApi::new(self.http.clone())
}
pub fn workflows(&self) -> WorkflowsApi {
WorkflowsApi::new(self.http.clone())
}
}