Skip to content

Commit

Permalink
chaincode metadata changes added
Browse files Browse the repository at this point in the history
Signed-off-by: SunnyAjin <ajin847@gmail.com>
  • Loading branch information
SunnyAjin committed Feb 15, 2023
1 parent c328f78 commit 302da84
Showing 3 changed files with 51 additions and 3 deletions.
27 changes: 24 additions & 3 deletions app/platform/fabric/Proxy.ts
Original file line number Diff line number Diff line change
@@ -139,11 +139,11 @@ export class Proxy {
}
}
// Sometime 'peers_by_org' property is not included in discover result
if(typeof node.ledger_height_low === 'undefined')
if (typeof node.ledger_height_low === 'undefined')
node.ledger_height_low = '-';
if(typeof node.ledger_height_high === 'undefined')
if (typeof node.ledger_height_high === 'undefined')
node.ledger_height_high = '-';
if(typeof node.ledger_height_unsigned === 'undefined')
if (typeof node.ledger_height_unsigned === 'undefined')
node.ledger_height_unsigned = '-';
peers.push(node);
} else if (node.peer_type === 'ORDERER') {
@@ -391,4 +391,25 @@ export class Proxy {
);
}
}

/**
*
* @param {*} contract_name
* @returns
* @memberof Proxy
*/
async getContractMetadata(network_id, contract_name) {
const client = this.platform.getClient(network_id);
const channel_name = Object.keys(client.fabricGateway.config.channels)[0];
let metadata;
try {
metadata = await client.fabricGateway.queryContractMetadata(channel_name, contract_name);
} catch (e) {
logger.debug('getContractMetadata >> ', e);
} if (metadata) {
return metadata;
}
logger.error('response_payloads is null');
return 'response_payloads is null';
}
}
11 changes: 11 additions & 0 deletions app/platform/fabric/gateway/FabricGateway.ts
Original file line number Diff line number Diff line change
@@ -488,4 +488,15 @@ export class FabricGateway {

return null;
}

async queryContractMetadata(channel_name, contract_name) {
const network = await this.gateway.getNetwork(channel_name);
// Get the contract from the network.       
const contract = network.getContract(contract_name);
// Get the contract metadata from the network.
const result = await contract.evaluateTransaction('org.hyperledger.fabric:GetMetadata');
const metadata = JSON.parse(result.toString('utf8'));
logger.debug('queryContractMetadata', metadata)
return metadata;
}
}
16 changes: 16 additions & 0 deletions app/rest/platformroutes.ts
Original file line number Diff line number Diff line change
@@ -180,4 +180,20 @@ export async function platformroutes(
});
});
});

/**
* Return channel metadata
* GET /metadata
* curl -i 'http://<host>:<port>/metadata/<chaincode>'
*/
router.get('/metadata/:chaincode', (req, res) => {
const chaincode = req.params.chaincode;
if (chaincode) {
proxy.getContractMetadata(req.network, chaincode).then((data: any) => {
res.send({ status: 200, data: data });
});
} else {
return requtil.invalidRequest(req, res);
}
});
} // End platformroutes()

0 comments on commit 302da84

Please sign in to comment.