reqkey 0.1.0

Official Rust SDK for ReqKey API key validation, credit metering, and analytics
Documentation
#![allow(dead_code)]

use reqkey::Client;
use serde_json::json;
use wiremock::{
    matchers::{header, method, path},
    Mock, MockServer, ResponseTemplate,
};

pub fn client(server: &MockServer) -> Client {
    Client::builder()
        .project_key("project_test")
        .base_url(server.uri())
        .build()
        .expect("test client")
}

pub async fn mount_allowed(server: &MockServer) {
    Mock::given(method("POST"))
        .and(path("/key/validate"))
        .and(header("authorization", "Bearer project_test"))
        .respond_with(ResponseTemplate::new(200).set_body_json(json!({
            "valid": true,
            "requestId": "request_123",
            "apiId": "api_payments",
            "apiName": "Payments",
            "resource": "/payments",
            "creditsRemaining": 9,
            "creditsLimit": 10,
            "allowedApis": ["api_payments"],
            "rateLimit": {"limit": 10, "remaining": 9}
        })))
        .mount(server)
        .await;
}

pub async fn mount_ingest(server: &MockServer) {
    Mock::given(method("POST"))
        .and(path("/ingest"))
        .respond_with(ResponseTemplate::new(202))
        .mount(server)
        .await;
}