| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | // Copyright 2017 Manu Martinez-Almeida. All rights reserved.// Use of this source code is governed by a MIT style// license that can be found in the LICENSE file.package ginimport (	"net/http"	"os")type onlyFilesFS struct {	fs http.FileSystem}type neuteredReaddirFile struct {	http.File}// Dir returns a http.FileSystem that can be used by http.FileServer(). It is used internally// in router.Static().// if listDirectory == true, then it works the same as http.Dir() otherwise it returns// a filesystem that prevents http.FileServer() to list the directory files.func Dir(root string, listDirectory bool) http.FileSystem {	fs := http.Dir(root)	if listDirectory {		return fs	}	return &onlyFilesFS{fs}}// Open conforms to http.Filesystem.func (fs onlyFilesFS) Open(name string) (http.File, error) {	f, err := fs.fs.Open(name)	if err != nil {		return nil, err	}	return neuteredReaddirFile{f}, nil}// Readdir overrides the http.File default implementation.func (f neuteredReaddirFile) Readdir(_ int) ([]os.FileInfo, error) {	// this disables directory listing	return nil, nil}
 |