File size: 1,578 Bytes
1f21206 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | import { api } from './client'
import type { AdapterFileConfig } from '../types/adapter'
export type DingtalkRegistrationBegin = {
deviceCode: string
userCode?: string
verificationUri?: string
verificationUriComplete: string
expiresInSeconds: number
intervalSeconds: number
qrDataUrl?: string
}
export type DingtalkRegistrationPoll = {
status: 'WAITING' | 'SUCCESS' | 'FAIL' | 'EXPIRED' | 'UNKNOWN'
failReason?: string
config?: AdapterFileConfig
}
export const adaptersApi = {
getConfig() {
return api.get<AdapterFileConfig>('/api/adapters')
},
updateConfig(patch: Partial<AdapterFileConfig>) {
return api.put<AdapterFileConfig>('/api/adapters', patch)
},
startWechatLogin() {
return api.post<{ qrcodeUrl?: string; message: string; sessionKey: string }>('/api/adapters/wechat/login/start', {})
},
pollWechatLogin(sessionKey: string) {
return api.post<
| AdapterFileConfig
| { connected: false; status: string; message: string }
>('/api/adapters/wechat/login/poll', { sessionKey }, { timeout: 45_000 })
},
unbindWechat() {
return api.post<AdapterFileConfig>('/api/adapters/wechat/unbind', {})
},
unbindDingtalk() {
return api.post<AdapterFileConfig>('/api/adapters/dingtalk/unbind', {})
},
beginDingtalkRegistration() {
return api.post<DingtalkRegistrationBegin>('/api/adapters/dingtalk/registration/begin', {})
},
pollDingtalkRegistration(deviceCode: string) {
return api.post<DingtalkRegistrationPoll>('/api/adapters/dingtalk/registration/poll', { deviceCode })
},
}
|