line_bot_messaging_api/api/
profile.rs

1use crate::{LineApiResponse, LineClient};
2use serde_derive::{Deserialize, Serialize};
3use serde_json::{json, Value};
4
5impl LineClient {
6    /// https://developers.line.biz/ja/reference/messaging-api/#get-profile
7    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    /// https://developers.line.biz/ja/reference/messaging-api/#get-follower-ids
15    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}