Finish Persims consolidation

This commit is contained in:
matcha committed 2026-10-04 02:57:30 +00:00
1 parent cf19d79bbd
commit 32f978b563
1 file changed
+48
+48
View File
@@ -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});
}