From b3d32eeb518844519a95fcd9acb5fcced16c2e8b Mon Sep 17 00:00:00 2001 From: Douglas Parsons Date: Thu, 2 Jun 2022 12:02:34 +0100 Subject: [PATCH] Fix permissions issue with uploading deployment files --- client/file_create.go | 21 +++++++++++++++------ vercel/resource_deployment.go | 7 ++++++- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/client/file_create.go b/client/file_create.go index 6f42af80..854d239c 100644 --- a/client/file_create.go +++ b/client/file_create.go @@ -9,26 +9,35 @@ import ( "github.com/hashicorp/terraform-plugin-log/tflog" ) +type CreateFileRequest struct { + Filename string + SHA string + Content string + TeamID string +} + // CreateFile will upload a file to Vercel so that it can be later used for a Deployment. -func (c *Client) CreateFile(ctx context.Context, filename, sha, content string) error { +func (c *Client) CreateFile(ctx context.Context, request CreateFileRequest) error { url := fmt.Sprintf("%s/v2/now/files", c.baseURL) + if request.TeamID != "" { + url = fmt.Sprintf("%s?teamId=%s", url, request.TeamID) + } req, err := http.NewRequestWithContext( ctx, "POST", url, - strings.NewReader(content), + strings.NewReader(request.Content), ) if err != nil { return err } - req.Header.Add("x-vercel-digest", sha) + req.Header.Add("x-vercel-digest", request.SHA) req.Header.Set("Content-Type", "application/octet-stream") tflog.Trace(ctx, "uploading file", map[string]interface{}{ - "url": url, - "payload": mustMarshal(content), - "sha": sha, + "url": url, + "sha": request.SHA, }) err = c.doRequest(req, nil) return err diff --git a/vercel/resource_deployment.go b/vercel/resource_deployment.go index 82d1f52c..3c8badff 100644 --- a/vercel/resource_deployment.go +++ b/vercel/resource_deployment.go @@ -270,7 +270,12 @@ func (r resourceDeployment) Create(ctx context.Context, req tfsdk.CreateResource return } - err = r.p.client.CreateFile(ctx, f.File, f.Sha, string(content)) + err = r.p.client.CreateFile(ctx, client.CreateFileRequest{ + Filename: f.File, + SHA: f.Sha, + Content: string(content), + TeamID: plan.TeamID.Value, + }) if err != nil { resp.Diagnostics.AddError( "Error uploading deployment file",