diff options
Diffstat (limited to 'api/routes/getIPFSHash/index.js')
-rw-r--r-- | api/routes/getIPFSHash/index.js | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/api/routes/getIPFSHash/index.js b/api/routes/getIPFSHash/index.js new file mode 100644 index 0000000..d1bdc5f --- /dev/null +++ b/api/routes/getIPFSHash/index.js @@ -0,0 +1,76 @@ +const { spawn } = require('child_process'); +const fs = require("fs"); +const config = require("../../config"); +const akLogMessage = require("../../lib/akLogMessage"); +akLogMessage('lol'); + +/* + * Returns a cached ipfs_hash + * + * Returns: + * - JSON object + * + */ +function fetchIPFShash(ipfs_hash, res) +{ + regex= /Qm[A-Za-z0-9]{44}/; + if (regex.test(ipfs_hash)){ + const path = `${config.ipfsArtifactsDir}/${ipfs_hash}`; + console.log(path) + try + { + if(fs.existsSync(path)) + { + res.writeHead(200); //, {'Content-Type': 'application/json'}); + // res.end(JSON.stringify(JSON.parse(fs.readFileSync(path)))); + res.end(fs.readFileSync(path)); + } + else + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"invalid or unreachable"})); + } + } + catch (error) + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:error.message})); + } + } + else + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"Invalid data: regexp failed to pass"})); + } +}; + +function getIPFSHash(req, res) +{ + var args = req.url.split("/"); + if ( (args[2] === 'ipfs_hash'||args[2] === 'ipfs') && args[3] && typeof args[3] === "string" && args[3].length === 46 ){ + regex= /Qm[A-Za-z0-9]{44}/; + if (regex.test(args[3])) + { + if (args[3] === "QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH" ) + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"Genesis block"})); + } + else + { + fetchIPFShash(args[3],res); + } + } + else + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"Invalid data: regexp failed to pass"})); + } + } + else + { + res.writeHead(404, {'Content-Type': 'application/json'}); + res.end(JSON.stringify({error:"Invalid data: no valid ipfs_hash was provided"})); + } +} +module.exports = getIPFSHash; |