mirror of
https://github.com/minio/minio.git
synced 2025-01-11 15:03:22 -05:00
Add content-length as part of event notification structure (#6341)
Fixes #6321
This commit is contained in:
parent
dafa5073cb
commit
add57a6938
@ -189,6 +189,15 @@ func extractReqParams(r *http.Request) map[string]string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Extract response elements to be sent with event notifiation.
|
||||||
|
func extractRespElements(w http.ResponseWriter) map[string]string {
|
||||||
|
|
||||||
|
return map[string]string{
|
||||||
|
"content-length": w.Header().Get("Content-Length"),
|
||||||
|
// Add more fields here.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Trims away `aws-chunked` from the content-encoding header if present.
|
// Trims away `aws-chunked` from the content-encoding header if present.
|
||||||
// Streaming signature clients can have custom content-encoding such as
|
// Streaming signature clients can have custom content-encoding such as
|
||||||
// `aws-chunked,gzip` here we need to only save `gzip`.
|
// `aws-chunked,gzip` here we need to only save `gzip`.
|
||||||
|
@ -449,13 +449,14 @@ func NewNotificationSys(config *serverConfig, endpoints EndpointList) *Notificat
|
|||||||
}
|
}
|
||||||
|
|
||||||
type eventArgs struct {
|
type eventArgs struct {
|
||||||
EventName event.Name
|
EventName event.Name
|
||||||
BucketName string
|
BucketName string
|
||||||
Object ObjectInfo
|
Object ObjectInfo
|
||||||
ReqParams map[string]string
|
ReqParams map[string]string
|
||||||
Host string
|
RespElements map[string]string
|
||||||
Port string
|
Host string
|
||||||
UserAgent string
|
Port string
|
||||||
|
UserAgent string
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToEvent - converts to notification event.
|
// ToEvent - converts to notification event.
|
||||||
@ -474,6 +475,13 @@ func (args eventArgs) ToEvent() event.Event {
|
|||||||
eventTime := UTCNow()
|
eventTime := UTCNow()
|
||||||
uniqueID := fmt.Sprintf("%X", eventTime.UnixNano())
|
uniqueID := fmt.Sprintf("%X", eventTime.UnixNano())
|
||||||
|
|
||||||
|
respElements := map[string]string{
|
||||||
|
"x-amz-request-id": uniqueID,
|
||||||
|
"x-minio-origin-endpoint": getOriginEndpoint(), // Minio specific custom elements.
|
||||||
|
}
|
||||||
|
if args.RespElements["content-length"] != "" {
|
||||||
|
respElements["content-length"] = args.RespElements["content-length"]
|
||||||
|
}
|
||||||
newEvent := event.Event{
|
newEvent := event.Event{
|
||||||
EventVersion: "2.0",
|
EventVersion: "2.0",
|
||||||
EventSource: "minio:s3",
|
EventSource: "minio:s3",
|
||||||
@ -482,10 +490,7 @@ func (args eventArgs) ToEvent() event.Event {
|
|||||||
EventName: args.EventName,
|
EventName: args.EventName,
|
||||||
UserIdentity: event.Identity{creds.AccessKey},
|
UserIdentity: event.Identity{creds.AccessKey},
|
||||||
RequestParameters: args.ReqParams,
|
RequestParameters: args.ReqParams,
|
||||||
ResponseElements: map[string]string{
|
ResponseElements: respElements,
|
||||||
"x-amz-request-id": uniqueID,
|
|
||||||
"x-minio-origin-endpoint": getOriginEndpoint(), // Minio specific custom elements.
|
|
||||||
},
|
|
||||||
S3: event.Metadata{
|
S3: event.Metadata{
|
||||||
SchemaVersion: "1.0",
|
SchemaVersion: "1.0",
|
||||||
ConfigurationID: "Config",
|
ConfigurationID: "Config",
|
||||||
|
@ -405,13 +405,14 @@ func (api objectAPIHandlers) GetObjectHandler(w http.ResponseWriter, r *http.Req
|
|||||||
|
|
||||||
// Notify object accessed via a GET request.
|
// Notify object accessed via a GET request.
|
||||||
sendEvent(eventArgs{
|
sendEvent(eventArgs{
|
||||||
EventName: event.ObjectAccessedGet,
|
EventName: event.ObjectAccessedGet,
|
||||||
BucketName: bucket,
|
BucketName: bucket,
|
||||||
Object: objInfo,
|
Object: objInfo,
|
||||||
ReqParams: extractReqParams(r),
|
ReqParams: extractReqParams(r),
|
||||||
UserAgent: r.UserAgent(),
|
RespElements: extractRespElements(w),
|
||||||
Host: host,
|
UserAgent: r.UserAgent(),
|
||||||
Port: port,
|
Host: host,
|
||||||
|
Port: port,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -509,13 +510,14 @@ func (api objectAPIHandlers) HeadObjectHandler(w http.ResponseWriter, r *http.Re
|
|||||||
|
|
||||||
// Notify object accessed via a HEAD request.
|
// Notify object accessed via a HEAD request.
|
||||||
sendEvent(eventArgs{
|
sendEvent(eventArgs{
|
||||||
EventName: event.ObjectAccessedHead,
|
EventName: event.ObjectAccessedHead,
|
||||||
BucketName: bucket,
|
BucketName: bucket,
|
||||||
Object: objInfo,
|
Object: objInfo,
|
||||||
ReqParams: extractReqParams(r),
|
ReqParams: extractReqParams(r),
|
||||||
UserAgent: r.UserAgent(),
|
RespElements: extractRespElements(w),
|
||||||
Host: host,
|
UserAgent: r.UserAgent(),
|
||||||
Port: port,
|
Host: host,
|
||||||
|
Port: port,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user