Skip to content

Commit

Permalink
[PL-24913]: Handle the error raised while creating a multipart input (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
DeepakPatankar authored May 12, 2022
1 parent 5a5c5ca commit 7664143
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 15 deletions.
1 change: 1 addition & 0 deletions scm/driver/stash/integration/git_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ func TestCreateBranch(t *testing.T) {
},
}

commitId, _ := GetCurrentCommitOfBranch(client, "master")
input := &scm.CreateBranch{
Name: "test_branch",
Sha: commitId,
Expand Down
1 change: 0 additions & 1 deletion scm/driver/stash/integration/testSettings.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ var (
endpoint = "https://bitbucket.dev.harness.io/"
repoID = "har/scm-integration-test-repo"
username = "harnessadmin"
commitId = "f675c4b55841908d7c338c500c8f4cb844fd9be7"
)

func GetCurrentCommitOfBranch(client *scm.Client, branch string) (string, error) {
Expand Down
26 changes: 26 additions & 0 deletions scm/driver/stash/multipart.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package stash

import "mime/multipart"

type MultipartWriter struct {
Writer *multipart.Writer
Error error
}

func (mw *MultipartWriter) Write(f, v string) {
if mw.Error != nil {
return
}
if v == "" {
return
}
mw.Error = mw.Writer.WriteField(f, v)
}

func (mw *MultipartWriter) Close() {
mw.Writer.Close()
}

func (mw *MultipartWriter) FormDataContentType() string {
return mw.Writer.FormDataContentType()
}
24 changes: 10 additions & 14 deletions scm/driver/stash/stash.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,26 +79,22 @@ func (c *wrapper) do(ctx context.Context, method, path string, in, out interface
case *contentCreateUpdate:
// add the content to the multipart
var b bytes.Buffer
w := multipart.NewWriter(&b)
mw := &MultipartWriter{Writer: multipart.NewWriter(&b)}
// add the other fields
if content.Message != "" {
_ = w.WriteField("content", string(content.Content))
// The Write function doesn't write the string value to multipart if it is Empty
mw.Write("content", string(content.Content))
mw.Write("message", content.Message)
mw.Write("branch", content.Branch)
mw.Write("sourceCommitId", content.Sha)
if mw.Error != nil {
return nil, fmt.Errorf("error writing multipart-content. err: %s", mw.Error)
}
if content.Message != "" {
_ = w.WriteField("message", content.Message)
}
if content.Branch != "" {
_ = w.WriteField("branch", content.Branch)
}
if content.Sha != "" {
_ = w.WriteField("sourceCommitId", content.Sha)
}
w.Close()
mw.Close()
// write the multipart response to the body
req.Body = &b
// write the content type that contains the length of the multipart
req.Header = map[string][]string{
"Content-Type": {w.FormDataContentType()},
"Content-Type": {mw.FormDataContentType()},
}
default:
buf := new(bytes.Buffer)
Expand Down

0 comments on commit 7664143

Please sign in to comment.