From cdbcb418a874e5f299dcf995edb66993dca36fc0 Mon Sep 17 00:00:00 2001 From: dingguodong Date: Fri, 18 Jun 2021 13:38:24 +0800 Subject: [PATCH] * Improve code robustness. --- module/gitlab/model.php | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 5877268dfd..f7c102d75e 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -237,10 +237,15 @@ class gitlabModel extends model */ public function createWebhook($products, $gitlabID, $projectID) { + $urls = $this->getWebhookUrls($gitlabID, $projectID); + foreach($products as $index => $product) { - $webhook = sprintf($this->config->gitlab->zentaoApiWebhookUrl, commonModel::getSysURL(), $product, $gitlabID, $projectID); - $response = $this->apiCreateHook($gitlabID, $projectID, $webhook, $this->config->gitlab->zentaoApiWebhookToken); + $url = sprintf($this->config->gitlab->zentaoApiWebhookUrl, commonModel::getSysURL(), $product, $gitlabID, $projectID); + if(! array_key_exists($url, array_flip($urls))) + { + $response = $this->apiCreateHook($gitlabID, $projectID, $url, $this->config->gitlab->zentaoApiWebhookToken); + } } return true; } @@ -258,7 +263,7 @@ class gitlabModel extends model $apiRoot = $this->getApiRoot($gitlabID); $apiPath = "/projects/{$projectID}/hooks"; $url = sprintf($apiRoot, $apiPath); - $response = commonModel::http($url); + $response = json_decode(commonModel::http($url)); return $response; } @@ -277,9 +282,28 @@ class gitlabModel extends model $apiPath = "/projects/$projectID/hooks/$hookID)"; $url = sprintf($apiRoot, $apiPath); $response = commonModel::http($url); - return; + return $response; } + /** + * Get webhook urls + * + * @param int $gitlabID + * @param int $projectID + * @access public + * @return array $urls; + */ + public function getWebhookUrls($gitlabID, $projectID) + { + $urls = array(); + $webhooks = $this->apiGetHooks($gitlabID, $projectID); + foreach($webhooks as $index => $webhook) + { + $urls[] = $webhook->url; + } + return $urls; + } + /** * Create hook. *