rsmycqu 0.2.0

A Rust library for interacting with Chonqing University services, including SSO authentication, campus card management, and more.
Documentation
use reqwest::{RequestBuilder, Response, StatusCode};

use crate::{
    errors::{ApiError, card::CardResult},
    session::{Client, Session},
};

pub(super) async fn card_request_handler<T>(
    client: &Client,
    session: &Session,
    f: T,
) -> CardResult<Response>
where
    T: FnOnce(&Client) -> RequestBuilder,
{
    if session.access_infos.card_access_info.is_none() {
        return Err(ApiError::NotAccess);
    }

    let res = session.execute(f(client)).await?;

    if res.status() == StatusCode::UNAUTHORIZED {
        return Err(ApiError::NotAccess);
    }
    Ok(res)
}