/*
=============================================================
  查询账户点数 Demo (Rust版)

  功能说明：
  查询账户剩余点数（余额）

  使用方法：
  1. 确保已安装 Rust / Cargo（建议 stable 版本）
  2. 执行：
       cargo add reqwest --features blocking,json,rustls-tls
       cargo add serde_json
  3. 将下方的 APPKEY 替换为你自己的用户密钥
  4. 运行脚本：cargo run --bin query_points
=============================================================
*/

use reqwest::blocking::Client;
use serde_json::Value;
use std::error::Error;
use std::process;
use std::time::Duration;

const APPKEY: &str = "你的appkey";
const API_BASE: &str = "http://api.ttocr.com/api";

fn query_points() -> Result<Value, Box<dyn Error>> {
    let client = Client::builder().timeout(Duration::from_secs(10)).build()?;
    let result: Value = client
        .get(&format!("{}/points", API_BASE))
        .query(&[("appkey", APPKEY)])
        .send()?
        .json()?;

    if result["status"].as_i64() == Some(1) {
        println!("[成功] 查询成功！当前可用点数：{}", result["points"]);
    } else {
        println!("[失败] 查询失败，错误信息：{}", result["msg"]);
        println!("[提示] 错误状态码：{}，请参考错误代码表排查", result["status"]);
    }

    println!(
        "[完整响应] {}",
        serde_json::to_string_pretty(&result).unwrap_or_else(|_| result.to_string())
    );

    Ok(result)
}

fn main() {
    println!("************************************************************");
    println!("  查询账户点数 Demo (Rust版)");
    println!("************************************************************");

    if APPKEY == "你的appkey" {
        println!("\n[错误] 请先在代码顶部的配置区域填写你的 APPKEY");
        process::exit(1);
    }

    println!("==================================================");
    println!("[查询点数] 正在查询账户剩余点数...");
    println!("==================================================");

    if let Err(error) = query_points() {
        println!("[异常] 网络请求出错：{}", error);
        process::exit(1);
    }

    println!("\n==================================================");
    println!("[完成] 查询执行完毕");
    println!("==================================================");
}
