sova-devtools 0.1.7

In-app DevTools bar for Sova (HTML inject, SSE timeline, request snapshots)
Documentation
use crate::collector::{DevToolsBag, RateLimitSnap};
use sova_core::Response;

pub fn collect_response_meta(bag: &DevToolsBag, res: &Response) {
    let h = res.headers();
    let encoding = h
        .get(http::header::CONTENT_ENCODING)
        .and_then(|v| v.to_str().ok())
        .map(|s| s.to_string());
    bag.set_encoding(encoding);

    let limit = h
        .get("ratelimit-limit")
        .and_then(|v| v.to_str().ok())
        .and_then(|s| s.parse().ok());
    let remaining = h
        .get("ratelimit-remaining")
        .and_then(|v| v.to_str().ok())
        .and_then(|s| s.parse().ok());
    let reset = h
        .get("ratelimit-reset")
        .and_then(|v| v.to_str().ok())
        .and_then(|s| s.parse().ok());
    if limit.is_some() || remaining.is_some() || reset.is_some() {
        bag.set_rate_limit(Some(RateLimitSnap {
            limit,
            remaining,
            reset,
        }));
    }
}