sigstat 0.0.4

Statsig Rust SDK for usage in multi-user server environments.
Documentation
mod utils;

use crate::utils::mock_scrapi::{Endpoint, EndpointStub, MockScrapi};
use sigstat::networking::{Curl, HttpMethod, RequestArgs};
use std::{sync::Arc, time::Duration};
use tokio::sync::Mutex;

#[tokio::test]
async fn test_multiple_requests() {
    let mock_scrapi = MockScrapi::new().await;

    mock_scrapi
        .stub(EndpointStub {
            delay_ms: 10,
            response: "{\"success\": true}".to_string(),
            ..EndpointStub::with_endpoint(Endpoint::DownloadConfigSpecs)
        })
        .await;

    let url = mock_scrapi.url_for_endpoint(Endpoint::DownloadConfigSpecs);
    let results = Arc::new(Mutex::new(vec![]));

    for _ in 0..3 {
        let curl_clone = Curl::get("multiple_requests_key");
        let url_clone = url.clone();
        let results_clone = results.clone();
        tokio::spawn(async move {
            results_clone.lock().await.push(
                curl_clone
                    .send(
                        &HttpMethod::GET,
                        &RequestArgs {
                            url: url_clone,
                            ..RequestArgs::new()
                        },
                    )
                    .await,
            );
        });
        tokio::time::sleep(Duration::from_millis(10)).await;
    }

    assert_eq!(results.lock().await.len(), 3);
}