UNPKG

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
"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