client/vcsroot.go (92 lines of code) (raw):

package client import ( "bytes" "encoding/json" "fmt" "net/http" "terraform-provider-teamcity/models" ) type VcsRoot struct { Name string `json:"name"` Id *string `json:"id"` VcsName string `json:"vcsName"` PollingInterval *int `json:"modificationCheckInterval,omitempty"` Project ProjectLocator `json:"project"` Properties models.Properties `json:"properties"` } func (c *Client) NewVcsRoot(p VcsRoot) (VcsRoot, error) { rb, err := json.Marshal(p) if err != nil { return VcsRoot{}, err } req, err := http.NewRequest("POST", fmt.Sprintf("%s/vcs-roots", c.RestURL), bytes.NewReader(rb)) if err != nil { return VcsRoot{}, err } body, err := c.doRequest(req) if err != nil { return VcsRoot{}, err } actual := VcsRoot{} err = json.Unmarshal(body, &actual) if err != nil { return VcsRoot{}, err } return actual, nil } func (c *Client) GetVcsRoot(id string) (*VcsRoot, error) { req, err := http.NewRequest("GET", fmt.Sprintf("%s/vcs-roots/id:%s", c.RestURL, id), nil) if err != nil { return nil, err } resp, err := c.request(req) if err != nil { return nil, err } if resp.StatusCode == http.StatusNotFound { return nil, nil } actual := VcsRoot{} err = json.Unmarshal(resp.Body, &actual) if err != nil { return nil, err } return &actual, nil } func (c *Client) DeleteVcsRoot(id string) error { req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/vcs-roots/id:%s", c.RestURL, id), nil) if err != nil { return err } _, err = c.doRequest(req) if err != nil { return err } return nil } func (c *Client) DetachVcsRoot(id string) error { req, err := http.NewRequest("GET", fmt.Sprintf("%s/buildTypes?locator=vcsRoot:%s", c.RestURL, id), nil) if err != nil { return err } resp, err := c.doRequest(req) if err != nil { return err } buildTypes := BuildTypes{} err = json.Unmarshal(resp, &buildTypes) if err != nil { return err } for _, buildType := range buildTypes.BuildType { req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/buildTypes/%s/vcs-root-entries/%s", c.RestURL, buildType.Id, id), nil) if err != nil { return err } _, err = c.doRequest(req) if err != nil { return err } } return nil }