42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import tornado.gen
 | |
| import tornado.web
 | |
| 
 | |
| from common.sentry import sentry
 | |
| from common.web import requestsManager
 | |
| from common.web import cheesegull
 | |
| from common.log import logUtils as log
 | |
| from constants import exceptions
 | |
| 
 | |
| MODULE_NAME = "direct_np"
 | |
| class handler(requestsManager.asyncRequestHandler):
 | |
| 	"""
 | |
| 	Handler for /web/osu-search-set.php
 | |
| 	"""
 | |
| 	@tornado.web.asynchronous
 | |
| 	@tornado.gen.engine
 | |
| 	@sentry.captureTornado
 | |
| 	def asyncGet(self):
 | |
| 		output = ""
 | |
| 		try:
 | |
| 			# Get data by beatmap id or beatmapset id
 | |
| 			if "b" in self.request.arguments:
 | |
| 				_id = self.get_argument("b")
 | |
| 				data = cheesegull.getBeatmap(_id)
 | |
| 			elif "s" in self.request.arguments:
 | |
| 				_id = self.get_argument("s")
 | |
| 				data = cheesegull.getBeatmapSet(_id)
 | |
| 			else:
 | |
| 				raise exceptions.invalidArgumentsException(MODULE_NAME)
 | |
| 
 | |
| 			log.info("Requested osu!direct np: {}/{}".format("b" if "b" in self.request.arguments else "s", _id))
 | |
| 
 | |
| 			# Make sure cheesegull returned some valid data
 | |
| 			if data is None or len(data) == 0:
 | |
| 				raise exceptions.osuApiFailException(MODULE_NAME)
 | |
| 
 | |
| 			# Write the response
 | |
| 			output = cheesegull.toDirectNp(data) + "\r\n"
 | |
| 		except (exceptions.invalidArgumentsException, exceptions.osuApiFailException, KeyError):
 | |
| 			output = ""
 | |
| 		finally:
 | |
| 			self.write(output) |