Add content-length as part of event notification structure (#6341)

Fixes #6321
master
kannappanr 6 years ago committed by GitHub
parent dafa5073cb
commit add57a6938
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      cmd/handler-utils.go
  2. 13
      cmd/notification.go
  3. 2
      cmd/object-handlers.go

@ -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`.

@ -453,6 +453,7 @@ type eventArgs struct {
BucketName string BucketName string
Object ObjectInfo Object ObjectInfo
ReqParams map[string]string ReqParams map[string]string
RespElements map[string]string
Host string Host string
Port string Port string
UserAgent string UserAgent string
@ -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",

@ -409,6 +409,7 @@ func (api objectAPIHandlers) GetObjectHandler(w http.ResponseWriter, r *http.Req
BucketName: bucket, BucketName: bucket,
Object: objInfo, Object: objInfo,
ReqParams: extractReqParams(r), ReqParams: extractReqParams(r),
RespElements: extractRespElements(w),
UserAgent: r.UserAgent(), UserAgent: r.UserAgent(),
Host: host, Host: host,
Port: port, Port: port,
@ -513,6 +514,7 @@ func (api objectAPIHandlers) HeadObjectHandler(w http.ResponseWriter, r *http.Re
BucketName: bucket, BucketName: bucket,
Object: objInfo, Object: objInfo,
ReqParams: extractReqParams(r), ReqParams: extractReqParams(r),
RespElements: extractRespElements(w),
UserAgent: r.UserAgent(), UserAgent: r.UserAgent(),
Host: host, Host: host,
Port: port, Port: port,

Loading…
Cancel
Save