@dwn-protocol/id-sdk
Version:
SDK for accessing the features and capabilities
122 lines (97 loc) • 2.73 kB
text/typescript
import type { IDAgent } from '../agent/index.js';
export class Services {
private agent: IDAgent;
private connectedDid: string;
constructor(options: { agent: IDAgent, connectedDid: string }) {
this.agent = options.agent;
this.connectedDid = options.connectedDid;
}
async get(payload) {
try {
const headers = new Headers();
for (let header of payload.headers) {
headers.append(header.name, header.value);
}
const response = await fetch(payload.uri, {
method : 'GET',
mode : 'cors',
cache : 'no-cache',
headers : headers,
});
if (!response.ok) {
return { status: response.status };
}
const json = await response.json();
return json;
} catch (e) {
return { status: 400, error: e };
}
}
async post(payload) {
try {
const headers = new Headers();
for (let header of payload.headers) {
headers.append(header.name, header.value);
}
const response = await fetch(payload.uri, {
method : 'POST',
mode : 'cors',
cache : 'no-cache',
headers : headers,
body : JSON.stringify(payload.body),
});
if (!response.ok) {
return { status: response.status };
}
const json = await response.json();
return json;
} catch (e) {
return { status: 400, error: e };
}
}
async put(payload) {
try {
const headers = new Headers();
for (let header of payload.headers) {
headers.append(header.name, header.value);
}
const response = await fetch(payload.uri, {
method : 'PUT',
mode : 'cors',
cache : 'no-cache',
headers : headers,
body : JSON.stringify(payload.body),
});
if (!response.ok) {
return { status: response.status };
}
const json = await response.json();
return json;
} catch (e) {
return { status: 400 };
}
}
async proxy(payload) {
try {
const headers = new Headers();
for (let header of payload.headers) {
headers.append(header.name, header.value);
}
const proxyRequest: any = {
method : payload.method,
mode : 'cors',
cache : 'no-cache',
headers : headers,
};
payload?.body ? proxyRequest.body = JSON.stringify(payload) : undefined;
const response = await fetch(payload.proxy, proxyRequest);
if (!response.ok) {
return { status: response.status, payload };
}
const json = await response.json();
return json;
} catch (e) {
return { status: 400, error: e };
}
}
}