diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-04-19 11:45:01 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-19 11:45:01 +0800 |
commit | 2eeae84cbd80544157a82c7f031489eaaceaa873 (patch) | |
tree | a275f41a3bb552df39724d4eca3dcdffe47dff8f /modules/private | |
parent | f42ec6120e8a2830407027020b65391ebf8e7f59 (diff) | |
download | gitea-2eeae84cbd80544157a82c7f031489eaaceaa873.tar.gz gitea-2eeae84cbd80544157a82c7f031489eaaceaa873.zip |
Add internal routes for ssh hook comands (#1471)
* add internal routes for ssh hook comands
* fix lint
* add comment on why package named private not internal but the route name is internal
* add comment above package private why package named private not internal but the route name is internal
* remove exp time on internal access
* move routes from /internal to /api/internal
* add comment and defer on UpdatePublicKeyUpdated
Diffstat (limited to 'modules/private')
-rw-r--r-- | modules/private/internal.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/modules/private/internal.go b/modules/private/internal.go new file mode 100644 index 0000000000..017e265b7c --- /dev/null +++ b/modules/private/internal.go @@ -0,0 +1,53 @@ +package private + +import ( + "crypto/tls" + "encoding/json" + "fmt" + "net/http" + + "code.gitea.io/gitea/modules/httplib" + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" +) + +func newRequest(url, method string) *httplib.Request { + return httplib.NewRequest(url, method).Header("Authorization", + fmt.Sprintf("Bearer %s", setting.InternalToken)) +} + +// Response internal request response +type Response struct { + Err string `json:"err"` +} + +func decodeJSONError(resp *http.Response) *Response { + var res Response + err := json.NewDecoder(resp.Body).Decode(&res) + if err != nil { + res.Err = err.Error() + } + return &res +} + +// UpdatePublicKeyUpdated update publick key updates +func UpdatePublicKeyUpdated(keyID int64) error { + // Ask for running deliver hook and test pull request tasks. + reqURL := setting.LocalURL + fmt.Sprintf("api/internal/ssh/%d/update", keyID) + log.GitLogger.Trace("UpdatePublicKeyUpdated: %s", reqURL) + + resp, err := newRequest(reqURL, "POST").SetTLSClientConfig(&tls.Config{ + InsecureSkipVerify: true, + }).Response() + if err != nil { + return err + } + + defer resp.Body.Close() + + // All 2XX status codes are accepted and others will return an error + if resp.StatusCode/100 != 2 { + return fmt.Errorf("Failed to update public key: %s", decodeJSONError(resp).Err) + } + return nil +} |