2021-04-18 15:41:13 -04:00
|
|
|
// Copyright (c) 2015-2021 MinIO, Inc.
|
|
|
|
//
|
|
|
|
// This file is part of MinIO Object Storage stack
|
|
|
|
//
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
|
|
// (at your option) any later version.
|
|
|
|
//
|
|
|
|
// This program is distributed in the hope that it will be useful
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU Affero General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2018-03-15 16:03:41 -04:00
|
|
|
|
|
|
|
package event
|
|
|
|
|
2022-07-05 17:45:49 -04:00
|
|
|
import (
|
|
|
|
"github.com/minio/madmin-go"
|
|
|
|
)
|
|
|
|
|
2018-03-15 16:03:41 -04:00
|
|
|
const (
|
|
|
|
// NamespaceFormat - namespace log format used in some event targets.
|
|
|
|
NamespaceFormat = "namespace"
|
|
|
|
|
|
|
|
// AccessFormat - access log format used in some event targets.
|
|
|
|
AccessFormat = "access"
|
|
|
|
|
|
|
|
// AMZTimeFormat - event time format.
|
2020-05-25 19:51:32 -04:00
|
|
|
AMZTimeFormat = "2006-01-02T15:04:05.000Z"
|
2018-03-15 16:03:41 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
// Identity represents access key who caused the event.
|
|
|
|
type Identity struct {
|
|
|
|
PrincipalID string `json:"principalId"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Bucket represents bucket metadata of the event.
|
|
|
|
type Bucket struct {
|
|
|
|
Name string `json:"name"`
|
|
|
|
OwnerIdentity Identity `json:"ownerIdentity"`
|
|
|
|
ARN string `json:"arn"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Object represents object metadata of the event.
|
|
|
|
type Object struct {
|
|
|
|
Key string `json:"key"`
|
|
|
|
Size int64 `json:"size,omitempty"`
|
|
|
|
ETag string `json:"eTag,omitempty"`
|
|
|
|
ContentType string `json:"contentType,omitempty"`
|
|
|
|
UserMetadata map[string]string `json:"userMetadata,omitempty"`
|
|
|
|
VersionID string `json:"versionId,omitempty"`
|
|
|
|
Sequencer string `json:"sequencer"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Metadata represents event metadata.
|
|
|
|
type Metadata struct {
|
|
|
|
SchemaVersion string `json:"s3SchemaVersion"`
|
|
|
|
ConfigurationID string `json:"configurationId"`
|
|
|
|
Bucket Bucket `json:"bucket"`
|
|
|
|
Object Object `json:"object"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Source represents client information who triggered the event.
|
|
|
|
type Source struct {
|
|
|
|
Host string `json:"host"`
|
|
|
|
Port string `json:"port"`
|
|
|
|
UserAgent string `json:"userAgent"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Event represents event notification information defined in
|
|
|
|
// http://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html.
|
|
|
|
type Event struct {
|
|
|
|
EventVersion string `json:"eventVersion"`
|
|
|
|
EventSource string `json:"eventSource"`
|
|
|
|
AwsRegion string `json:"awsRegion"`
|
|
|
|
EventTime string `json:"eventTime"`
|
|
|
|
EventName Name `json:"eventName"`
|
|
|
|
UserIdentity Identity `json:"userIdentity"`
|
|
|
|
RequestParameters map[string]string `json:"requestParameters"`
|
|
|
|
ResponseElements map[string]string `json:"responseElements"`
|
|
|
|
S3 Metadata `json:"s3"`
|
|
|
|
Source Source `json:"source"`
|
2022-07-05 17:45:49 -04:00
|
|
|
Type madmin.TraceType `json:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Mask returns the type as mask.
|
|
|
|
func (e Event) Mask() uint64 {
|
|
|
|
return e.EventName.Mask()
|
2018-03-15 16:03:41 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
// Log represents event information for some event targets.
|
|
|
|
type Log struct {
|
|
|
|
EventName Name
|
|
|
|
Key string
|
|
|
|
Records []Event
|
|
|
|
}
|