@ -19,7 +19,6 @@ package cmd
import (
"fmt"
"net/http"
"strings"
"github.com/elazarl/go-bindata-assetfs"
"github.com/gorilla/handlers"
@ -57,7 +56,7 @@ func assetFS() *assetfs.AssetFS {
}
// specialAssets are files which are unique files not embedded inside index_bundle.js.
const specialAssets = ".* index_bundle.*.js$ |.* loader.css$ |.* logo.svg$ |.* firefox.png$ |.* safari.png$ |.* chrome.png$ |.* favicon.ico$ "
const specialAssets = "index_bundle.*.js|loader.css|logo.svg|firefox.png|safari.png|chrome.png|favicon.ico"
// registerWebRouter - registers web router for serving minio browser.
func registerWebRouter ( router * mux . Router ) error {
@ -92,21 +91,14 @@ func registerWebRouter(router *mux.Router) error {
webBrowserRouter . Methods ( "GET" ) . Path ( "/download/{bucket}/{object:.+}" ) . Queries ( "token" , "{token:.*}" ) . HandlerFunc ( httpTraceHdrs ( web . Download ) )
webBrowserRouter . Methods ( "POST" ) . Path ( "/zip" ) . Queries ( "token" , "{token:.*}" ) . HandlerFunc ( httpTraceHdrs ( web . DownloadZip ) )
// Add compression for assets.
h := http . FileServer ( assetFS ( ) )
compressedAssets := handlers . CompressHandler ( http . HandlerFunc ( func ( w http . ResponseWriter , r * http . Request ) {
idx := strings . LastIndex ( r . URL . Path , slashSeparator )
if idx != - 1 {
r . URL . Path = r . URL . Path [ idx + 1 : ]
}
h . ServeHTTP ( w , r )
} ) )
// Create compressed assets handler
compressAssets := handlers . CompressHandler ( http . StripPrefix ( minioReservedBucketPath , http . FileServer ( assetFS ( ) ) ) )
// Serve javascript files and favicon from assets.
webBrowserRouter . Path ( fmt . Sprintf ( "/{assets:%s}" , specialAssets ) ) . Handler ( compressed Assets )
webBrowserRouter . Path ( fmt . Sprintf ( "/{assets:%s}" , specialAssets ) ) . Handler ( compressAssets )
// Serve index.html for rest of the requests.
webBrowserRouter . Path ( "/{index:.*}" ) . Handler ( indexHandler { http . StripPrefix ( minioReservedBucketPath , h ) } )
// Serve index.html from assets for rest of the requests.
webBrowserRouter . Path ( "/{index:.*}" ) . Handler ( indexHandler { compressAssets } )
return nil
}