summaryrefslogtreecommitdiff
path: root/go/internal/command/uploadpack/uploadpack.go
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2019-06-03 15:21:25 +0000
committerNick Thomas <nick@gitlab.com>2019-06-03 15:21:25 +0000
commit5ee3270e07b0f7cca8c2352816ea86a3b640a772 (patch)
treeddc0d81da81ebfdb2c05819c88cde2c56dbaf4d5 /go/internal/command/uploadpack/uploadpack.go
parentbeb5855542645cdc9bf7f954b9c5a9333dfb3975 (diff)
parentcde5b73cb8776c70c6d00ff34c568ea4438bcba9 (diff)
downloadgitlab-shell-5ee3270e07b0f7cca8c2352816ea86a3b640a772.tar.gz
Merge branch 'id-git-upload-pack' into 'master'
Go implementation for git-upload-pack Closes #160 See merge request gitlab-org/gitlab-shell!305
Diffstat (limited to 'go/internal/command/uploadpack/uploadpack.go')
-rw-r--r--go/internal/command/uploadpack/uploadpack.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/go/internal/command/uploadpack/uploadpack.go b/go/internal/command/uploadpack/uploadpack.go
new file mode 100644
index 0000000..cff198d
--- /dev/null
+++ b/go/internal/command/uploadpack/uploadpack.go
@@ -0,0 +1,36 @@
+package uploadpack
+
+import (
+ "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/commandargs"
+ "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/readwriter"
+ "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/shared/accessverifier"
+ "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/shared/disallowedcommand"
+ "gitlab.com/gitlab-org/gitlab-shell/go/internal/config"
+)
+
+type Command struct {
+ Config *config.Config
+ Args *commandargs.CommandArgs
+ ReadWriter *readwriter.ReadWriter
+}
+
+func (c *Command) Execute() error {
+ args := c.Args.SshArgs
+ if len(args) != 2 {
+ return disallowedcommand.Error
+ }
+
+ repo := args[1]
+ response, err := c.verifyAccess(repo)
+ if err != nil {
+ return err
+ }
+
+ return c.performGitalyCall(response)
+}
+
+func (c *Command) verifyAccess(repo string) (*accessverifier.Response, error) {
+ cmd := accessverifier.Command{c.Config, c.Args, c.ReadWriter}
+
+ return cmd.Verify(c.Args.CommandType, repo)
+}