@protokol/nft-exchange-api
Version:
REST API For Exchange NFT Functionality
91 lines • 4.18 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TradesController = void 0;
const core_kernel_1 = require("@arkecosystem/core-kernel");
const boom_1 = __importDefault(require("@hapi/boom"));
const nft_exchange_crypto_1 = require("@protokol/nft-exchange-crypto");
const trades_1 = require("../resources/trades");
const trades_show_1 = require("../resources/trades-show");
const base_controller_1 = require("./base-controller");
let TradesController = class TradesController extends base_controller_1.BaseController {
async index(request) {
return this.paginateWithBlock(this.buildTradeCriteria(), this.getListingOrder(request), this.getListingPage(request), request.query.transform, trades_1.TradeResource);
}
async show(request) {
const transaction = await this.transactionHistoryService.findOneByCriteria(this.buildTradeCriteria({
...request.query,
id: request.params.id,
}));
if (!transaction) {
return boom_1.default.notFound("Trade was not found!");
}
const { nftAcceptTrade } = transaction.asset;
const criteria = [];
criteria.push({
typeGroup: nft_exchange_crypto_1.Enums.NFTExchangeTransactionsTypeGroup,
type: nft_exchange_crypto_1.Enums.NFTTransactionTypes.NFTAuction,
id: nftAcceptTrade.auctionId,
});
criteria.push({
typeGroup: nft_exchange_crypto_1.Enums.NFTExchangeTransactionsTypeGroup,
type: nft_exchange_crypto_1.Enums.NFTTransactionTypes.NFTBid,
id: nftAcceptTrade.bidId,
});
const transactions = await this.transactionHistoryService.findManyByCriteria(criteria);
const result = {
transaction: transaction,
auction: transactions.find((tx) => tx.id === nftAcceptTrade.auctionId),
bid: transactions.find((tx) => tx.id === nftAcceptTrade.bidId),
};
return this.respondWithBlockResource(transaction, request.query.transform, trades_show_1.TradeDetailsResource, result);
}
async search(request) {
const { senderPublicKey, auctionId, bidId } = request.payload;
const criteria = [];
if (senderPublicKey) {
criteria.push(this.buildTradeCriteria({
senderPublicKey,
}));
}
if (auctionId) {
criteria.push(this.buildTradeCriteria({
asset: {
nftAcceptTrade: {
auctionId,
},
},
}));
}
if (bidId) {
criteria.push(this.buildTradeCriteria({
asset: {
nftAcceptTrade: {
bidId,
},
},
}));
}
return this.paginateWithBlock(criteria, this.getListingOrder(request), this.getListingPage(request), request.query.transform, trades_1.TradeResource);
}
buildTradeCriteria(otherCriteria) {
return {
typeGroup: nft_exchange_crypto_1.Enums.NFTExchangeTransactionsTypeGroup,
type: nft_exchange_crypto_1.Enums.NFTTransactionTypes.NFTAcceptTrade,
...otherCriteria,
};
}
};
TradesController = __decorate([
core_kernel_1.Container.injectable()
], TradesController);
exports.TradesController = TradesController;
//# sourceMappingURL=trades.js.map