import flask as F
import requests as R



def zfa(proxy_url):
    m=F.request.method
    a=F.request.args
    ps={}
    for i in a:
        v=a.get(i)
        ps[i]=v
    data=F.request.get_data()
    h=F.request.headers
    h2={}
    for k,v in h:
        h2[k]=v
    url=proxy_url+F.request.path
    r=R.request(url=url,method=m,data=data,headers=h2,params=ps)
    r:R.Response
    res=F.Response(response=r.content,headers=dict(r.headers))
    res.status_code=r.status_code
    return res






class HttpProxy:
    def __init__(self,proxy_url) -> None:
        self.proxy_url=proxy_url
        self.flask=F.Flask(__name__)
        self.flask.before_request(self.handle)
    def run(self,*args,**ks):
        return self.flask.run(*args,**ks)
    def on_error(self,e):
        return repr(e)
    
    def pre_handle(self):
        pass
    def post_handle(self,res:F.Response):
        return res
    def handle(self):
        try:
            r=self.pre_handle()
            if r:
                return r
            res=zfa(self.proxy_url)
            res=self.post_handle(res)
            return res
        except Exception as e:
            print(e)
            return self.on_error(e)
   

app=HttpProxy('http://127.0.0.1:8000')
app.run(port=80)



Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐