mirror of
https://github.com/gabrie30/ghorg.git
synced 2025-08-10 08:17:10 +02:00
Bumps [github.com/ktrysmt/go-bitbucket](https://github.com/ktrysmt/go-bitbucket) from 0.9.80 to 0.9.81. - [Release notes](https://github.com/ktrysmt/go-bitbucket/releases) - [Commits](https://github.com/ktrysmt/go-bitbucket/compare/v0.9.80...v0.9.81) --- updated-dependencies: - dependency-name: github.com/ktrysmt/go-bitbucket dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: gabrie30 <gabrie30@users.noreply.github.com>
140 lines
3.1 KiB
Go
140 lines
3.1 KiB
Go
package bitbucket
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
|
|
"github.com/mitchellh/mapstructure"
|
|
)
|
|
|
|
type DeployKeys struct {
|
|
c *Client
|
|
}
|
|
|
|
type DeployKey struct {
|
|
Id int `json:"id"`
|
|
Label string `json:"label"`
|
|
Key string `json:"key"`
|
|
Comment string `json:"comment"`
|
|
}
|
|
|
|
type DeployKeysRes struct {
|
|
Page int32
|
|
Pagelen int32
|
|
MaxDepth int32
|
|
Size int32
|
|
Items []DeployKey
|
|
}
|
|
|
|
func decodeDeployKey(response interface{}) (*DeployKey, error) {
|
|
respMap := response.(map[string]interface{})
|
|
|
|
if respMap["type"] == "error" {
|
|
return nil, DecodeError(respMap)
|
|
}
|
|
|
|
var deployKey = new(DeployKey)
|
|
err := mapstructure.Decode(respMap, deployKey)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return deployKey, nil
|
|
}
|
|
|
|
func decodeDeployKeys(deployKeysResponse interface{}) (*DeployKeysRes, error) {
|
|
deployKeysResponseMap, ok := deployKeysResponse.(map[string]interface{})
|
|
if !ok {
|
|
return nil, errors.New("not a valid format")
|
|
}
|
|
|
|
repoArray := deployKeysResponseMap["values"].([]interface{})
|
|
var deployKeys []DeployKey
|
|
for _, deployKeyEntry := range repoArray {
|
|
var deployKey DeployKey
|
|
err := mapstructure.Decode(deployKeyEntry, &deployKey)
|
|
if err == nil {
|
|
deployKeys = append(deployKeys, deployKey)
|
|
}
|
|
}
|
|
|
|
page, ok := deployKeysResponseMap["page"].(float64)
|
|
if !ok {
|
|
page = 0
|
|
}
|
|
|
|
pagelen, ok := deployKeysResponseMap["pagelen"].(float64)
|
|
if !ok {
|
|
pagelen = 0
|
|
}
|
|
maxDepth, ok := deployKeysResponseMap["max_width"].(float64)
|
|
if !ok {
|
|
maxDepth = 0
|
|
}
|
|
size, ok := deployKeysResponseMap["size"].(float64)
|
|
if !ok {
|
|
size = 0
|
|
}
|
|
|
|
repositories := DeployKeysRes{
|
|
Page: int32(page),
|
|
Pagelen: int32(pagelen),
|
|
MaxDepth: int32(maxDepth),
|
|
Size: int32(size),
|
|
Items: deployKeys,
|
|
}
|
|
return &repositories, nil
|
|
}
|
|
|
|
func buildDeployKeysBody(opt *DeployKeyOptions) (string, error) {
|
|
body := map[string]interface{}{}
|
|
body["label"] = opt.Label
|
|
body["key"] = opt.Key
|
|
|
|
data, err := json.Marshal(body)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(data), nil
|
|
}
|
|
|
|
func (dk *DeployKeys) Create(opt *DeployKeyOptions) (*DeployKey, error) {
|
|
data, err := buildDeployKeysBody(opt)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
urlStr := dk.c.requestUrl("/repositories/%s/%s/deploy-keys", opt.Owner, opt.RepoSlug)
|
|
response, err := dk.c.executeWithContext("POST", urlStr, data, opt.ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return decodeDeployKey(response)
|
|
}
|
|
|
|
func (dk *DeployKeys) Get(opt *DeployKeyOptions) (*DeployKey, error) {
|
|
urlStr := dk.c.requestUrl("/repositories/%s/%s/deploy-keys/%d", opt.Owner, opt.RepoSlug, opt.Id)
|
|
response, err := dk.c.execute("GET", urlStr, "")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return decodeDeployKey(response)
|
|
}
|
|
|
|
func (dk *DeployKeys) Delete(opt *DeployKeyOptions) (interface{}, error) {
|
|
urlStr := dk.c.requestUrl("/repositories/%s/%s/deploy-keys/%d", opt.Owner, opt.RepoSlug, opt.Id)
|
|
return dk.c.execute("DELETE", urlStr, "")
|
|
}
|
|
|
|
func (dk *DeployKeys) List(opt *DeployKeyOptions) (*DeployKeysRes, error) {
|
|
urlStr := dk.c.requestUrl("/repositories/%s/%s/deploy-keys", opt.Owner, opt.RepoSlug)
|
|
response, err := dk.c.execute("GET", urlStr, "")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return decodeDeployKeys(response)
|
|
}
|