gray-market-js
Version:
Utility library for the Gray Market rental marketplace
48 lines (40 loc) • 1.35 kB
JavaScript
const URL_PREFIX = "/rentallistings";
class RentalListingsClient {
constructor(axiosInstance) {
this.axiosInstance = axiosInstance;
}
create(listing) {
return this.axiosInstance.post(`${URL_PREFIX}/create`, listing);
}
getAllByWallet(address) {
return this.axiosInstance.get(`${URL_PREFIX}/allbywallet/${address}`);
}
getDAOByID(id) {
return this.axiosInstance.get(`${URL_PREFIX}/detaileddao/${id}`);
}
getOnchainByID(id) {
return this.axiosInstance.get(`${URL_PREFIX}/detailedonchain/${id}`);
}
getAllForAsset(assetID) {
return this.axiosInstance.get(`${URL_PREFIX}/getallforasset/${assetID}`)
}
async fulfillDAO(id, assetName, length, signer) {
const validUntil = Math.round(Date.now() / 1000) + 120;
const message = `Confirm rental of ${assetName}\n` +
"\n" +
"This message is read-only and will not trigger any blockchain transactions.\n" +
"\n" +
`Listing ID: ${id}\n` +
`Valid until: ${validUntil}`;
const signature = await signer.signMessage(message);
return this.axiosInstance.post(`${URL_PREFIX}/fulfilldao`, {
message,
signer: await signer.getAddress(),
signature,
listingID: id,
validUntil,
length
});
}
}
module.exports = RentalListingsClient;