mirror of
				https://github.com/distribution/distribution.git
				synced 2025-11-04 11:53:18 +00:00 
			
		
		
		
	The goal is to free up the distribution/registry package to include common registry types. This moves the webapp definitions out of the way to allow for this change in the future. Signed-off-by: Stephen J Day <stephen.day@docker.com>
		
			
				
	
	
		
			33 lines
		
	
	
		
			807 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			807 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package handlers
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"io"
 | 
						|
	"net/http"
 | 
						|
)
 | 
						|
 | 
						|
// serveJSON marshals v and sets the content-type header to
 | 
						|
// 'application/json'. If a different status code is required, call
 | 
						|
// ResponseWriter.WriteHeader before this function.
 | 
						|
func serveJSON(w http.ResponseWriter, v interface{}) error {
 | 
						|
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
						|
	enc := json.NewEncoder(w)
 | 
						|
 | 
						|
	if err := enc.Encode(v); err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
// closeResources closes all the provided resources after running the target
 | 
						|
// handler.
 | 
						|
func closeResources(handler http.Handler, closers ...io.Closer) http.Handler {
 | 
						|
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 | 
						|
		for _, closer := range closers {
 | 
						|
			defer closer.Close()
 | 
						|
		}
 | 
						|
		handler.ServeHTTP(w, r)
 | 
						|
	})
 | 
						|
}
 |