aboutsummaryrefslogtreecommitdiffstats
path: root/modules/private/serv.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/private/serv.go')
-rw-r--r--modules/private/serv.go65
1 files changed, 10 insertions, 55 deletions
diff --git a/modules/private/serv.go b/modules/private/serv.go
index c176e1ddfc..480a446954 100644
--- a/modules/private/serv.go
+++ b/modules/private/serv.go
@@ -6,13 +6,11 @@ package private
import (
"context"
"fmt"
- "net/http"
"net/url"
asymkey_model "code.gitea.io/gitea/models/asymkey"
"code.gitea.io/gitea/models/perm"
user_model "code.gitea.io/gitea/models/user"
- "code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting"
)
@@ -24,20 +22,11 @@ type KeyAndOwner struct {
// ServNoCommand returns information about the provided key
func ServNoCommand(ctx context.Context, keyID int64) (*asymkey_model.PublicKey, *user_model.User, error) {
- reqURL := setting.LocalURL + fmt.Sprintf("api/internal/serv/none/%d",
- keyID)
- resp, err := newInternalRequest(ctx, reqURL, "GET").Response()
- if err != nil {
- return nil, nil, err
- }
- defer resp.Body.Close()
- if resp.StatusCode != http.StatusOK {
- return nil, nil, fmt.Errorf("%s", decodeJSONError(resp).Err)
- }
-
- var keyAndOwner KeyAndOwner
- if err := json.NewDecoder(resp.Body).Decode(&keyAndOwner); err != nil {
- return nil, nil, err
+ reqURL := setting.LocalURL + fmt.Sprintf("api/internal/serv/none/%d", keyID)
+ req := newInternalRequest(ctx, reqURL, "GET")
+ keyAndOwner, extra := requestJSONResp(req, &KeyAndOwner{})
+ if extra.HasError() {
+ return nil, nil, extra.Error
}
return keyAndOwner.Key, keyAndOwner.Owner, nil
}
@@ -56,53 +45,19 @@ type ServCommandResults struct {
RepoID int64
}
-// ErrServCommand is an error returned from ServCommmand.
-type ErrServCommand struct {
- Results ServCommandResults
- Err string
- StatusCode int
-}
-
-func (err ErrServCommand) Error() string {
- return err.Err
-}
-
-// IsErrServCommand checks if an error is a ErrServCommand.
-func IsErrServCommand(err error) bool {
- _, ok := err.(ErrServCommand)
- return ok
-}
-
// ServCommand preps for a serv call
-func ServCommand(ctx context.Context, keyID int64, ownerName, repoName string, mode perm.AccessMode, verbs ...string) (*ServCommandResults, error) {
+func ServCommand(ctx context.Context, keyID int64, ownerName, repoName string, mode perm.AccessMode, verbs ...string) (*ServCommandResults, ResponseExtra) {
reqURL := setting.LocalURL + fmt.Sprintf("api/internal/serv/command/%d/%s/%s?mode=%d",
keyID,
url.PathEscape(ownerName),
url.PathEscape(repoName),
- mode)
+ mode,
+ )
for _, verb := range verbs {
if verb != "" {
reqURL += fmt.Sprintf("&verb=%s", url.QueryEscape(verb))
}
}
-
- resp, err := newInternalRequest(ctx, reqURL, "GET").Response()
- if err != nil {
- return nil, err
- }
- defer resp.Body.Close()
-
- if resp.StatusCode != http.StatusOK {
- var errServCommand ErrServCommand
- if err := json.NewDecoder(resp.Body).Decode(&errServCommand); err != nil {
- return nil, err
- }
- errServCommand.StatusCode = resp.StatusCode
- return nil, errServCommand
- }
- var results ServCommandResults
- if err := json.NewDecoder(resp.Body).Decode(&results); err != nil {
- return nil, err
- }
- return &results, nil
+ req := newInternalRequest(ctx, reqURL, "GET")
+ return requestJSONResp(req, &ServCommandResults{})
}