Files
kubesphere/vendor/github.com/kubesphere/sonargo/sonar/webhooks_service.go
runzexia 5a6f51d775 devops tenant api
Signed-off-by: runzexia <runzexia@yunify.com>
2019-04-24 17:35:31 +08:00

185 lines
6.9 KiB
Go

// Webhooks allow to notify external services when a project analysis is done
package sonargo
import "net/http"
type WebhooksService struct {
client *Client
}
type WebhooksCreateObject struct {
Webhook *Webhook `json:"webhook,omitempty"`
}
type Webhook struct {
Key string `json:"key,omitempty"`
Name string `json:"name,omitempty"`
URL string `json:"url,omitempty"`
LatestDelivery *Delivery `json:"latestDelivery,omitempty"`
}
type WebhooksDeliveriesObject struct {
Deliveries []*Delivery `json:"deliveries,omitempty"`
Paging Paging `json:"paging,omitempty"`
}
type Delivery struct {
At string `json:"at,omitempty"`
CeTaskID string `json:"ceTaskId,omitempty"`
ComponentKey string `json:"componentKey,omitempty"`
DurationMs int64 `json:"durationMs,omitempty"`
HTTPStatus int64 `json:"httpStatus,omitempty"`
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Payload string `json:"payload,omitempty"`
Success bool `json:"success,omitempty"`
URL string `json:"url,omitempty"`
ErrorStackTrace string `json:"errorStacktrace,omitempty"`
}
type WebhooksDeliveryObject struct {
Delivery *Delivery `json:"delivery,omitempty"`
}
type WebhooksListObject struct {
Webhooks []*Webhook `json:"webhooks,omitempty"`
}
type WebhooksCreateOption struct {
Name string `url:"name,omitempty"` // Description:"Name displayed in the administration console of webhooks",ExampleValue:"My Webhook"
Project string `url:"project,omitempty"` // Description:"The key of the project that will own the webhook",ExampleValue:"my_project"
Url string `url:"url,omitempty"` // Description:"Server endpoint that will receive the webhook payload, for example 'http://my_server/foo'. If HTTP Basic authentication is used, HTTPS is recommended to avoid man in the middle attacks. Example: 'https://myLogin:myPassword@my_server/foo'",ExampleValue:"https://www.my-webhook-listener.com/sonar"
}
// Create Create a Webhook.<br>Requires 'Administer' permission on the specified project, or global 'Administer' permission.
func (s *WebhooksService) Create(opt *WebhooksCreateOption) (v *WebhooksCreateObject, resp *http.Response, err error) {
err = s.ValidateCreateOpt(opt)
if err != nil {
return
}
req, err := s.client.NewRequest("POST", "webhooks/create", opt)
if err != nil {
return
}
v = new(WebhooksCreateObject)
resp, err = s.client.Do(req, v)
if err != nil {
return nil, resp, err
}
return
}
type WebhooksDeleteOption struct {
Webhook string `url:"webhook,omitempty"` // Description:"The key of the webhook to be deleted,auto-generated value can be obtained through api/webhooks/create or api/webhooks/list",ExampleValue:"my_project"
}
// Delete Delete a Webhook.<br>Requires 'Administer' permission on the specified project, or global 'Administer' permission.
func (s *WebhooksService) Delete(opt *WebhooksDeleteOption) (resp *http.Response, err error) {
err = s.ValidateDeleteOpt(opt)
if err != nil {
return
}
req, err := s.client.NewRequest("POST", "webhooks/delete", opt)
if err != nil {
return
}
resp, err = s.client.Do(req, nil)
if err != nil {
return
}
return
}
type WebhooksDeliveriesOption struct {
CeTaskId string `url:"ceTaskId,omitempty"` // Description:"Id of the Compute Engine task",ExampleValue:"AU-Tpxb--iU5OvuD2FLy"
ComponentKey string `url:"componentKey,omitempty"` // Description:"Key of the project",ExampleValue:"my-project"
P string `url:"p,omitempty"` // Description:"1-based page number",ExampleValue:"42"
Ps string `url:"ps,omitempty"` // Description:"Page size. Must be greater than 0 and less than 500",ExampleValue:"20"
Webhook string `url:"webhook,omitempty"` // Description:"Key of the webhook that triggered those deliveries,auto-generated value that can be obtained through api/webhooks/create or api/webhooks/list",ExampleValue:"AU-TpxcA-iU5OvuD2FLz"
}
// Deliveries Get the recent deliveries for a specified project or Compute Engine task.<br/>Require 'Administer' permission on the related project.<br/>Note that additional information are returned by api/webhooks/delivery.
func (s *WebhooksService) Deliveries(opt *WebhooksDeliveriesOption) (v *WebhooksDeliveriesObject, resp *http.Response, err error) {
err = s.ValidateDeliveriesOpt(opt)
if err != nil {
return
}
req, err := s.client.NewRequest("GET", "webhooks/deliveries", opt)
if err != nil {
return
}
v = new(WebhooksDeliveriesObject)
resp, err = s.client.Do(req, v)
if err != nil {
return nil, resp, err
}
return
}
type WebhooksDeliveryOption struct {
DeliveryId string `url:"deliveryId,omitempty"` // Description:"Id of delivery",ExampleValue:"AU-TpxcA-iU5OvuD2FL3"
}
// Delivery Get a webhook delivery by its id.<br/>Require 'Administer System' permission.<br/>Note that additional information are returned by api/webhooks/delivery.
func (s *WebhooksService) Delivery(opt *WebhooksDeliveryOption) (v *WebhooksDeliveryObject, resp *http.Response, err error) {
err = s.ValidateDeliveryOpt(opt)
if err != nil {
return
}
req, err := s.client.NewRequest("GET", "webhooks/delivery", opt)
if err != nil {
return
}
v = new(WebhooksDeliveryObject)
resp, err = s.client.Do(req, v)
if err != nil {
return nil, resp, err
}
return
}
type WebhooksListOption struct {
Project string `url:"project,omitempty"` // Description:"Project key",ExampleValue:"my_project"
}
// List Search for global webhooks or project webhooks. Webhooks are ordered by name.<br>Requires 'Administer' permission on the specified project, or global 'Administer' permission.
func (s *WebhooksService) List(opt *WebhooksListOption) (v *WebhooksListObject, resp *http.Response, err error) {
err = s.ValidateListOpt(opt)
if err != nil {
return
}
req, err := s.client.NewRequest("GET", "webhooks/list", opt)
if err != nil {
return
}
v = new(WebhooksListObject)
resp, err = s.client.Do(req, v)
if err != nil {
return nil, resp, err
}
return
}
type WebhooksUpdateOption struct {
Name string `url:"name,omitempty"` // Description:"new name of the webhook",ExampleValue:"My Webhook"
Url string `url:"url,omitempty"` // Description:"new url to be called by the webhook",ExampleValue:"https://www.my-webhook-listener.com/sonar"
Webhook string `url:"webhook,omitempty"` // Description:"The key of the webhook to be updated,auto-generated value can be obtained through api/webhooks/create or api/webhooks/list",ExampleValue:"my_project"
}
// Update Update a Webhook.<br>Requires 'Administer' permission on the specified project, or global 'Administer' permission.
func (s *WebhooksService) Update(opt *WebhooksUpdateOption) (resp *http.Response, err error) {
err = s.ValidateUpdateOpt(opt)
if err != nil {
return
}
req, err := s.client.NewRequest("POST", "webhooks/update", opt)
if err != nil {
return
}
resp, err = s.client.Do(req, nil)
if err != nil {
return
}
return
}