fly-machines-sdk
Version:
API that provides ability to manage applications on Fly.io
56 lines (55 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Requests = void 0;
const core_1 = require("@urql/core");
class Requests {
constructor(apiKey) {
this.apiKey = apiKey;
this.FLY_API_HOST = 'https://api.fly.io/graphql';
this.FLY_PLAIN_API_HOST = 'https://api.machines.dev';
this.client = new core_1.Client({
url: this.FLY_API_HOST,
exchanges: [core_1.cacheExchange, core_1.fetchExchange],
fetchOptions: () => {
return {
headers: {
'Authorization': `Bearer ${this.apiKey}`,
},
};
},
});
}
async query(body, variables) {
const result = await this.client.query(body, variables).toPromise();
return result.data;
}
async plainQuery(path, body, returnAsText) {
const result = await fetch(`${this.FLY_PLAIN_API_HOST}${path}`, {
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
method: 'POST',
});
return {
status: result.status,
result: returnAsText ? await result.text() : await result.json(),
};
}
async plainDeleteQuery(path, body, returnAsText) {
const result = await fetch(`${this.FLY_PLAIN_API_HOST}${path}`, {
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
method: 'DELETE',
});
return {
status: result.status,
result: returnAsText ? await result.text() : await result.json(),
};
}
}
exports.Requests = Requests;