no redirect on head

This commit is contained in:
Roy Olav Purser 2021-05-14 15:43:24 +02:00
parent f2c5384699
commit acb04a3f54
Signed by: roypur
GPG Key ID: E14D26A036F21656

View File

@ -260,13 +260,13 @@ def rewrite(current, provider, proxy):
ndata += "\n" ndata += "\n"
return ndata return ndata
class MainHandler(tornado.web.RequestHandler): class MainHandler(tornado.web.RequestHandler):
async def handle_any(self): async def handle_any(self, redir):
handler = UpstreamHandler() handler = UpstreamHandler()
await handler.setup(self) await handler.setup(self)
if handler.render: if handler.render:
await self.handle_render(handler) await self.handle_render(handler)
elif handler.stream: elif handler.stream:
await self.handle_stream(handler) await self.handle_stream(handler, redir)
else: else:
logger.info(f'provider missing {self.request.uri}') logger.info(f'provider missing {self.request.uri}')
self.set_status(404) self.set_status(404)
@ -290,7 +290,7 @@ class MainHandler(tornado.web.RequestHandler):
self.set_status(404) self.set_status(404)
self.write("HTML template missing.") self.write("HTML template missing.")
async def handle_stream(self, handler): async def handle_stream(self, handler, redir):
upstream = None upstream = None
if handler.proxy is not None: if handler.proxy is not None:
try: try:
@ -319,6 +319,9 @@ class MainHandler(tornado.web.RequestHandler):
data = None data = None
if "mpegurl" in ctype.lower(): if "mpegurl" in ctype.lower():
data = rewrite(upstream, provider, proxy) data = rewrite(upstream, provider, proxy)
self.set_header("Content-Type", "application/vnd.apple.mpegurl")
else:
self.set_header("Content-Type", ctype)
else: else:
ldata = {} ldata = {}
ldata["upstream"] = upstream ldata["upstream"] = upstream
@ -335,15 +338,15 @@ class MainHandler(tornado.web.RequestHandler):
except Exception as e: except Exception as e:
logger.info(e) logger.info(e)
if data is None: if data is None:
upstream = await handler.proxy.proxy_url(upstream, None) if redir:
self.redirect(upstream, status=303) upstream = await handler.proxy.proxy_url(upstream, None)
self.redirect(upstream, status=303)
else: else:
self.set_header("Content-Type", "application/vnd.apple.mpegurl")
self.write(data) self.write(data)
async def get(self): async def get(self):
await self.handle_any() await self.handle_any(True)
async def head(self): async def head(self):
await self.handle_any() await self.handle_any(False)
class FileHandler(tornado.web.RequestHandler): class FileHandler(tornado.web.RequestHandler):
def get(self): def get(self):