wechat-api-rs 0.1.0

A Rust SDK for WeChat Official Account and Mini Program APIs
Documentation
//! WeChat Mini Program API client

use crate::{Client, types::*};

/// Mini Program client
#[derive(Clone)]
pub struct MiniAppClient {
    core: Client,
}

impl MiniAppClient {
    pub fn new(core: Client) -> Self {
        Self { core }
    }

    /// Get auth API
    pub fn auth(&self) -> AuthApi {
        AuthApi::new(self.core.clone())
    }
}

/// Authentication API for Mini Program
pub struct AuthApi {
    core: Client,
}

impl AuthApi {
    pub fn new(core: Client) -> Self {
        Self { core }
    }

    pub fn code_to_session<S: Into<String>>(&self, js_code: S) -> CodeToSessionRequest {
        CodeToSessionRequest {
            core: self.core.clone(),
            js_code: js_code.into(),
        }
    }
}

/// Code to session request
pub struct CodeToSessionRequest {
    core: Client,
    js_code: String,
}

impl CodeToSessionRequest {
    pub async fn call(self) -> crate::Result<SessionInfo> {
        // TODO: Implement actual API call
        tracing::info!("Code to session: {}", self.js_code);
        Ok(SessionInfo {
            openid: "mock_openid".to_string(),
            session_key: "mock_session_key".to_string(),
            unionid: None,
            errcode: None,
            errmsg: None,
        })
    }
}