line_bot_messaging_api/api/
profile.rs1use crate::{LineApiResponse, LineClient};
2use serde_derive::{Deserialize, Serialize};
3use serde_json::{json, Value};
4
5impl LineClient {
6 pub async fn profile(&self, user_id: &str) -> LineApiResponse<LineApiProfileResponse> {
8 self.http_get(
9 format!("https://api.line.me/v2/bot/profile/{}", user_id).as_str(),
10 &json!({}),
11 )
12 .await
13 }
14 pub async fn followers_ids(
16 &self,
17 request: &LineApiFollowersIdsRequest,
18 ) -> LineApiResponse<Value> {
19 self.http_get("https://api.line.me/v2/bot/followers/ids", request)
20 .await
21 }
22}
23
24#[derive(Debug, Default, Deserialize, Serialize, Clone)]
25pub struct LineApiFollowersIdsRequest {
26 pub limit: Option<u32>,
27 pub start: Option<String>,
28}
29
30#[derive(Debug, Default, Deserialize, Serialize, Clone)]
31pub struct LineApiProfileResponse {
32 #[serde(rename = "displayName")]
33 pub display_name: String,
34 #[serde(rename = "userId")]
35 pub user_id: String,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub language: Option<String>,
38 #[serde(rename = "pictureUrl")]
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub picture_url: Option<String>,
41 #[serde(rename = "statusMessage")]
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub status_message: Option<String>,
44}