internal/client/bitbucketserver.go (85 lines of code) (raw):
// Copyright (c) HashiCorp, Inc.
package client
import (
"encoding/json"
"errors"
"fmt"
"net/http"
"strings"
)
// GetBitbucketServerConnection - Returns bitbucket server connection.
func (c *Client) GetBitbucketServerConnection(id string) (*BitbucketServerConnection, error) {
req, err := http.NewRequest("GET", fmt.Sprintf("%s/plugins/bitbucket_server/connections/%s", c.HostURL, id), nil)
if err != nil {
return nil, err
}
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
connection := BitbucketServerConnection{}
err = json.Unmarshal(body, &connection)
if err != nil {
return nil, err
}
return &connection, nil
}
// CreateBitbucketServerConnection - Creates new bitbucket server connection.
func (c *Client) CreateBitbucketServerConnection(connection BitbucketServerConnection) (*BitbucketServerConnection, error) {
rb, err := json.Marshal(connection)
if err != nil {
return nil, err
}
req, err := http.NewRequest("POST", fmt.Sprintf("%s/plugins/bitbucket_server/connections", c.HostURL), strings.NewReader(string(rb)))
if err != nil {
return nil, err
}
req.Header.Add("content-type", "application/json")
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
createdConnection := BitbucketServerConnection{}
err = json.Unmarshal(body, &createdConnection)
if err != nil {
return nil, err
}
return &createdConnection, nil
}
// UpdateBitbucketServerConnection - Updates bitbucket server connection.
func (c *Client) UpdateBitbucketServerConnection(id string, connection BitbucketServerConnection) (*BitbucketServerConnection, error) {
rb, err := json.Marshal(connection)
if err != nil {
return nil, err
}
req, err := http.NewRequest("PATCH", fmt.Sprintf("%s/plugins/bitbucket_server/connections/%s", c.HostURL, id), strings.NewReader(string(rb)))
if err != nil {
return nil, err
}
req.Header.Add("content-type", "application/json")
body, err := c.doRequest(req)
if err != nil {
return nil, err
}
updatedConnection := BitbucketServerConnection{}
err = json.Unmarshal(body, &updatedConnection)
if err != nil {
return nil, err
}
return &updatedConnection, nil
}
// DeleteBitbucketServerConnection - Deletes an apikey.
func (c *Client) DeleteBitbucketServerConnection(id string) error {
req, err := http.NewRequest("DELETE", fmt.Sprintf("%s/api-keys/%s", c.HostURL, id), nil)
if err != nil {
return err
}
body, err := c.doRequest(req)
if err != nil {
return err
}
jsonBody := JsonBody{}
err = json.Unmarshal(body, &jsonBody)
if err != nil {
return err
}
if !jsonBody.Success {
return errors.New(jsonBody.Message)
}
return nil
}