summaryrefslogtreecommitdiffstats
path: root/modules/private/key.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/private/key.go')
-rw-r--r--modules/private/key.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/modules/private/key.go b/modules/private/key.go
index 86d0a730d1..1c6511846b 100644
--- a/modules/private/key.go
+++ b/modules/private/key.go
@@ -32,6 +32,31 @@ func UpdateDeployKeyUpdated(keyID int64, repoID int64) error {
return nil
}
+// GetDeployKey check if repo has deploy key
+func GetDeployKey(keyID, repoID int64) (*models.DeployKey, error) {
+ reqURL := setting.LocalURL + fmt.Sprintf("api/internal/repositories/%d/keys/%d", repoID, keyID)
+ log.GitLogger.Trace("GetDeployKey: %s", reqURL)
+
+ resp, err := newInternalRequest(reqURL, "GET").Response()
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ switch resp.StatusCode {
+ case 404:
+ return nil, nil
+ case 200:
+ var dKey models.DeployKey
+ if err := json.NewDecoder(resp.Body).Decode(&dKey); err != nil {
+ return nil, err
+ }
+ return &dKey, nil
+ default:
+ return nil, fmt.Errorf("Failed to get deploy key: %s", decodeJSONError(resp).Err)
+ }
+}
+
// HasDeployKey check if repo has deploy key
func HasDeployKey(keyID, repoID int64) (bool, error) {
reqURL := setting.LocalURL + fmt.Sprintf("api/internal/repositories/%d/has-keys/%d", repoID, keyID)