mod request;
mod request_parts;
mod response;
mod streaming;
mod streaming_parts;
mod thinking;
mod wire;
pub use request::build_request_body;
pub use response::{buffered_defect, parse_response, stop_reason};
pub use streaming::sse_to_canonical_events;
pub use wire::{
GeminiCandidate, GeminiCodeExecutionResult, GeminiContent, GeminiEmpty, GeminiExecutableCode,
GeminiFunctionCall, GeminiFunctionCallingConfig, GeminiFunctionDeclaration,
GeminiFunctionResponse, GeminiGenerationConfig, GeminiGroundingChunk, GeminiGroundingMetadata,
GeminiImageConfig, GeminiInlineData, GeminiPart, GeminiPromptFeedback, GeminiRequest,
GeminiResponse, GeminiSystemInstruction, GeminiThinkingConfig, GeminiTool, GeminiToolConfig,
GeminiUsageMetadata, GeminiWebSource,
};
pub const API_KEY_HEADER: &str = "x-goog-api-key";
#[must_use]
pub fn upstream_path(model: &str, stream: bool) -> String {
if stream {
format!("/models/{model}:streamGenerateContent?alt=sse")
} else {
format!("/models/{model}:generateContent")
}
}