Dealing with lack of claims as a success #64

Merged
bones7242 merged 2 commits from no-claims-found into master 2017-07-01 00:47:19 +02:00
5 changed files with 28 additions and 13 deletions
Showing only changes of commit 6dea616d44 - Show all commits

View file

@ -111,6 +111,11 @@ module.exports = {
// 1. get the top free, public claims // 1. get the top free, public claims
getAllFreePublicClaims(claimName) getAllFreePublicClaims(claimName)
.then(freePublicClaimList => { .then(freePublicClaimList => {
// check to make sure some claims were found
if (!freePublicClaimList) {
resolve(null);
return;
}
const name = freePublicClaimList[0].name; const name = freePublicClaimList[0].name;
const claimId = freePublicClaimList[0].claim_id; const claimId = freePublicClaimList[0].claim_id;
const uri = `${name}#${claimId}`; const uri = `${name}#${claimId}`;
@ -119,7 +124,7 @@ module.exports = {
db.File db.File
.findOne({ where: { name, claimId } }) .findOne({ where: { name, claimId } })
.then(claim => { .then(claim => {
// 3. if a matching claim_id is found locally, serve it // 3. if a matching record is found locally, serve it
if (claim) { if (claim) {
// serve the file // serve the file
resolve(claim.dataValues); resolve(claim.dataValues);
@ -164,7 +169,7 @@ module.exports = {
// check to make sure the result is a claim // check to make sure the result is a claim
if (!result.claim) { if (!result.claim) {
logger.debug('resolve did not return a claim'); logger.debug('resolve did not return a claim');
reject('NO_FREE_PUBLIC_CLAIMS'); // note: should be a resolve not a reject! but I need routes to handle that properly. right now it is handled as an error. resolve(null);
return; return;
} }
// 4. check to see if the claim is free & public // 4. check to see if the claim is free & public
@ -172,7 +177,7 @@ module.exports = {
// 5. get claim and serve // 5. get claim and serve
getClaimAndHandleResponse(uri, result.claim.height, resolve, reject); getClaimAndHandleResponse(uri, result.claim.height, resolve, reject);
} else { } else {
reject('NO_FREE_PUBLIC_CLAIMS'); // note: should be a resolve not a reject! but I need routes to handle that properly. right now it is handled as an error. reject(null);
} }
}) })
.catch(error => { .catch(error => {

View file

@ -34,20 +34,19 @@ module.exports = claimName => {
lbryApi lbryApi
.getClaimsList(claimName) .getClaimsList(claimName)
.then(({ claims }) => { .then(({ claims }) => {
const claimsList = claims; logger.debug(`Number of claims: ${claims.length}`);
logger.debug(`Number of claims: ${claimsList.length}`);
// return early if no claims were found // return early if no claims were found
if (claimsList.length === 0) { if (claims.length === 0) {
reject('NO_CLAIMS'); // note: should be a resolve not a reject! but I need routes to handle that properly. right now it is handled as an error.
logger.debug('exiting due to lack of claims'); logger.debug('exiting due to lack of claims');
resolve(null);
return; return;
} }
// filter the claims to return only free, public claims // filter the claims to return only free, public claims
const freePublicClaims = filterForFreePublicClaims(claimsList); const freePublicClaims = filterForFreePublicClaims(claims);
// return early if no free, public claims were found // return early if no free, public claims were found
if (!freePublicClaims || freePublicClaims.length === 0) { if (!freePublicClaims || freePublicClaims.length === 0) {
reject('NO_FREE_PUBLIC_CLAIMS'); // note: should be a resolve not a reject! but I need routes to handle that properly. right now it is handled as an error.
logger.debug('exiting due to lack of free or public claims'); logger.debug('exiting due to lack of free or public claims');
resolve(null);
return; return;
} }
// order the claims // order the claims

View file

@ -4,10 +4,7 @@ const { postToStats } = require('../../controllers/statsController.js');
module.exports = { module.exports = {
handleRequestError (action, originalUrl, ip, error, res) { handleRequestError (action, originalUrl, ip, error, res) {
logger.error('Request Error >>', error); logger.error('Request Error >>', error);
if (error === 'NO_CLAIMS' || error === 'NO_FREE_PUBLIC_CLAIMS') { if (error.response) {
postToStats(action, originalUrl, ip, 'success');
res.status(307).render('noClaims');
} else if (error.response) {
postToStats(action, originalUrl, ip, error.response.data.error.messsage); postToStats(action, originalUrl, ip, error.response.data.error.messsage);
res.status(error.response.status).send(error.response.data.error.message); res.status(error.response.status).send(error.response.data.error.message);
} else if (error.code === 'ECONNREFUSED') { } else if (error.code === 'ECONNREFUSED') {

View file

@ -47,6 +47,11 @@ module.exports = (app) => {
serveController serveController
.getClaimByClaimId(params.name, params.claim_id) .getClaimByClaimId(params.name, params.claim_id)
.then(fileInfo => { .then(fileInfo => {
// check to make sure a file was found
if (!fileInfo) {
res.status(307).render('noClaims');
return;
}
postToStats('serve', originalUrl, ip, 'success'); postToStats('serve', originalUrl, ip, 'success');
serveFile(fileInfo, res); serveFile(fileInfo, res);
}) })
@ -61,6 +66,11 @@ module.exports = (app) => {
serveController serveController
.getClaimByName(params.name) .getClaimByName(params.name)
.then(fileInfo => { .then(fileInfo => {
// check to make sure a file was found
if (!fileInfo) {
res.status(307).render('noClaims');
return;
}
postToStats('serve', originalUrl, ip, 'success'); postToStats('serve', originalUrl, ip, 'success');
serveFile(fileInfo, res); serveFile(fileInfo, res);
}) })

View file

@ -44,6 +44,10 @@ module.exports = (app) => {
// get and render the content // get and render the content
getAllClaims(params.name) getAllClaims(params.name)
.then(orderedFreePublicClaims => { .then(orderedFreePublicClaims => {
if (!orderedFreePublicClaims) {
res.status(307).render('noClaims');
return;
}
postToStats('show', originalUrl, ip, 'success'); postToStats('show', originalUrl, ip, 'success');
res.status(200).render('allClaims', { claims: orderedFreePublicClaims }); res.status(200).render('allClaims', { claims: orderedFreePublicClaims });
}) })