auth.rs

 1use std::env;
 2
 3use gpui::AppContext;
 4use util::ResultExt;
 5
 6use crate::auth::{CredentialProvider, ProviderCredential};
 7use crate::providers::open_ai::OPENAI_API_URL;
 8
 9#[derive(Clone)]
10pub struct OpenAICredentialProvider {}
11
12impl CredentialProvider for OpenAICredentialProvider {
13    fn retrieve_credentials(&self, cx: &AppContext) -> ProviderCredential {
14        let api_key = if let Ok(api_key) = env::var("OPENAI_API_KEY") {
15            Some(api_key)
16        } else if let Some((_, api_key)) = cx
17            .platform()
18            .read_credentials(OPENAI_API_URL)
19            .log_err()
20            .flatten()
21        {
22            String::from_utf8(api_key).log_err()
23        } else {
24            None
25        };
26
27        if let Some(api_key) = api_key {
28            ProviderCredential::Credentials { api_key }
29        } else {
30            ProviderCredential::NoCredentials
31        }
32    }
33}