File tree Expand file tree Collapse file tree 1 file changed +16
-2
lines changed Expand file tree Collapse file tree 1 file changed +16
-2
lines changed Original file line number Diff line number Diff line change 1818from biz .utils .im import im_notifier
1919from biz .utils .log import logger
2020from biz .utils .reporter import Reporter
21+ from urllib .parse import urlparse
2122
2223load_dotenv ()
2324api_app = Flask (__name__ )
@@ -111,8 +112,21 @@ def handle_webhook():
111112
112113 object_kind = data .get ("object_kind" )
113114
114- # 优先从请求头获取,如果没有,则从环境变量获取
115- gitlab_url = request .headers .get ('X-Gitlab-Instance' ) or os .getenv ('GITLAB_URL' )
115+ # 优先从请求头获取,如果没有,则从环境变量获取,如果没有,则从推送事件中获取
116+ gitlab_url = os .getenv ('GITLAB_URL' ) or request .headers .get ('X-Gitlab-Instance' )
117+ if not gitlab_url :
118+ repository = data .get ('repository' )
119+ if not repository :
120+ return jsonify ({'message' : 'Missing GitLab URL' }), 400
121+ homepage = repository .get ("homepage" )
122+ if not homepage :
123+ return jsonify ({'message' : 'Missing GitLab URL' }), 400
124+ try :
125+ parsed_url = urlparse (homepage )
126+ gitlab_url = f"{ parsed_url .scheme } ://{ parsed_url .netloc } /"
127+ except Exception as e :
128+ return jsonify ({"error" : f"Failed to parse homepage URL: { str (e )} " }), 400
129+
116130 # 优先从环境变量获取,如果没有,则从请求头获取
117131 gitlab_token = os .getenv ('GITLAB_ACCESS_TOKEN' ) or request .headers .get ('X-Gitlab-Token' )
118132 # 如果gitlab_token为空,返回错误
You can’t perform that action at this time.
0 commit comments