mirror of
				https://github.com/traefik/traefik.git
				synced 2025-10-31 00:11:38 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			929 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			929 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package observability
 | |
| 
 | |
| import (
 | |
| 	"bufio"
 | |
| 	"net"
 | |
| 	"net/http"
 | |
| )
 | |
| 
 | |
| // newStatusCodeRecorder returns an initialized statusCodeRecoder.
 | |
| func newStatusCodeRecorder(rw http.ResponseWriter, status int) *statusCodeRecorder {
 | |
| 	return &statusCodeRecorder{rw, status}
 | |
| }
 | |
| 
 | |
| type statusCodeRecorder struct {
 | |
| 	http.ResponseWriter
 | |
| 	status int
 | |
| }
 | |
| 
 | |
| // WriteHeader captures the status code for later retrieval.
 | |
| func (s *statusCodeRecorder) WriteHeader(status int) {
 | |
| 	s.status = status
 | |
| 	s.ResponseWriter.WriteHeader(status)
 | |
| }
 | |
| 
 | |
| // Status get response status.
 | |
| func (s *statusCodeRecorder) Status() int {
 | |
| 	return s.status
 | |
| }
 | |
| 
 | |
| // Hijack hijacks the connection.
 | |
| func (s *statusCodeRecorder) Hijack() (net.Conn, *bufio.ReadWriter, error) {
 | |
| 	return s.ResponseWriter.(http.Hijacker).Hijack()
 | |
| }
 | |
| 
 | |
| // Flush sends any buffered data to the client.
 | |
| func (s *statusCodeRecorder) Flush() {
 | |
| 	if flusher, ok := s.ResponseWriter.(http.Flusher); ok {
 | |
| 		flusher.Flush()
 | |
| 	}
 | |
| }
 |