mirror of
https://github.com/openai/codex.git
synced 2026-08-23 13:09:46 +00:00
model-provider: route model discovery through HTTP client factory (#31361)
This commit is contained in:
@@ -37,9 +37,15 @@ impl<T: HttpTransport> ModelsClient<T> {
|
||||
req.url = format!("{}{}client_version={client_version}", req.url, separator);
|
||||
}
|
||||
|
||||
pub fn request_url(provider: &Provider, client_version: &str) -> String {
|
||||
let mut request = provider.build_request(Method::GET, Self::path());
|
||||
Self::append_client_version_query(&mut request, client_version);
|
||||
request.url
|
||||
}
|
||||
|
||||
pub async fn list_models(
|
||||
&self,
|
||||
client_version: &str,
|
||||
request_url: String,
|
||||
extra_headers: HeaderMap,
|
||||
) -> Result<(Vec<ModelInfo>, Option<String>), ApiError> {
|
||||
let resp = self
|
||||
@@ -49,8 +55,8 @@ impl<T: HttpTransport> ModelsClient<T> {
|
||||
Self::path(),
|
||||
extra_headers,
|
||||
/*body*/ None,
|
||||
|req| {
|
||||
Self::append_client_version_query(req, client_version);
|
||||
move |req| {
|
||||
req.url.clone_from(&request_url);
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
@@ -161,14 +167,12 @@ mod tests {
|
||||
etag: None,
|
||||
};
|
||||
|
||||
let client = ModelsClient::new(
|
||||
transport.clone(),
|
||||
provider("https://example.com/api/codex"),
|
||||
Arc::new(DummyAuth),
|
||||
);
|
||||
let provider = provider("https://example.com/api/codex");
|
||||
let request_url = ModelsClient::<CapturingTransport>::request_url(&provider, "0.99.0");
|
||||
let client = ModelsClient::new(transport.clone(), provider, Arc::new(DummyAuth));
|
||||
|
||||
let (models, _) = client
|
||||
.list_models("0.99.0", HeaderMap::new())
|
||||
.list_models(request_url, HeaderMap::new())
|
||||
.await
|
||||
.expect("request should succeed");
|
||||
|
||||
@@ -225,14 +229,12 @@ mod tests {
|
||||
etag: None,
|
||||
};
|
||||
|
||||
let client = ModelsClient::new(
|
||||
transport,
|
||||
provider("https://example.com/api/codex"),
|
||||
Arc::new(DummyAuth),
|
||||
);
|
||||
let provider = provider("https://example.com/api/codex");
|
||||
let request_url = ModelsClient::<CapturingTransport>::request_url(&provider, "0.99.0");
|
||||
let client = ModelsClient::new(transport, provider, Arc::new(DummyAuth));
|
||||
|
||||
let (models, _) = client
|
||||
.list_models("0.99.0", HeaderMap::new())
|
||||
.list_models(request_url, HeaderMap::new())
|
||||
.await
|
||||
.expect("request should succeed");
|
||||
|
||||
@@ -252,14 +254,12 @@ mod tests {
|
||||
etag: Some("\"abc\"".to_string()),
|
||||
};
|
||||
|
||||
let client = ModelsClient::new(
|
||||
transport,
|
||||
provider("https://example.com/api/codex"),
|
||||
Arc::new(DummyAuth),
|
||||
);
|
||||
let provider = provider("https://example.com/api/codex");
|
||||
let request_url = ModelsClient::<CapturingTransport>::request_url(&provider, "0.1.0");
|
||||
let client = ModelsClient::new(transport, provider, Arc::new(DummyAuth));
|
||||
|
||||
let (models, etag) = client
|
||||
.list_models("0.1.0", HeaderMap::new())
|
||||
.list_models(request_url, HeaderMap::new())
|
||||
.await
|
||||
.expect("request should succeed");
|
||||
|
||||
|
||||
@@ -118,10 +118,12 @@ async fn models_client_hits_models_endpoint() {
|
||||
.await;
|
||||
|
||||
let transport = ReqwestTransport::new(reqwest::Client::new());
|
||||
let client = ModelsClient::new(transport, provider(&base_url), Arc::new(DummyAuth));
|
||||
let provider = provider(&base_url);
|
||||
let request_url = ModelsClient::<ReqwestTransport>::request_url(&provider, "0.1.0");
|
||||
let client = ModelsClient::new(transport, provider, Arc::new(DummyAuth));
|
||||
|
||||
let (models, _) = client
|
||||
.list_models("0.1.0", HeaderMap::new())
|
||||
.list_models(request_url, HeaderMap::new())
|
||||
.await
|
||||
.expect("models request should succeed");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user