mcp_compressor_core/ffi/
oauth.rs1use std::path::PathBuf;
2
3use serde::{Deserialize, Serialize};
4
5use crate::oauth::{
6 clear_oauth_store, list_oauth_stores, oauth_store_root, remember_oauth_store,
7 OAuthStoreIndexEntry,
8};
9use crate::Error;
10
11#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
12pub struct FfiOAuthStoreEntry {
13 pub backend_name: String,
14 pub backend_uri: String,
15 pub store_dir: PathBuf,
16}
17
18pub fn oauth_store_path() -> PathBuf {
19 oauth_store_root()
20}
21
22pub fn remember_oauth_backend(
23 backend_uri: &str,
24 backend_name: &str,
25 store_dir: PathBuf,
26) -> Result<(), Error> {
27 remember_oauth_store(backend_uri, backend_name, &store_dir).map_err(Error::Io)
28}
29
30pub fn list_oauth_credentials() -> Result<Vec<FfiOAuthStoreEntry>, Error> {
31 list_oauth_stores()
32 .map(|entries| entries.into_iter().map(Into::into).collect())
33 .map_err(Error::Io)
34}
35
36pub fn clear_oauth_credentials(target: Option<&str>) -> Result<Vec<PathBuf>, Error> {
37 clear_oauth_store(target).map_err(Error::Io)
38}
39
40impl From<OAuthStoreIndexEntry> for FfiOAuthStoreEntry {
41 fn from(value: OAuthStoreIndexEntry) -> Self {
42 Self {
43 backend_name: value.name,
44 backend_uri: value.uri,
45 store_dir: value.store_dir.into(),
46 }
47 }
48}