use crate::message::{LineApiMessageBroadcastRequest, LineApiMessageMulticastRequest, LineApiMessagePushRequest};
use crate::{LineApiResponse, LineClient};
use serde_derive::{Deserialize, Serialize};
use serde_json::{json, Value};
impl LineClient {
pub async fn message_send_push(
&self,
request: &LineApiMessagePushRequest,
) -> LineApiResponse<LineApiMessagePushResponse> {
self.http_post("https://api.line.me/v2/bot/message/push", &request)
.await
}
pub async fn message_send_multicast(
&self,
request: &LineApiMessageMulticastRequest,
) -> LineApiResponse<LineApiMessageSendMulticastResponse> {
self.http_post("https://api.line.me/v2/bot/message/multicast", &request)
.await
}
pub async fn message_send_broadcast(
&self,
request: &LineApiMessageBroadcastRequest,
) -> LineApiResponse<LineApiMessageSendBroadcastResponse> {
self.http_post("https://api.line.me/v2/bot/message/broadcast", &request)
.await
}
pub async fn message_get_quota(
&self,
) -> LineApiResponse<LineApiMessageGetQuotaResponse> {
self.http_get("https://api.line.me/v2/bot/message/quota", &json!({}))
.await
}
pub async fn message_get_quota_consumption(
&self,
) -> LineApiResponse<LineApiMessageGetQuotaConsumptionResponse> {
self.http_get("https://api.line.me/v2/bot/message/quota/consumption ", &json!({}))
.await
}
pub async fn message_get_number_of_reply_messages(
&self,
date: &str,
) -> LineApiResponse<LineApiMessageGetNumberOfReplyMessageResponse> {
self.http_get(format!("https://api.line.me/v2/bot/message/delivery/reply?date={}", date).as_str(), &json!({}))
.await
}
pub async fn message_get_number_of_push_messages(
&self,
date: &str,
) -> LineApiResponse<LineApiMessageGetNumberOfPushMessageResponse> {
self.http_get(format!("https://api.line.me/v2/bot/message/delivery/push?date={}", date).as_str(), &json!({}))
.await
}
pub async fn message_get_number_of_multicast_messages(
&self,
date: &str,
) -> LineApiResponse<LineApiMessageGetNumberOfMulticastMessageResponse> {
self.http_get(format!("https://api.line.me/v2/bot/message/delivery/multicast?date={}", date).as_str(), &json!({}))
.await
}
pub async fn message_get_number_of_broadcast_messages(
&self,
date: &str,
) -> LineApiResponse<LineApiMessageGetNumberOfBroadcastMessageResponse> {
self.http_get(format!("https://api.line.me/v2/bot/message/delivery/broadcast?date={}", date).as_str(), &json!({}))
.await
}
pub async fn message_validate_reply(
&self,
data: &Vec<Value>,
) -> LineApiResponse<LineApiMessageValidateMessageObjectsOfReplyMessage> {
self.http_post("https://api.line.me/v2/bot/message/validate/reply", &json!({
"messages":data
}))
.await
}
pub async fn message_validate_push(
&self,
data: &Vec<Value>,
) -> LineApiResponse<LineApiMessageValidateMessageObjectsOfPushMessage> {
self.http_post("https://api.line.me/v2/bot/message/validate/push", &json!({
"messages":data
}))
.await
}
pub async fn message_validate_multicast(
&self,
data: &Vec<Value>,
) -> LineApiResponse<LineApiMessageValidateMessageObjectsOfMulticastMessage> {
self.http_post("https://api.line.me/v2/bot/message/validate/multicast", &json!({
"messages":data
}))
.await
}
pub async fn message_validate_narrowcast(
&self,
data: &Vec<Value>,
) -> LineApiResponse<LineApiMessageValidateMessageObjectsOfNarrowcastMessage> {
self.http_post("https://api.line.me/v2/bot/message/validate/narrowcast", &json!({
"messages":data
}))
.await
}
pub async fn message_validate_broadcast(
&self,
data: &Vec<Value>,
) -> LineApiResponse<LineApiMessageValidateMessageObjectsOfBroadcastMessage> {
self.http_post("https://api.line.me/v2/bot/message/validate/broadcast", &json!({
"messages":data
}))
.await
}
pub async fn message_aggregation_info(
&self,
) -> LineApiResponse<LineApiMessageAggregationInfoResponse> {
self.http_get("https://api.line.me/v2/bot/message/aggregation/info", &json!({}))
.await
}
pub async fn message_aggregation_list(
&self,
) -> LineApiResponse<LineApiMessageAggregationListResponse> {
self.http_get("https://api.line.me/v2/bot/message/aggregation/list ", &json!({
}))
.await
}
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessagePushResponse {
#[serde(rename = "sentMessages")]
pub sent_messages: Vec<LineApiSendMessage>,
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiSendMessage {
pub id: String,
#[serde(rename = "quoteToken")]
pub quote_token: Option<String>,
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageSendMulticastResponse {}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageSendBroadcastResponse {}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageGetQuotaResponse {
#[serde(rename = "type")]
quota_type: String,
value: Option<u32>,
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageGetQuotaConsumptionResponse {
#[serde(rename = "totalUsage")]
total_usage: u32,
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageGetNumberOfReplyMessageResponse {
status: String,
success: Option<u32>,
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageGetNumberOfPushMessageResponse {
status: String,
success: Option<u32>,
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageGetNumberOfMulticastMessageResponse {
status: String,
success: Option<u32>,
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageGetNumberOfBroadcastMessageResponse {
status: String,
success: Option<u32>,
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageValidateMessageObjectsOfPushMessage {}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageValidateMessageObjectsOfReplyMessage {}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageValidateMessageObjectsOfMulticastMessage {}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageValidateMessageObjectsOfNarrowcastMessage {}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageValidateMessageObjectsOfBroadcastMessage {}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageAggregationInfoResponse {
#[serde(rename = "numOfCustomAggregationUnits")]
num_of_custom_aggregation_units: u32,
}
#[derive(Debug, Default, Deserialize, Serialize)]
pub struct LineApiMessageAggregationListResponse {
#[serde(rename = "customAggregationUnits")]
custom_aggregation_units: Vec<String>,
next: Option<String>,
}