- 添加 GeminiOAuthCapabilities 类型定义 - 添加 getCapabilities API 函数 - useGeminiOAuth composable 导出 getCapabilities 方法
59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
/**
|
|
* Admin Gemini API endpoints
|
|
* Handles Gemini OAuth flows for administrators
|
|
*/
|
|
|
|
import { apiClient } from '../client'
|
|
|
|
export interface GeminiAuthUrlResponse {
|
|
auth_url: string
|
|
session_id: string
|
|
state: string
|
|
}
|
|
|
|
export interface GeminiOAuthCapabilities {
|
|
ai_studio_oauth_enabled: boolean
|
|
required_redirect_uris: string[]
|
|
}
|
|
|
|
export interface GeminiAuthUrlRequest {
|
|
proxy_id?: number
|
|
project_id?: string
|
|
oauth_type?: 'code_assist' | 'ai_studio'
|
|
}
|
|
|
|
export interface GeminiExchangeCodeRequest {
|
|
session_id: string
|
|
state: string
|
|
code: string
|
|
proxy_id?: number
|
|
oauth_type?: 'code_assist' | 'ai_studio'
|
|
}
|
|
|
|
export type GeminiTokenInfo = Record<string, unknown>
|
|
|
|
export async function generateAuthUrl(
|
|
payload: GeminiAuthUrlRequest
|
|
): Promise<GeminiAuthUrlResponse> {
|
|
const { data } = await apiClient.post<GeminiAuthUrlResponse>(
|
|
'/admin/gemini/oauth/auth-url',
|
|
payload
|
|
)
|
|
return data
|
|
}
|
|
|
|
export async function exchangeCode(payload: GeminiExchangeCodeRequest): Promise<GeminiTokenInfo> {
|
|
const { data } = await apiClient.post<GeminiTokenInfo>(
|
|
'/admin/gemini/oauth/exchange-code',
|
|
payload
|
|
)
|
|
return data
|
|
}
|
|
|
|
export async function getCapabilities(): Promise<GeminiOAuthCapabilities> {
|
|
const { data } = await apiClient.get<GeminiOAuthCapabilities>('/admin/gemini/oauth/capabilities')
|
|
return data
|
|
}
|
|
|
|
export default { generateAuthUrl, exchangeCode, getCapabilities }
|