mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	Added search-endpoint for fetching by category
This commit is contained in:
		| @@ -732,6 +732,90 @@ router.route('/api/list/:channel_name/__np__').post(function(req, res) { | ||||
|     }); | ||||
| }); | ||||
|  | ||||
|  | ||||
| router.route('/api/search/:channel_name/').post(function(req, res) { | ||||
|     res.header("Access-Control-Allow-Origin", "*"); | ||||
|     res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); | ||||
|     res.header({"Content-Type": "application/json"}); | ||||
|     try { | ||||
|         var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; | ||||
|         var guid = Functions.hash_pass(req.get('User-Agent') + ip + req.headers["accept-language"]); | ||||
|         var channel_name = cleanChannelName(req.params.channel_name); | ||||
|         var userpass; | ||||
|         if(req.body.hasOwnProperty("userpass")) { | ||||
|             req.body.userpass = req.body.userpass == "" ? "" : crypto.createHash('sha256').update(req.body.userpass, 'utf8').digest("base64"); | ||||
|             userpass = req.body.userpass; | ||||
|         } else { | ||||
|             userpass = ""; | ||||
|         } | ||||
|         var searchQuery = ""; | ||||
|         if(req.body.searchQuery == undefined || req.body.searchQuery == "") { | ||||
|             var to_send = error.formatting; | ||||
|             to_send.results = [result]; | ||||
|             res.status(400).send(to_send); | ||||
|             return; | ||||
|         } | ||||
|         searchQuery = req.body.searchQuery; | ||||
|         var token = ""; | ||||
|         if(req.body.hasOwnProperty("token")) { | ||||
|             token = req.body.token; | ||||
|         } | ||||
|     } catch(e) { | ||||
|         var result = { | ||||
|             userpass: { | ||||
|                 expected: "string", | ||||
|                 got: req.body.hasOwnProperty("userpass") ? typeof(req.body.userpass) : undefined | ||||
|             } | ||||
|         }; | ||||
|         var to_send = error.formatting; | ||||
|         to_send.results = [result]; | ||||
|         res.status(400).send(to_send); | ||||
|         return; | ||||
|     } | ||||
|     var cookie = req.cookies._uI; | ||||
|     Functions.getSessionAdminUser(cookie, channel_name, function(_u, _a) { | ||||
|         if(req.body.userpass == "") { | ||||
|             //userpass = Functions.hash_pass(Functions.hash_pass(Functions.decrypt_string(_u))) | ||||
|             userpass = _u; | ||||
|         } | ||||
|         token_db.collection("api_token").find({token: token}, function(err, token_docs) { | ||||
|             var authorized = false; | ||||
|             var origin; | ||||
|             try { | ||||
|                 origin = req.headers.referer.split("/")[2]; | ||||
|             } catch(e) { origin = ""; } | ||||
|             if(token_docs.length == 1 && token_docs[0].token == token && (token_docs[0].origin == "*" || origin.indexOf(token_docs[0].origin) > -1)) { | ||||
|                 authorized = true; | ||||
|             } | ||||
|             checkOveruseApiToken(authorized, token_docs, res, function() { | ||||
|                 checkTimeout(guid, res, authorized, "POST", function() { | ||||
|                     db.collection(channel_name + "_settings").find({ id: "config" }, function(err, conf) { | ||||
|                         if(authorized) { | ||||
|                             incrementToken(token); | ||||
|                         } | ||||
|                         if(conf.length == 0) { | ||||
|                             res.status(404).send(error.not_found.list); | ||||
|                             return; | ||||
|                         } else if(conf[0].userpass != userpass && conf[0].userpass != "" && conf[0].userpass != undefined) { | ||||
|                             res.status(403).send(error.not_authenticated); | ||||
|                             return; | ||||
|                         } | ||||
|                         db.collection(channel_name).find({tags: {$regex : ".*" + searchQuery + ".*"}}, function(e, results) { | ||||
|                             if(results.length == 0) { | ||||
|                                 res.status(404).send(error.not_found.list); | ||||
|                                 return; | ||||
|                             } | ||||
|                             var to_return = error.no_error; | ||||
|                             to_return.results = results; | ||||
|                             res.status(200).send(to_return); | ||||
|                         }); | ||||
|                     }); | ||||
|                 }); | ||||
|             }); | ||||
|         }); | ||||
|     }); | ||||
| }); | ||||
|  | ||||
| router.route('/api/list/:channel_name/:video_id').post(function(req,res) { | ||||
|     res.header("Access-Control-Allow-Origin", "*"); | ||||
|     res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); | ||||
| @@ -770,6 +854,8 @@ router.route('/api/list/:channel_name/:video_id').post(function(req,res) { | ||||
|             var duration = parseInt(req.body.duration); | ||||
|             var start_time = parseInt(req.body.start_time); | ||||
|             var end_time = parseInt(req.body.end_time); | ||||
|             var tags = []; | ||||
|             if(req.body.tags != undefined) tags = req.body.tags.split(","); | ||||
|             var source = req.body.source; | ||||
|             if(source == "soundcloud" && !req.body.hasOwnProperty("thumbnail")) { | ||||
|                 throw "Wrong format"; | ||||
| @@ -852,7 +938,7 @@ router.route('/api/list/:channel_name/:video_id').post(function(req,res) { | ||||
|                                         if(now_playing.length == 0 && authenticated) { | ||||
|                                             set_np = true; | ||||
|                                         } | ||||
|                                         var new_song = {"added": Functions.get_time(),"guids":[guid],"id":video_id,"now_playing":set_np,"title":title,"votes":1, "duration":duration, "start": parseInt(start_time), "end": parseInt(end_time), "type": song_type, "source": source}; | ||||
|                                         var new_song = {"tags": tags, "added": Functions.get_time(),"guids":[guid],"id":video_id,"now_playing":set_np,"title":title,"votes":1, "duration":duration, "start": parseInt(start_time), "end": parseInt(end_time), "type": song_type, "source": source}; | ||||
|                                         var runFunction = Search.get_correct_info; | ||||
|                                         if(source == "soundcloud") { | ||||
|                                             if(req.body.thumbnail.indexOf("https://i1.sndcdn.com") > -1 || req.body.thumbnail.indexOf("https://w1.sndcdn.com") > -1) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user