From 4c64817a574cb9817db92c8e95abd8c3a4cb5f43 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Tue, 27 May 2025 11:04:05 -0700 Subject: [PATCH] add models file --- crates/brightstaff/src/handlers/models.rs | 46 +++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 crates/brightstaff/src/handlers/models.rs diff --git a/crates/brightstaff/src/handlers/models.rs b/crates/brightstaff/src/handlers/models.rs new file mode 100644 index 00000000..8187292f --- /dev/null +++ b/crates/brightstaff/src/handlers/models.rs @@ -0,0 +1,46 @@ +use bytes::Bytes; +use common::api::open_ai::Models; +use common::configuration::LlmProvider; +use http_body_util::{combinators::BoxBody, BodyExt, Full}; +use hyper::body::Body; +use hyper::{Response, StatusCode}; +use serde_json; +use std::sync::Arc; + +pub async fn list_models( + llm_providers: Arc>, +) -> Response> { + let prov = llm_providers.clone(); + let providers = (*prov).clone(); + let providers = providers + .iter() + .filter(|provider| provider.name == "gpt-4o-mini") + .cloned() + .collect::>(); + let openai_models = Models::from(providers); + + match serde_json::to_string(&openai_models) { + Ok(json) => { + let body = Full::new(Bytes::from(json)) + .map_err(|never| match never {}) + .boxed(); + Response::builder() + .status(StatusCode::OK) + .header("Content-Type", "application/json") + .body(body) + .unwrap() + } + Err(_) => { + let body = Full::new(Bytes::from_static( + b"{\"error\":\"Failed to serialize models\"}", + )) + .map_err(|never| match never {}) + .boxed(); + Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .header("Content-Type", "application/json") + .body(body) + .unwrap() + } + } +}