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  }