Skip to content

Commit d18030b

Browse files
authored
Merge pull request #42 from Justa-Cai/main
fix: support old gitlab auto get X-Gitlab-Instance
2 parents fc8a607 + ac95be2 commit d18030b

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

api.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from biz.utils.im import im_notifier
1919
from biz.utils.log import logger
2020
from biz.utils.reporter import Reporter
21+
from urllib.parse import urlparse
2122

2223
load_dotenv()
2324
api_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为空,返回错误

0 commit comments

Comments
 (0)