@spare-technologies/spare-typescript-sdk
Version:
Spare type script sdk
177 lines • 6.88 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SpPaymentClient = void 0;
const tslib_1 = require("tslib");
const SpEndpoints_1 = require("./SpEndpoints");
const SpareSdkResponse_1 = require("../Models/Response/SpareSdkResponse");
require("../../Helpers/Extensions/SerilizableExtension");
const SpCreateDomesticPaymentResponse_1 = require("../Models/Payment/Domestic/SpCreateDomesticPaymentResponse");
const typescript_json_serializer_1 = require("typescript-json-serializer");
const SpClientSdkError_1 = require("../Errors/SpClientSdkError");
const axios = require('axios').default;
class SpPaymentClient {
constructor(_clientOptions) {
this._clientOptions = _clientOptions;
this.serializer = new typescript_json_serializer_1.JsonSerializer({
errorCallback: typescript_json_serializer_1.logError,
nullishPolicy: {
undefined: 'remove',
null: 'remove'
}
});
if (_clientOptions == null) {
throw new SpClientSdkError_1.SpClientSdkError("Client configuration is required");
}
if (_clientOptions.baseUrl == 'undefined' || _clientOptions.baseUrl == null) {
throw new SpClientSdkError_1.SpClientSdkError("Base URL is required");
}
if (_clientOptions.apiKey == 'undefined' || _clientOptions.apiKey == null) {
throw new SpClientSdkError_1.SpClientSdkError("App key is required");
}
if (_clientOptions.appId == 'undefined' || _clientOptions.appId == null) {
throw new SpClientSdkError_1.SpClientSdkError("App key is required");
}
this.headers = {
'app-id': `${this._clientOptions.appId}`,
'x-api-key': `${this._clientOptions.apiKey}`,
'Content-Type': 'application/json',
};
}
GetUrl(endpoint) {
return `${this._clientOptions.baseUrl}${endpoint.Value}`;
}
static GetBody(o) {
return o.toJson();
}
/***
* Create domestic payment
* @param payment
* @param signature
* @constructor
*/
CreateDomesticPayment(payment, signature) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const Headers = {
'app-id': `${this._clientOptions.appId}`,
'x-api-key': `${this._clientOptions.apiKey}`,
'Content-Type': 'application/json',
'x-signature': signature
};
try {
const response = yield axios({
method: 'post',
url: this.GetUrl(SpEndpoints_1.SpEndpoints.CreateDomesticPayment),
headers: Headers,
data: SpPaymentClient.GetBody(payment),
proxy: this.buildProxy()
});
const responseModel = (this.serializer
.deserialize(response.data, SpareSdkResponse_1.SpareSdkResponse));
return new SpCreateDomesticPaymentResponse_1.SpCreateDomesticPaymentResponse(responseModel.data, response.headers['x-signature']);
}
catch (e) {
// @ts-ignore
if (e.response) {
// @ts-ignore
return Promise.reject(JSON.stringify(e.response.data));
}
// @ts-ignore
return Promise.reject(e.toString());
}
});
}
/***
* Get domestic payment
* @param id
* @constructor
*/
GetDomesticPayment(id) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
try {
const response = yield axios({
method: 'get',
url: this.GetUrl(SpEndpoints_1.SpEndpoints.GetDomesticPayment),
params: {
id: id
},
proxy: this.buildProxy(),
headers: this.headers
});
if (response.status != 200) {
return Promise.reject(new SpClientSdkError_1.SpClientSdkError(JSON.stringify(response.data.toString())));
}
return (this.serializer
.deserialize(response.data, SpareSdkResponse_1.SpareSdkResponse));
}
catch (e) {
// @ts-ignore
if (e.response) {
// @ts-ignore
return Promise.reject(JSON.stringify(e.response.data));
}
// @ts-ignore
return Promise.reject(e.toString());
}
});
}
/***
* List domestic payment
* @param start
* @param perPage
* @constructor
*/
ListDomesticPayments(start = 0, perPage = 100) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (perPage <= 0) {
perPage = 100;
}
try {
const response = yield axios({
method: 'get',
url: this.GetUrl(SpEndpoints_1.SpEndpoints.ListDomesticPayments),
params: {
start: start,
perPage: perPage
},
proxy: this.buildProxy(),
headers: this.headers
});
if (response.status != 200) {
return Promise.reject(new SpClientSdkError_1.SpClientSdkError(JSON.stringify(response.data.toString())));
}
return (this.serializer
.deserialize(response.data, SpareSdkResponse_1.SpareSdkResponse));
}
catch (e) {
// @ts-ignore
if (e.response) {
// @ts-ignore
return Promise.reject(JSON.stringify(e.response.data));
}
// @ts-ignore
return Promise.reject(e.toString());
}
});
}
/**
* Build proxy object
* @private
*/
buildProxy() {
var _a;
if (((_a = this._clientOptions.proxy) === null || _a === void 0 ? void 0 : _a.host) != null) {
let credentials = (this._clientOptions.proxy.username != null && this._clientOptions.proxy.password != null) ? {
username: this._clientOptions.proxy.username,
password: this._clientOptions.proxy.password
} : null;
return {
host: this._clientOptions.proxy.host,
port: this._clientOptions.proxy.port,
auth: credentials
};
}
return null;
}
}
exports.SpPaymentClient = SpPaymentClient;
//# sourceMappingURL=SpPaymentClient.js.map