use serde_json::{json, Map, Value};
use crate::canonical::{CanonicalError, CanonicalRequest};
use crate::protocol::json::finish_body;
use crate::protocol::{ProviderCtx, WireRequest};
pub(crate) fn count(
req: &CanonicalRequest,
ctx: &ProviderCtx,
) -> Result<WireRequest, CanonicalError> {
let mut inner = super::body_map(req)?;
inner.insert("model".into(), json!(format!("models/{}", ctx.model)));
let mut body = Map::new();
body.insert("generateContentRequest".into(), Value::Object(inner));
let url = format!("{}/v1beta/models/{}:countTokens", ctx.base_url, ctx.model);
Ok(finish_body(body, url))
}