use std::sync::Arc;
use serde::Serialize;
use async_lock::RwLock;
use crate::api::{
v4::notification::internal::models::{
InternalNotificationResponse,
InternalNotificationExpressError,
InternalNotificationRequest,
},
context::BotXApiContext,
result::BotXApiResult,
utils::request_manager::RequestManager
};
pub async fn internal_notification<TData: Serialize, TOptions: Serialize>(context: &Arc<RwLock<BotXApiContext>>, request: &InternalNotificationRequest<TData, TOptions>) -> BotXApiResult<InternalNotificationResponse, InternalNotificationExpressError> {
let context_read_lock = context.read().await;
let url = (context_read_lock.api.internal_notification_api_builder)(&context_read_lock.cts_url);
drop(context_read_lock);
RequestManager::post(
"Internal notification v4",
url,
request,
RequestManager::MULTIPART_CONTENT_TYPE,
context,
).await
}