aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/xanzy/go-gitlab/audit_events.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/xanzy/go-gitlab/audit_events.go')
-rw-r--r--vendor/github.com/xanzy/go-gitlab/audit_events.go158
1 files changed, 158 insertions, 0 deletions
diff --git a/vendor/github.com/xanzy/go-gitlab/audit_events.go b/vendor/github.com/xanzy/go-gitlab/audit_events.go
new file mode 100644
index 0000000000..f2ca08532c
--- /dev/null
+++ b/vendor/github.com/xanzy/go-gitlab/audit_events.go
@@ -0,0 +1,158 @@
+package gitlab
+
+import (
+ "fmt"
+ "net/http"
+ "time"
+)
+
+// AuditEvent represents an audit event for a group or project.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/audit_events.html
+type AuditEvent struct {
+ ID int `json:"id"`
+ AuthorID int `json:"author_id"`
+ EntityID int `json:"entity_id"`
+ EntityType string `json:"entity_type"`
+ Details AuditEventDetails `json:"details"`
+ CreatedAt *time.Time `json:"created_at"`
+}
+
+// AuditEventDetails represents the details portion of an audit event for
+// a group or project. The exact fields that are returned for an audit event
+// depend on the action being recorded.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/audit_events.html
+type AuditEventDetails struct {
+ With string `json:"with"`
+ Add string `json:"add"`
+ As string `json:"as"`
+ Change string `json:"change"`
+ From string `json:"from"`
+ To string `json:"to"`
+ Remove string `json:"remove"`
+ CustomMessage string `json:"custom_message"`
+ AuthorName string `json:"author_name"`
+ TargetID interface{} `json:"target_id"`
+ TargetType string `json:"target_type"`
+ TargetDetails string `json:"target_details"`
+ IPAddress string `json:"ip_address"`
+ EntityPath string `json:"entity_path"`
+}
+
+// AuditEventsService handles communication with the project/group audit
+// event related methods of the GitLab API.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/audit_events.html
+type AuditEventsService struct {
+ client *Client
+}
+
+// ListAuditEventsOptions represents the available ListProjectAuditEvents()
+// or ListGroupAuditEvents() options.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/audit_events.html
+type ListAuditEventsOptions struct {
+ ListOptions
+ CreatedAfter *time.Time `url:"created_after,omitempty" json:"created_after,omitempty"`
+ CreatedBefore *time.Time `url:"created_before,omitempty" json:"created_before,omitempty"`
+}
+
+// ListGroupAuditEvents gets a list of audit events for the specified group
+// viewable by the authenticated user.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/audit_events.html
+func (s *AuditEventsService) ListGroupAuditEvents(gid interface{}, opt *ListAuditEventsOptions, options ...RequestOptionFunc) ([]*AuditEvent, *Response, error) {
+ group, err := parseID(gid)
+ if err != nil {
+ return nil, nil, err
+ }
+ u := fmt.Sprintf("groups/%s/audit_events", pathEscape(group))
+
+ req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ var aes []*AuditEvent
+ resp, err := s.client.Do(req, &aes)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return aes, resp, err
+}
+
+// GetGroupAuditEvent gets a specific group audit event.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/audit_events.html
+func (s *AuditEventsService) GetGroupAuditEvent(gid interface{}, event int, options ...RequestOptionFunc) (*AuditEvent, *Response, error) {
+ group, err := parseID(gid)
+ if err != nil {
+ return nil, nil, err
+ }
+ u := fmt.Sprintf("groups/%s/audit_events/%d", pathEscape(group), event)
+
+ req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ ae := new(AuditEvent)
+ resp, err := s.client.Do(req, ae)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return ae, resp, err
+}
+
+// ListProjectAuditEvents gets a list of audit events for the specified project
+// viewable by the authenticated user.
+//
+// GitLab API docs: https://docs.gitlab.com/ee/api/audit_events.html
+func (s *AuditEventsService) ListProjectAuditEvents(pid interface{}, opt *ListAuditEventsOptions, options ...RequestOptionFunc) ([]*AuditEvent, *Response, error) {
+ project, err := parseID(pid)
+ if err != nil {
+ return nil, nil, err
+ }
+ u := fmt.Sprintf("projects/%s/audit_events", pathEscape(project))
+
+ req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ var aes []*AuditEvent
+ resp, err := s.client.Do(req, &aes)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return aes, resp, err
+}
+
+// GetProjectAuditEvent gets a specific project audit event.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/audit_events.html
+func (s *AuditEventsService) GetProjectAuditEvent(pid interface{}, event int, options ...RequestOptionFunc) (*AuditEvent, *Response, error) {
+ project, err := parseID(pid)
+ if err != nil {
+ return nil, nil, err
+ }
+ u := fmt.Sprintf("projects/%s/audit_events/%d", pathEscape(project), event)
+
+ req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ ae := new(AuditEvent)
+ resp, err := s.client.Do(req, ae)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return ae, resp, err
+}