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.79 to 0.9.80. - [Release notes](https://github.com/ktrysmt/go-bitbucket/releases) - [Commits](https://github.com/ktrysmt/go-bitbucket/compare/v0.9.79...v0.9.80) --- 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>
136 lines
3.3 KiB
Go
136 lines
3.3 KiB
Go
package bitbucket
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/mitchellh/mapstructure"
|
|
)
|
|
|
|
type Webhooks struct {
|
|
c *Client
|
|
}
|
|
|
|
type Webhook struct {
|
|
Owner string `json:"owner"`
|
|
RepoSlug string `json:"repo_slug"`
|
|
Uuid string `json:"uuid"`
|
|
Secret string `json:"secret"`
|
|
Description string `json:"description"`
|
|
Url string `json:"url"`
|
|
Active bool `json:"active"`
|
|
Events []string `json:"events"` // EX: {'repo:push','issue:created',..} REF: https://bit.ly/3FjRHHu
|
|
}
|
|
|
|
func decodeWebhook(response interface{}) (*Webhook, error) {
|
|
respMap := response.(map[string]interface{})
|
|
|
|
if respMap["type"] == "error" {
|
|
return nil, DecodeError(respMap)
|
|
}
|
|
|
|
var webhook = new(Webhook)
|
|
err := mapstructure.Decode(respMap, webhook)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return webhook, nil
|
|
}
|
|
|
|
func decodeWebhooks(response interface{}) ([]Webhook, error) {
|
|
webhooks := make([]Webhook, 0)
|
|
resMap := response.(map[string]interface{})
|
|
for _, v := range resMap["values"].([]interface{}) {
|
|
wh, err := decodeWebhook(v)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
webhooks = append(webhooks, *wh)
|
|
}
|
|
return webhooks, nil
|
|
}
|
|
|
|
func (r *Webhooks) buildWebhooksBody(ro *WebhooksOptions) (string, error) {
|
|
body := map[string]interface{}{}
|
|
|
|
if ro.Description != "" {
|
|
body["description"] = ro.Description
|
|
}
|
|
if ro.Url != "" {
|
|
body["url"] = ro.Url
|
|
}
|
|
if ro.Active == true || ro.Active == false {
|
|
body["active"] = ro.Active
|
|
}
|
|
if ro.Secret != "" {
|
|
body["secret"] = ro.Secret
|
|
}
|
|
|
|
body["events"] = ro.Events
|
|
|
|
data, err := json.Marshal(body)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(data), nil
|
|
}
|
|
|
|
func (r *Webhooks) List(ro *WebhooksOptions) ([]Webhook, error) {
|
|
urlStr := r.c.requestUrl("/repositories/%s/%s/hooks/", ro.Owner, ro.RepoSlug)
|
|
res, err := r.c.executePaginated("GET", urlStr, "", nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return decodeWebhooks(res)
|
|
}
|
|
|
|
// Deprecate Gets for List call
|
|
func (r *Webhooks) Gets(ro *WebhooksOptions) (interface{}, error) {
|
|
urlStr := r.c.requestUrl("/repositories/%s/%s/hooks/", ro.Owner, ro.RepoSlug)
|
|
return r.c.executePaginated("GET", urlStr, "", nil)
|
|
}
|
|
|
|
func (r *Webhooks) Create(ro *WebhooksOptions) (*Webhook, error) {
|
|
data, err := r.buildWebhooksBody(ro)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
urlStr := r.c.requestUrl("/repositories/%s/%s/hooks", ro.Owner, ro.RepoSlug)
|
|
response, err := r.c.executeWithContext("POST", urlStr, data, ro.ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return decodeWebhook(response)
|
|
}
|
|
|
|
func (r *Webhooks) Get(ro *WebhooksOptions) (*Webhook, error) {
|
|
urlStr := r.c.requestUrl("/repositories/%s/%s/hooks/%s", ro.Owner, ro.RepoSlug, ro.Uuid)
|
|
response, err := r.c.execute("GET", urlStr, "")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return decodeWebhook(response)
|
|
}
|
|
|
|
func (r *Webhooks) Update(ro *WebhooksOptions) (*Webhook, error) {
|
|
data, err := r.buildWebhooksBody(ro)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
urlStr := r.c.requestUrl("/repositories/%s/%s/hooks/%s", ro.Owner, ro.RepoSlug, ro.Uuid)
|
|
response, err := r.c.execute("PUT", urlStr, data)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return decodeWebhook(response)
|
|
}
|
|
|
|
func (r *Webhooks) Delete(ro *WebhooksOptions) (interface{}, error) {
|
|
urlStr := r.c.requestUrl("/repositories/%s/%s/hooks/%s", ro.Owner, ro.RepoSlug, ro.Uuid)
|
|
return r.c.execute("DELETE", urlStr, "")
|
|
}
|