new test
This commit is contained in:
		
							
								
								
									
										16
									
								
								stream.py
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								stream.py
									
									
									
									
									
								
							@@ -48,6 +48,9 @@ class ProxyElem():
 | 
				
			|||||||
        return resp.headers.get("Content-Type", "binary/octet-stream")
 | 
					        return resp.headers.get("Content-Type", "binary/octet-stream")
 | 
				
			||||||
    async def proxy_url(self, current, path):
 | 
					    async def proxy_url(self, current, path):
 | 
				
			||||||
        data = {}
 | 
					        data = {}
 | 
				
			||||||
 | 
					        if path is None:
 | 
				
			||||||
 | 
					            data["upstream"] = current
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
            data["upstream"] = urllib.parse.urljoin(current, path)
 | 
					            data["upstream"] = urllib.parse.urljoin(current, path)
 | 
				
			||||||
        data["proxied"] = True
 | 
					        data["proxied"] = True
 | 
				
			||||||
        ret = None
 | 
					        ret = None
 | 
				
			||||||
@@ -58,9 +61,14 @@ class ProxyElem():
 | 
				
			|||||||
        if proxy_server is None:
 | 
					        if proxy_server is None:
 | 
				
			||||||
            return data["upstream"]
 | 
					            return data["upstream"]
 | 
				
			||||||
        async with self.session() as session:
 | 
					        async with self.session() as session:
 | 
				
			||||||
            resp = await session.post(proxy_server, json=data)
 | 
					            resp = await session.post(proxy_server, json=[data])
 | 
				
			||||||
            text = await resp.text()
 | 
					            text = await resp.text()
 | 
				
			||||||
        return json.loads(text)
 | 
					        jdata = json.loads(text)
 | 
				
			||||||
 | 
					        logger.info(jdata)
 | 
				
			||||||
 | 
					        if isinstance(jdata, list) and len(jdata) == 1:
 | 
				
			||||||
 | 
					            return jdata[0]
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            return data["upstream"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AsyncSession():
 | 
					class AsyncSession():
 | 
				
			||||||
    def __init__(self, session, future):
 | 
					    def __init__(self, session, future):
 | 
				
			||||||
@@ -326,6 +334,10 @@ 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:
 | 
				
			||||||
 | 
					                links = await handler.proxy.proxy_url(upstream, None)
 | 
				
			||||||
 | 
					                if isinstance(links, list) and len(links) == 1:
 | 
				
			||||||
 | 
					                    self.redirect(links[0], status=303)
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
                    self.redirect(upstream, status=303)
 | 
					                    self.redirect(upstream, status=303)
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                self.set_header("Content-Type", "application/vnd.apple.mpegurl")
 | 
					                self.set_header("Content-Type", "application/vnd.apple.mpegurl")
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user