func (c *AssetConfig) buildAssetHandler() (http.Handler, error) { assets.RegisterMimeTypes() publicURL, err := url.Parse(c.Options.PublicURL) if err != nil { glog.Fatal(err) } assetFunc := assets.JoinAssetFuncs(assets.Asset, java.Asset) assetDirFunc := assets.JoinAssetDirFuncs(assets.AssetDir, java.AssetDir) handler := http.FileServer(&assetfs.AssetFS{Asset: assetFunc, AssetDir: assetDirFunc, Prefix: ""}) // Map of context roots (no leading or trailing slash) to the asset path to serve for requests to a missing asset subcontextMap := map[string]string{ "": "index.html", "java": "java/index.html", } handler, err = assets.HTML5ModeHandler(publicURL.Path, subcontextMap, handler, assetFunc) if err != nil { return nil, err } // Cache control should happen after all Vary headers are added, but before // any asset related routing (HTML5ModeHandler and FileServer) handler = assets.CacheControlHandler(version.Get().GitCommit, handler) // Gzip first so that inner handlers can react to the addition of the Vary header handler = assets.GzipHandler(handler) return handler, nil }
func (c *AssetConfig) buildHandler() (http.Handler, error) { assets.RegisterMimeTypes() masterURL, err := url.Parse(c.Options.MasterPublicURL) if err != nil { return nil, err } publicURL, err := url.Parse(c.Options.PublicURL) if err != nil { glog.Fatal(err) } config := assets.WebConsoleConfig{ MasterAddr: masterURL.Host, MasterPrefix: LegacyOpenShiftAPIPrefix, // TODO: change when the UI changes from v1beta3 to v1 KubernetesAddr: masterURL.Host, KubernetesPrefix: KubernetesAPIPrefix, OAuthAuthorizeURI: OpenShiftOAuthAuthorizeURL(masterURL.String()), OAuthRedirectBase: c.Options.PublicURL, OAuthClientID: OpenShiftWebConsoleClientID, LogoutURI: c.Options.LogoutURL, } handler := http.FileServer( &assetfs.AssetFS{ assets.Asset, assets.AssetDir, "", }, ) // Map of context roots (no leading or trailing slash) to the asset path to serve for requests to a missing asset subcontextMap := map[string]string{ "": "index.html", "java": "java/index.html", } handler, err = assets.HTML5ModeHandler(publicURL.Path, subcontextMap, handler) if err != nil { return nil, err } // Cache control should happen after all Vary headers are added, but before // any asset related routing (HTML5ModeHandler and FileServer) handler = assets.CacheControlHandler(version.Get().GitCommit, handler) // Generated config.js can not be cached since it changes depending on startup options handler = assets.GeneratedConfigHandler(config, handler) // Gzip first so that inner handlers can react to the addition of the Vary header handler = assets.GzipHandler(handler) return handler, nil }