const logger = require('winston'); const { handleErrorResponse } = require('../../../utils/errorHandlers.js'); const { getFileListFileByOutpoint } = require('server/lbrynet'); const chainquery = require('chainquery').default; /* route to see if asset is available locally */ const fileAvailability = ({ ip, originalUrl, params }, res) => { const name = params.name; const claimId = params.claimId; logger.verbose(`fileAvailability params: name:${name} claimId:${claimId}`); // TODO: we probably eventually want to check the publishCache for the claimId too, // and shop the outpoint to file_list. return chainquery.claim.queries .resolveClaim(name, claimId) .then(result => { return `${result.dataValues.transaction_hash_id}:${result.dataValues.vout}`; }) .then(outpoint => { logger.debug(`fileAvailability: outpoint: ${outpoint}`); return getFileListFileByOutpoint(outpoint); }) .then(result => { if (result && result[0]) { return res.status(200).json({ success: true, data: true }); } else { res.status(200).json({ success: true, data: false }); } }) .catch(error => { handleErrorResponse(originalUrl, ip, error, res); }); }; module.exports = fileAvailability;