@kwikpik/kwikpik.js
Version:
Javascript/Typescript convenience library that interfaces with the Kwik Pik business API
97 lines (96 loc) • 4.46 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Requests = void 0;
var assert_1 = __importDefault(require("assert"));
var https_1 = require("../https");
var lodash_1 = require("lodash");
var requests_1 = require("../schemas/requests");
var config_json_1 = __importDefault(require("../config.json"));
var Requests = /** @class */ (function () {
function Requests(apiKey, environment) {
if (environment === void 0) { environment = "prod"; }
this.agent = new https_1.KwikPikHTTPsAgent(apiKey, environment);
}
/**
*
* @param apiKey Your Kwik-Pik API key
* @param environment dev or prod (development or production)
* @description Intializes a request object
* @returns
*/
Requests.initialize = function (apiKey, environment) {
return new Requests(apiKey, environment);
};
/**
*
* @param requests A single request
* @returns
* @description Initializes new dispatch requests but does not broadcast them.
*/
Requests.prototype.createDispatchRequest = function (request) {
var error = requests_1.initRequestSchema.validate(request).error;
if (!(0, lodash_1.isNil)(error)) {
var messages = error.details.map(function (e) { return e.message; });
throw new Error(JSON.stringify(messages, undefined, 2));
}
if ((0, lodash_1.isNil)(request.quantity))
(0, lodash_1.assign)(request, { quantity: 1 });
if ((0, lodash_1.isNil)(request.description))
(0, lodash_1.assign)(request, { description: "no description" });
if ((0, lodash_1.isNil)(request.image))
(0, lodash_1.assign)(request, { image: "" });
return this.agent.createKwikPikSendableInstance(config_json_1.default.paths.requests.initialize_request, "post", request);
};
/**
*
* @param requestId ID of initialized request
* @returns
* @description Confirms initialized dispatch requests after user has paid from their wallet. Throws an error for a request that wasn't paid for
*/
Requests.prototype.confirmDispatchRequest = function (requestId) {
assert_1.default.ok(typeof requestId === "string", "Require string but found ".concat(typeof requestId));
return this.agent.createKwikPikSendableInstance(config_json_1.default.paths.requests.confirm_request, "post", { requestId: requestId });
};
/**
*
* @param requestId The request ID
* @description Retrieves a single request using its ID
* @returns
*/
Requests.prototype.getSingleRequest = function (requestId) {
assert_1.default.ok(typeof requestId === "string", "'requestId' must be a string");
var path = (0, lodash_1.replace)(config_json_1.default.paths.requests.get_single_request, ":id", requestId);
return this.agent.createKwikPikCallableInstance(path, "get");
};
/**
*
* @param requestId The ID of the request to delete
* @description Deletes a request. Throws an error if the utilizer is attempting to delete a request they did not create or a request that has already been confirmed.
* @returns
*/
Requests.prototype.deleteRequest = function (requestId) {
assert_1.default.ok(typeof requestId === "string", "'requestId' must be a string");
return this.agent.createKwikPikSendableInstance(config_json_1.default.paths.requests.delete_single_request, "delete", { requestId: requestId });
};
/**
*
* @param requestId ID of the request you want to update
* @param body Parameters for the request
* @description Update a request. Must be an unconfirmed request
* @returns
*/
Requests.prototype.updateRequest = function (requestId, body) {
var error = requests_1.updateRequestSchema.validate(body).error;
if (error) {
var messages = error.details.map(function (e) { return e.message; });
throw new Error(JSON.stringify(messages, undefined, 2));
}
var path = (0, lodash_1.replace)(config_json_1.default.paths.requests.update_single_request, ":id", requestId);
return this.agent.createKwikPikSendableInstance(path, "patch", body);
};
return Requests;
}());
exports.Requests = Requests;