mirror of
				https://github.com/minio/minio.git
				synced 2025-10-29 15:55:00 -04: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. | ||||
| // Streaming signature clients can have custom content-encoding such as | ||||
| // `aws-chunked,gzip` here we need to only save `gzip`. | ||||
|  | ||||
| @ -449,13 +449,14 @@ func NewNotificationSys(config *serverConfig, endpoints EndpointList) *Notificat | ||||
| } | ||||
| 
 | ||||
| type eventArgs struct { | ||||
| 	EventName  event.Name | ||||
| 	BucketName string | ||||
| 	Object     ObjectInfo | ||||
| 	ReqParams  map[string]string | ||||
| 	Host       string | ||||
| 	Port       string | ||||
| 	UserAgent  string | ||||
| 	EventName    event.Name | ||||
| 	BucketName   string | ||||
| 	Object       ObjectInfo | ||||
| 	ReqParams    map[string]string | ||||
| 	RespElements map[string]string | ||||
| 	Host         string | ||||
| 	Port         string | ||||
| 	UserAgent    string | ||||
| } | ||||
| 
 | ||||
| // ToEvent - converts to notification event. | ||||
| @ -474,6 +475,13 @@ func (args eventArgs) ToEvent() event.Event { | ||||
| 	eventTime := UTCNow() | ||||
| 	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{ | ||||
| 		EventVersion:      "2.0", | ||||
| 		EventSource:       "minio:s3", | ||||
| @ -482,10 +490,7 @@ func (args eventArgs) ToEvent() event.Event { | ||||
| 		EventName:         args.EventName, | ||||
| 		UserIdentity:      event.Identity{creds.AccessKey}, | ||||
| 		RequestParameters: args.ReqParams, | ||||
| 		ResponseElements: map[string]string{ | ||||
| 			"x-amz-request-id":        uniqueID, | ||||
| 			"x-minio-origin-endpoint": getOriginEndpoint(), // Minio specific custom elements. | ||||
| 		}, | ||||
| 		ResponseElements:  respElements, | ||||
| 		S3: event.Metadata{ | ||||
| 			SchemaVersion:   "1.0", | ||||
| 			ConfigurationID: "Config", | ||||
|  | ||||
| @ -405,13 +405,14 @@ func (api objectAPIHandlers) GetObjectHandler(w http.ResponseWriter, r *http.Req | ||||
| 
 | ||||
| 	// Notify object accessed via a GET request. | ||||
| 	sendEvent(eventArgs{ | ||||
| 		EventName:  event.ObjectAccessedGet, | ||||
| 		BucketName: bucket, | ||||
| 		Object:     objInfo, | ||||
| 		ReqParams:  extractReqParams(r), | ||||
| 		UserAgent:  r.UserAgent(), | ||||
| 		Host:       host, | ||||
| 		Port:       port, | ||||
| 		EventName:    event.ObjectAccessedGet, | ||||
| 		BucketName:   bucket, | ||||
| 		Object:       objInfo, | ||||
| 		ReqParams:    extractReqParams(r), | ||||
| 		RespElements: extractRespElements(w), | ||||
| 		UserAgent:    r.UserAgent(), | ||||
| 		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. | ||||
| 	sendEvent(eventArgs{ | ||||
| 		EventName:  event.ObjectAccessedHead, | ||||
| 		BucketName: bucket, | ||||
| 		Object:     objInfo, | ||||
| 		ReqParams:  extractReqParams(r), | ||||
| 		UserAgent:  r.UserAgent(), | ||||
| 		Host:       host, | ||||
| 		Port:       port, | ||||
| 		EventName:    event.ObjectAccessedHead, | ||||
| 		BucketName:   bucket, | ||||
| 		Object:       objInfo, | ||||
| 		ReqParams:    extractReqParams(r), | ||||
| 		RespElements: extractRespElements(w), | ||||
| 		UserAgent:    r.UserAgent(), | ||||
| 		Host:         host, | ||||
| 		Port:         port, | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user