diff --git a/old/store.js b/old/store.js new file mode 100644 index 0000000..38e898f --- /dev/null +++ b/old/store.js @@ -0,0 +1,48 @@ +const SITE='https://teahub.xyz/tea/site'; +function endpoint(path){ + if(path==='session')return SITE+'/session'; + if(path==='repositories')return SITE+'/repositories'; + return SITE+'/chat/persimmons/'+path; +} + +async function request(path,body){ + const options={credentials:'include',cache:'no-store',headers:{Accept:'application/json'}}; + if(body!==undefined){ + options.method='POST'; + options.headers['Content-Type']='text/plain;charset=UTF-8'; + options.body=JSON.stringify(body); + } + const response=await fetch(endpoint(path),options); + let data={}; + try{data=await response.json()}catch{} + if(!response.ok){ + const error=new Error(data.error||('Request failed ('+response.status+')')); + error.status=response.status; + throw error; + } + return data; +} + +export const session=()=>request('session'); +export const repositories=()=>request('repositories'); +export const listUser=()=>request('list'); +export const listRepository=repo=>request('list?repository='+encodeURIComponent(repo)); + +export function createConnection(metadata,value){ + return request('create',{...metadata,credential:value}); +} +export function rotateConnection(item,value){ + const vault={vault_kind:item.vault_kind||'user'}; + if(vault.vault_kind==='repository')vault.repository=item.repository; + return request('rotate',{id:item.id,credential:value,...vault}); +} +export function revokeConnection(item){ + const vault={vault_kind:item.vault_kind||'user'}; + if(vault.vault_kind==='repository')vault.repository=item.repository; + return request('revoke',{id:item.id,...vault}); +} +export function deleteConnection(item){ + const vault={vault_kind:item.vault_kind||'user'}; + if(vault.vault_kind==='repository')vault.repository=item.repository; + return request('delete',{id:item.id,...vault}); +}