github.com/argoproj/argo-events@v1.9.1/eventsources/sources/gerrit/hook_util.go (about) 1 package gerrit 2 3 import ( 4 "fmt" 5 "net/url" 6 7 "github.com/andygrunwald/go-gerrit" 8 ) 9 10 func newGerritWebhookService(client *gerrit.Client) *gerritWebhookService { 11 return &gerritWebhookService{client: client} 12 } 13 14 // GerritWebhook contains functions for querying the API provided by the core webhook plugin. 15 // endpoints Refs: https://github.com/GerritCodeReview/plugins_webhooks/blob/master/src/main/resources/Documentation/rest-api-config.md 16 type gerritWebhookService struct { 17 client *gerrit.Client 18 } 19 20 func (g *gerritWebhookService) List(project string) (map[string]*ProjectHookConfigs, error) { 21 endpoints := fmt.Sprintf("/config/server/webhooks~projects/%s/remotes/", url.QueryEscape(project)) 22 req, err := g.client.NewRequest("GET", endpoints, nil) 23 if err != nil { 24 return nil, err 25 } 26 hooks := make(map[string]*ProjectHookConfigs) 27 _, err = g.client.Do(req, &hooks) 28 if err != nil { 29 return nil, err 30 } 31 return hooks, nil 32 } 33 34 func (g *gerritWebhookService) Get(project, remoteName string) (*ProjectHookConfigs, error) { 35 endpoints := fmt.Sprintf("/config/server/webhooks~projects/%s/remotes/%s/", url.QueryEscape(project), url.QueryEscape(remoteName)) 36 req, err := g.client.NewRequest("GET", endpoints, nil) 37 if err != nil { 38 return nil, err 39 } 40 hook := new(ProjectHookConfigs) 41 _, err = g.client.Do(req, hook) 42 if err != nil { 43 return nil, err 44 } 45 return hook, nil 46 } 47 48 func (g *gerritWebhookService) Create(project, remoteName string, hook *ProjectHookConfigs) (*ProjectHookConfigs, error) { 49 endpoints := fmt.Sprintf("/config/server/webhooks~projects/%s/remotes/%s/", url.QueryEscape(project), url.QueryEscape(remoteName)) 50 req, err := g.client.NewRequest("PUT", endpoints, hook) 51 if err != nil { 52 return nil, err 53 } 54 res := new(ProjectHookConfigs) 55 _, err = g.client.Do(req, res) 56 if err != nil { 57 return nil, err 58 } 59 return res, nil 60 } 61 62 func (g *gerritWebhookService) Delete(project, remoteName string) error { 63 endpoints := fmt.Sprintf("/config/server/webhooks~projects/%s/remotes/%s/", url.QueryEscape(project), url.QueryEscape(remoteName)) 64 req, err := g.client.NewRequest("DELETE", endpoints, nil) 65 if err != nil { 66 return err 67 } 68 _, err = g.client.Do(req, nil) 69 if err != nil { 70 return err 71 } 72 return nil 73 }