这是indexloc提供的服务,不要输入任何密码
Skip to content

Support team as a provider argument #75

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions client/alias_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,16 @@ type CreateAliasRequest struct {

// The create Alias endpoint does not return the full AliasResponse, only the UID and Alias.
type createAliasResponse struct {
UID string `json:"uid"`
Alias string `json:"alias"`
UID string `json:"uid"`
Alias string `json:"alias"`
TeamID string `json:"-"`
}

// CreateAlias creates an alias within Vercel.
func (c *Client) CreateAlias(ctx context.Context, request CreateAliasRequest, deploymentID string, teamID string) (r AliasResponse, err error) {
url := fmt.Sprintf("%s/v2/deployments/%s/aliases", c.baseURL, deploymentID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}
payload := string(mustMarshal(request))
req, err := http.NewRequestWithContext(
Expand All @@ -51,5 +52,6 @@ func (c *Client) CreateAlias(ctx context.Context, request CreateAliasRequest, de
UID: aliasResponse.UID,
Alias: aliasResponse.Alias,
DeploymentID: deploymentID,
TeamID: c.teamID(teamID),
}, nil
}
4 changes: 2 additions & 2 deletions client/alias_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ type DeleteAliasResponse struct {
// DeleteAlias deletes an alias within Vercel.
func (c *Client) DeleteAlias(ctx context.Context, aliasUID string, teamID string) (r DeleteAliasResponse, err error) {
url := fmt.Sprintf("%s/v2/aliases/%s", c.baseURL, aliasUID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}
req, err := http.NewRequest(
"DELETE",
Expand Down
6 changes: 4 additions & 2 deletions client/alias_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@ type AliasResponse struct {
UID string `json:"uid"`
Alias string `json:"alias"`
DeploymentID string `json:"deploymentId"`
TeamID string `json:"-"`
}

// GetAlias retrieves information about an existing alias from vercel.
func (c *Client) GetAlias(ctx context.Context, alias, teamID string) (r AliasResponse, err error) {
url := fmt.Sprintf("%s/v4/aliases/%s", c.baseURL, alias)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}
req, err := http.NewRequestWithContext(
ctx,
Expand All @@ -34,5 +35,6 @@ func (c *Client) GetAlias(ctx context.Context, alias, teamID string) (r AliasRes
"url": url,
})
err = c.doRequest(req, &r)
r.TeamID = c.teamID(teamID)
return r, err
}
16 changes: 16 additions & 0 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
type Client struct {
token string
client *http.Client
_teamID string
baseURL string
}

Expand All @@ -31,3 +32,18 @@ func New(token string) *Client {
baseURL: "https://api.vercel.com",
}
}

func (c *Client) WithTeamID(teamID string) *Client {
c._teamID = teamID
return c
}

// teamID is a helper method to return one of two values based on specificity.
// It will return an explicitly passed teamID if it is defined. If not defined,
// it will fall back to the teamID configured on the client.
func (c *Client) teamID(teamID string) string {
if teamID != "" {
return teamID
}
return c._teamID
}
5 changes: 3 additions & 2 deletions client/deployment_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ type DeploymentResponse struct {
ErrorMessage string `json:"errorMessage"`
ID string `json:"id"`
ProjectID string `json:"projectId"`
TeamID string `json:"-"`
ReadyState string `json:"readyState"`
Target *string `json:"target"`
URL string `json:"url"`
Expand Down Expand Up @@ -196,8 +197,8 @@ func (c *Client) CreateDeployment(ctx context.Context, request CreateDeploymentR
request.GitSource = &gitSource
}
url := fmt.Sprintf("%s/v12/now/deployments?skipAutoDetectionConfirmation=1", c.baseURL)
if teamID != "" {
url = fmt.Sprintf("%s&teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s&teamId=%s", url, c.teamID(teamID))
}
payload := string(mustMarshal(request))
req, err := http.NewRequestWithContext(
Expand Down
4 changes: 2 additions & 2 deletions client/deployment_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ type DeleteDeploymentResponse struct {
// DeleteDeployment deletes a deployment within Vercel.
func (c *Client) DeleteDeployment(ctx context.Context, deploymentID string, teamID string) (r DeleteDeploymentResponse, err error) {
url := fmt.Sprintf("%s/v13/deployments/%s", c.baseURL, deploymentID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}
req, err := http.NewRequest(
"DELETE",
Expand Down
5 changes: 3 additions & 2 deletions client/deployment_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (
// GetDeployment retrieves information from Vercel about an existing Deployment.
func (c *Client) GetDeployment(ctx context.Context, deploymentID, teamID string) (r DeploymentResponse, err error) {
url := fmt.Sprintf("%s/v13/deployments/%s", c.baseURL, deploymentID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}
req, err := http.NewRequestWithContext(
ctx,
Expand All @@ -28,5 +28,6 @@ func (c *Client) GetDeployment(ctx context.Context, deploymentID, teamID string)
"url": url,
})
err = c.doRequest(req, &r)
r.TeamID = c.teamID(teamID)
return r, err
}
4 changes: 2 additions & 2 deletions client/dns_record_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ type CreateDNSRecordRequest struct {
// CreateDNSRecord creates a DNS record for a specified domain name within Vercel.
func (c *Client) CreateDNSRecord(ctx context.Context, teamID string, request CreateDNSRecordRequest) (r DNSRecord, err error) {
url := fmt.Sprintf("%s/v4/domains/%s/records", c.baseURL, request.Domain)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}

req, err := http.NewRequestWithContext(
Expand Down
4 changes: 2 additions & 2 deletions client/dns_record_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (
// DeleteDNSRecord removes a DNS domain from Vercel.
func (c *Client) DeleteDNSRecord(ctx context.Context, domain, recordID, teamID string) error {
url := fmt.Sprintf("%s/v2/domains/%s/records/%s", c.baseURL, domain, recordID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}

req, err := http.NewRequestWithContext(
Expand Down
6 changes: 4 additions & 2 deletions client/dns_record_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type DNSRecord struct {
Creator string `json:"creator"`
Domain string `json:"domain"`
ID string `json:"id"`
TeamID string `json:"-"`
Name string `json:"name"`
TTL int64 `json:"ttl"`
Value string `json:"value"`
Expand All @@ -22,8 +23,8 @@ type DNSRecord struct {
// GetDNSRecord retrieves information about a DNS domain from Vercel.
func (c *Client) GetDNSRecord(ctx context.Context, recordID, teamID string) (r DNSRecord, err error) {
url := fmt.Sprintf("%s/domains/records/%s", c.baseURL, recordID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}

req, err := http.NewRequestWithContext(
Expand All @@ -37,5 +38,6 @@ func (c *Client) GetDNSRecord(ctx context.Context, recordID, teamID string) (r D
}

err = c.doRequest(req, &r)
r.TeamID = c.teamID(teamID)
return r, err
}
7 changes: 5 additions & 2 deletions client/dns_record_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ import (
// into a production ready function would require some refactoring.
func (c *Client) ListDNSRecords(ctx context.Context, domain, teamID string) (r []DNSRecord, err error) {
url := fmt.Sprintf("%s/v4/domains/%s/records?limit=100", c.baseURL, domain)
if teamID != "" {
url = fmt.Sprintf("%s&teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s&teamId=%s", url, c.teamID(teamID))
}

req, err := http.NewRequestWithContext(
Expand All @@ -31,5 +31,8 @@ func (c *Client) ListDNSRecords(ctx context.Context, domain, teamID string) (r [
Records []DNSRecord `json:"records"`
}{}
err = c.doRequest(req, &dr)
for _, record := range dr.Records {
record.TeamID = c.teamID(teamID)
}
return dr.Records, err
}
5 changes: 3 additions & 2 deletions client/dns_record_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ type UpdateDNSRecordRequest struct {
// UpdateDNSRecord updates a DNS record for a specified domain name within Vercel.
func (c *Client) UpdateDNSRecord(ctx context.Context, teamID, recordID string, request UpdateDNSRecordRequest) (r DNSRecord, err error) {
url := fmt.Sprintf("%s/v4/domains/records/%s", c.baseURL, recordID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}

payload := string(mustMarshal(request))
Expand All @@ -49,5 +49,6 @@ func (c *Client) UpdateDNSRecord(ctx context.Context, teamID, recordID string, r
"payload": payload,
})
err = c.doRequest(req, &r)
r.TeamID = c.teamID(teamID)
return r, err
}
5 changes: 3 additions & 2 deletions client/environment_variable_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ type CreateEnvironmentVariableRequest struct {
// CreateEnvironmentVariable will create a brand new environment variable if one does not exist.
func (c *Client) CreateEnvironmentVariable(ctx context.Context, request CreateEnvironmentVariableRequest) (e EnvironmentVariable, err error) {
url := fmt.Sprintf("%s/v9/projects/%s/env", c.baseURL, request.ProjectID)
if request.TeamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, request.TeamID)
if c.teamID(request.TeamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID))
}
payload := string(mustMarshal(request))
req, err := http.NewRequestWithContext(
Expand All @@ -45,5 +45,6 @@ func (c *Client) CreateEnvironmentVariable(ctx context.Context, request CreateEn
err = c.doRequest(req, &e)
// The API response returns an encrypted environment variable, but we want to return the decrypted version.
e.Value = request.Value
e.TeamID = c.teamID(request.TeamID)
return e, err
}
5 changes: 3 additions & 2 deletions client/environment_variable_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ type UpdateEnvironmentVariableRequest struct {
// UpdateEnvironmentVariable will update an existing environment variable to the latest information.
func (c *Client) UpdateEnvironmentVariable(ctx context.Context, request UpdateEnvironmentVariableRequest) (e EnvironmentVariable, err error) {
url := fmt.Sprintf("%s/v9/projects/%s/env/%s", c.baseURL, request.ProjectID, request.EnvID)
if request.TeamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, request.TeamID)
if c.teamID(request.TeamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID))
}
payload := string(mustMarshal(request))
req, err := http.NewRequestWithContext(
Expand All @@ -46,5 +46,6 @@ func (c *Client) UpdateEnvironmentVariable(ctx context.Context, request UpdateEn
err = c.doRequest(req, &e)
// The API response returns an encrypted environment variable, but we want to return the decrypted version.
e.Value = request.Value
e.TeamID = c.teamID(request.TeamID)
return e, err
}
4 changes: 2 additions & 2 deletions client/environment_variables_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (
// DeleteEnvironmentVariable will remove an environment variable from Vercel.
func (c *Client) DeleteEnvironmentVariable(ctx context.Context, projectID, teamID, variableID string) error {
url := fmt.Sprintf("%s/v8/projects/%s/env/%s", c.baseURL, projectID, variableID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}
req, err := http.NewRequestWithContext(
ctx,
Expand Down
12 changes: 8 additions & 4 deletions client/environment_variables_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (

func (c *Client) getEnvironmentVariables(ctx context.Context, projectID, teamID string) ([]EnvironmentVariable, error) {
url := fmt.Sprintf("%s/v8/projects/%s/env?decrypt=true", c.baseURL, projectID)
if teamID != "" {
url = fmt.Sprintf("%s&teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s&teamId=%s", url, c.teamID(teamID))
}
req, err := http.NewRequestWithContext(
ctx,
Expand All @@ -30,14 +30,17 @@ func (c *Client) getEnvironmentVariables(ctx context.Context, projectID, teamID
"url": url,
})
err = c.doRequest(req, &envResponse)
for _, env := range envResponse.Env {
env.TeamID = c.teamID(teamID)
}
return envResponse.Env, err
}

// GetEnvironmentVariable gets a singluar environment variable from Vercel based on its ID.
func (c *Client) GetEnvironmentVariable(ctx context.Context, projectID, teamID, envID string) (e EnvironmentVariable, err error) {
url := fmt.Sprintf("%s/v1/projects/%s/env/%s", c.baseURL, projectID, envID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}
req, err := http.NewRequestWithContext(
ctx,
Expand All @@ -53,5 +56,6 @@ func (c *Client) GetEnvironmentVariable(ctx context.Context, projectID, teamID,
"url": url,
})
err = c.doRequest(req, &e)
e.TeamID = c.teamID(teamID)
return e, err
}
2 changes: 1 addition & 1 deletion client/file_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ type CreateFileRequest struct {
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)
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(request.TeamID))
}
req, err := http.NewRequestWithContext(
ctx,
Expand Down
6 changes: 4 additions & 2 deletions client/project_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ type EnvironmentVariable struct {
GitBranch *string `json:"gitBranch,omitempty"`
Type string `json:"type"`
ID string `json:"id,omitempty"`
TeamID string `json:"-"`
}

// CreateProjectRequest defines the information necessary to create a project.
Expand All @@ -46,8 +47,8 @@ type CreateProjectRequest struct {
// CreateProject will create a project within Vercel.
func (c *Client) CreateProject(ctx context.Context, teamID string, request CreateProjectRequest) (r ProjectResponse, err error) {
url := fmt.Sprintf("%s/v8/projects", c.baseURL)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}
req, err := http.NewRequestWithContext(
ctx,
Expand All @@ -72,5 +73,6 @@ func (c *Client) CreateProject(ctx context.Context, teamID string, request Creat
return r, fmt.Errorf("error getting environment variables: %w", err)
}
r.EnvironmentVariables = env
r.TeamID = c.teamID(teamID)
return r, err
}
4 changes: 2 additions & 2 deletions client/project_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import (
// remove every environment variable, as these cease to exist when a project is removed.
func (c *Client) DeleteProject(ctx context.Context, projectID, teamID string) error {
url := fmt.Sprintf("%s/v8/projects/%s", c.baseURL, projectID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}
req, err := http.NewRequestWithContext(
ctx,
Expand Down
5 changes: 3 additions & 2 deletions client/project_domain_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ type CreateProjectDomainRequest struct {
// CreateProjectDomain creates a project domain within Vercel.
func (c *Client) CreateProjectDomain(ctx context.Context, projectID, teamID string, request CreateProjectDomainRequest) (r ProjectDomainResponse, err error) {
url := fmt.Sprintf("%s/v8/projects/%s/domains", c.baseURL, projectID)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}

payload := string(mustMarshal(request))
Expand All @@ -43,5 +43,6 @@ func (c *Client) CreateProjectDomain(ctx context.Context, projectID, teamID stri
"payload": payload,
})
err = c.doRequest(req, &r)
r.TeamID = c.teamID(teamID)
return r, err
}
4 changes: 2 additions & 2 deletions client/project_domain_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (
// DeleteProjectDomain removes any association of a domain name with a Vercel project.
func (c *Client) DeleteProjectDomain(ctx context.Context, projectID, domain, teamID string) error {
url := fmt.Sprintf("%s/v8/projects/%s/domains/%s", c.baseURL, projectID, domain)
if teamID != "" {
url = fmt.Sprintf("%s?teamId=%s", url, teamID)
if c.teamID(teamID) != "" {
url = fmt.Sprintf("%s?teamId=%s", url, c.teamID(teamID))
}

req, err := http.NewRequestWithContext(
Expand Down
Loading