diff options
| author | Russ Cox <rsc@golang.org> | 2021-11-09 12:48:49 -0500 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2021-11-17 17:47:58 +0000 |
| commit | 4209fd81f5a925f19309bb3331347e5a5d98694c (patch) | |
| tree | 81004c10737ec536554c0045b934e692e9498d25 /cmd/golangorg/server.go | |
| parent | 0473aa5d479bcfc58e5769408c53b00a4a35bde1 (diff) | |
| download | go-x-website-4209fd81f5a925f19309bb3331347e5a5d98694c.tar.xz | |
internal/dl: make download page testable offline
Added a copy of the datastore content for use offline.
This lets us test download page rendering locally.
Preparation for the golang.org -> go.dev move.
Change-Id: Ic0c49a96329eed4310dd91e03c4ea832189ef65a
Reviewed-on: https://go-review.googlesource.com/c/website/+/362496
Trust: Russ Cox <rsc@golang.org>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
Diffstat (limited to 'cmd/golangorg/server.go')
| -rw-r--r-- | cmd/golangorg/server.go | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/cmd/golangorg/server.go b/cmd/golangorg/server.go index 0e396acd..0859deca 100644 --- a/cmd/golangorg/server.go +++ b/cmd/golangorg/server.go @@ -193,13 +193,8 @@ func NewHandler(contentDir, goroot string) http.Handler { io.WriteString(w, "User-agent: *\nDisallow: /search\n") }) - if runningOnAppEngine { - appEngineSetup(site, chinaSite, mux) - } - - // Register a redirect handler for /dl/ to the golang.org download page. + // Register a redirect handler for tip.golang.org/dl/ to the golang.org download page. // (golang.org/dl and golang.google.cn/dl are registered separately.) - mux.Handle("/dl/", http.RedirectHandler("https://golang.org/dl/", http.StatusFound)) mux.Handle("tip.golang.org/dl/", http.RedirectHandler("https://golang.org/dl/", http.StatusFound)) godev, err := godevHandler(godevFS) @@ -211,6 +206,12 @@ func NewHandler(contentDir, goroot string) http.Handler { mux.Handle("blog.golang.org/", redirectPrefix("https://go.dev/blog/")) mux.Handle("learn.go.dev/", redirectPrefix("https://go.dev/learn/")) + if runningOnAppEngine { + appEngineSetup(site, chinaSite, mux) + } + dl.RegisterHandlers(mux, site, "golang.org", datastoreClient, memcacheClient) + dl.RegisterHandlers(mux, chinaSite, "golang.google.cn", datastoreClient, memcacheClient) + var h http.Handler = mux h = hostEnforcerHandler(h) h = hostPathHandler(h) @@ -307,12 +308,16 @@ func watchTip1(tipGoroot *atomicFS) { } } +var datastoreClient *datastore.Client +var memcacheClient *memcache.Client + func appEngineSetup(site, chinaSite *web.Site, mux *http.ServeMux) { googleAnalytics = os.Getenv("GOLANGORG_ANALYTICS") ctx := context.Background() - datastoreClient, err := datastore.NewClient(ctx, "") + var err error + datastoreClient, err = datastore.NewClient(ctx, "") if err != nil { if strings.Contains(err.Error(), "missing project") { log.Fatalf("Missing datastore project. Set the DATASTORE_PROJECT_ID env variable. Use `gcloud beta emulators datastore` to start a local datastore.") @@ -324,10 +329,7 @@ func appEngineSetup(site, chinaSite *web.Site, mux *http.ServeMux) { if redisAddr == "" { log.Fatalf("Missing redis server for golangorg in production mode. set GOLANGORG_REDIS_ADDR environment variable.") } - memcacheClient := memcache.New(redisAddr) - - dl.RegisterHandlers(mux, site, "golang.org", datastoreClient, memcacheClient) - dl.RegisterHandlers(mux, chinaSite, "golang.google.cn", datastoreClient, memcacheClient) + memcacheClient = memcache.New(redisAddr) short.RegisterHandlers(mux, datastoreClient, memcacheClient) proxy.RegisterHandlers(mux, googleCN) |
