From 4a6cb44484d7c5eddd53896b6f9352925a4b2bc1 Mon Sep 17 00:00:00 2001 From: Gavin Bunney <409207+gavinbunney@users.noreply.github.com> Date: Tue, 14 Dec 2021 09:24:35 -0800 Subject: [PATCH] Fix webhook support --- bitbucket/provider.go | 1 + bitbucket/resource_repository_webhook.go | 29 ++++++++++++------------ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/bitbucket/provider.go b/bitbucket/provider.go index a2f7d84..ff43920 100644 --- a/bitbucket/provider.go +++ b/bitbucket/provider.go @@ -64,6 +64,7 @@ func Provider() terraform.ResourceProvider { "bitbucketserver_repository_hook": resourceRepositoryHook(), "bitbucketserver_repository_permissions_group": resourceRepositoryPermissionsGroup(), "bitbucketserver_repository_permissions_user": resourceRepositoryPermissionsUser(), + "bitbucketserver_repository_webhook": resourceRepositoryWebhook(), "bitbucketserver_user": resourceUser(), "bitbucketserver_user_access_token": resourceUserAccessToken(), "bitbucketserver_user_group": resourceUserGroup(), diff --git a/bitbucket/resource_repository_webhook.go b/bitbucket/resource_repository_webhook.go index 87893eb..096fedd 100644 --- a/bitbucket/resource_repository_webhook.go +++ b/bitbucket/resource_repository_webhook.go @@ -10,13 +10,13 @@ import ( ) type Webhook struct { - ID int `json:"id,omitempty"` - Name string `json:"name,omitempty"` - CreatedDate string `json:"createdDate,omitempty"` - UpdatedDate string `json:"updatedDate,omitempty"` - URL string `json:"url,omitempty"` - Active bool `json:"active,omitempty"` - Events []string `json:"events"` + ID int `json:"id,omitempty"` + Name string `json:"name,omitempty"` + CreatedDate jsonTime `json:"createdDate,omitempty"` + UpdatedDate jsonTime `json:"updatedDate,omitempty"` + URL string `json:"url,omitempty"` + Active bool `json:"active,omitempty"` + Events []interface{} `json:"events"` } type WebhookListResponse struct { @@ -31,8 +31,8 @@ func resourceRepositoryWebhook() *schema.Resource { return &schema.Resource{ Create: resourceRepositoryWebhookCreate, Update: resourceRepositoryWebhookUpdate, - Read: resourceRepositoryHookRead, - Delete: resourceRepositoryHookDelete, + Read: resourceRepositoryWebhookRead, + Delete: resourceRepositoryWebhookDelete, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, }, @@ -62,6 +62,7 @@ func resourceRepositoryWebhook() *schema.Resource { Type: schema.TypeList, Required: true, ForceNew: false, + Elem: &schema.Schema{Type: schema.TypeString}, }, "active": { Type: schema.TypeBool, @@ -169,10 +170,10 @@ func resourceRepositoryWebhookRead(d *schema.ResourceData, m interface{}) error func resourceRepositoryWebhookDelete(d *schema.ResourceData, m interface{}) error { client := m.(*BitbucketServerProvider).BitbucketClient - _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%s", + _, err := client.Delete(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%d", d.Get("project").(string), d.Get("repository").(string), - d.Get("webhook_id").(string))) + d.Get("webhook_id").(int))) return err } @@ -182,7 +183,7 @@ func newWebhookFromResource(d *schema.ResourceData) (Hook *Webhook) { Name: d.Get("name").(string), URL: d.Get("webhook_url").(string), Active: d.Get("active").(bool), - Events: d.Get("events").([]string), + Events: d.Get("events").([]interface{}), } return webhook @@ -191,11 +192,11 @@ func newWebhookFromResource(d *schema.ResourceData) (Hook *Webhook) { func getRepositoryWebhookFromId(d *schema.ResourceData, m interface{}) error { project := d.Get("project").(string) repository := d.Get("repository").(string) - id := d.Get("webhook_id").(string) + id := d.Get("webhook_id").(int) client := m.(*BitbucketServerProvider).BitbucketClient - resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%s", + resp, err := client.Get(fmt.Sprintf("/rest/api/1.0/projects/%s/repos/%s/webhooks/%d", project, repository, id,