summaryrefslogtreecommitdiffstats
path: root/modules/private
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2017-04-19 11:45:01 +0800
committerGitHub <noreply@github.com>2017-04-19 11:45:01 +0800
commit2eeae84cbd80544157a82c7f031489eaaceaa873 (patch)
treea275f41a3bb552df39724d4eca3dcdffe47dff8f /modules/private
parentf42ec6120e8a2830407027020b65391ebf8e7f59 (diff)
downloadgitea-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.go53
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
+}