nft-folder-blockchain-connector-besu
Version:
A NestJS-based blockchain connector that communicates with specific smart contracts from the NFT Folder project.
107 lines • 5.14 kB
JavaScript
"use strict";
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 __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SegmentService = void 0;
const common_1 = require("@nestjs/common");
const blockchain_service_1 = require("../shared/blockchain.service");
const configuration_service_1 = require("../configuration/configuration.service");
const segment_read_dto_1 = require("./dto/segment.read.dto");
const token_information_dto_1 = require("../token/dto/token.information.dto");
let SegmentService = class SegmentService {
blockchainService;
configurationService;
containerInstance;
segmentAbi;
constructor(blockchainService, configurationService) {
this.blockchainService = blockchainService;
this.configurationService = configurationService;
this.containerInstance = this.blockchainService.getContractInstance(this.configurationService.getBlockchainConfiguration().containerAddress, this.configurationService.getBlockchainConfiguration().containerAbi);
this.segmentAbi = this.configurationService.getBlockchainConfiguration().segmentAbi;
}
async createSegment(name) {
try {
return await this.containerInstance.createSegment(name);
}
catch (err) {
this.blockchainService.handleError(err, this.containerInstance.target.toString());
return Promise.reject(err);
}
}
async fetchAllSegments() {
try {
const segmentReadDtos = [];
const segmentAddresses = await this.containerInstance.getAllSegments();
for (const segmentAddress of segmentAddresses) {
const segmentReadDto = await this.fetchSegmentData(segmentAddress);
segmentReadDtos.push(segmentReadDto);
}
return segmentReadDtos;
}
catch (err) {
this.blockchainService.handleError(err, this.containerInstance.target.toString());
return Promise.reject(err);
}
}
async fetchSegment(index) {
try {
const segmentAddress = await this.containerInstance.getSegment(index);
return await this.fetchSegmentData(segmentAddress);
}
catch (err) {
this.blockchainService.handleError(err, this.containerInstance.target.toString());
return Promise.reject(err);
}
}
async fetchSegmentData(segmentAddress) {
try {
const segmentName = await this.getSegmentInstance(segmentAddress).getName();
const tokenInformation = await this.getSegmentInstance(segmentAddress).getAllTokenInformation();
const tokenInformationDto = tokenInformation.map(([tokenAddress, tokenId]) => new token_information_dto_1.TokenInformationDto(tokenAddress, Number(tokenId).toString()));
return new segment_read_dto_1.SegmentReadDto(segmentAddress, segmentName, tokenInformationDto);
}
catch (err) {
this.blockchainService.handleError(err, segmentAddress);
return Promise.reject(err);
}
}
async addToken(segmentIndex, tokenAddress, tokenId) {
let segmentAddress;
try {
segmentAddress = await this.containerInstance.getSegment(segmentIndex);
return await this.getSegmentInstance(segmentAddress).addToken(tokenAddress, tokenId);
}
catch (err) {
this.blockchainService.handleError(err, segmentAddress);
return Promise.reject(err);
}
}
async removeToken(segmentIndex, tokenAddress, tokenId) {
let segmentAddress;
try {
segmentAddress = await this.containerInstance.getSegment(segmentIndex);
return await this.getSegmentInstance(segmentAddress).removeToken(tokenAddress, tokenId);
}
catch (err) {
this.blockchainService.handleError(err, segmentAddress);
return Promise.reject(err);
}
}
getSegmentInstance(segmentAddress) {
return this.blockchainService.getContractInstance(segmentAddress, this.segmentAbi);
}
};
exports.SegmentService = SegmentService;
exports.SegmentService = SegmentService = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [blockchain_service_1.BlockchainService,
configuration_service_1.ConfigurationService])
], SegmentService);
//# sourceMappingURL=segment.service.js.map