mirror of
https://github.com/golang/go
synced 2024-11-19 04:04:47 -07:00
f2b3bb0049
A couple fixes: * Disable integration tests in short mode. * Remove import of "google.golang.org/appengine" package. App Engine has two ways to create an app: as a main package and calling appengine.Main(), and as any regular Go package with handlers registered in init(). Change-Id: Ib416111786c1c86cf428d91c60dc406c251d3ca1 Reviewed-on: https://go-review.googlesource.com/52211 Run-TryBot: Chris Broadfoot <cbro@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jaana Burcu Dogan <jbd@google.com>
62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
// Copyright 2017 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Command server serves get.golang.org, redirecting users to the appropriate
|
|
// getgo installer based on the request path.
|
|
package server
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
base = "https://storage.googleapis.com/golang/getgo/"
|
|
windowsInstaller = base + "installer.exe"
|
|
linuxInstaller = base + "installer_linux"
|
|
macInstaller = base + "installer_darwin"
|
|
)
|
|
|
|
// substring-based redirects.
|
|
var stringMatch = map[string]string{
|
|
// via uname, from bash
|
|
"MINGW": windowsInstaller, // Reported as MINGW64_NT-10.0 in git bash
|
|
"Linux": linuxInstaller,
|
|
"Darwin": macInstaller,
|
|
}
|
|
|
|
func init() {
|
|
http.HandleFunc("/", handler)
|
|
}
|
|
|
|
func handler(w http.ResponseWriter, r *http.Request) {
|
|
if containsIgnoreCase(r.URL.Path, "installer.exe") {
|
|
// cache bust
|
|
http.Redirect(w, r, windowsInstaller+cacheBust(), http.StatusFound)
|
|
return
|
|
}
|
|
|
|
for match, redirect := range stringMatch {
|
|
if containsIgnoreCase(r.URL.Path, match) {
|
|
http.Redirect(w, r, redirect, http.StatusFound)
|
|
return
|
|
}
|
|
}
|
|
|
|
http.NotFound(w, r)
|
|
}
|
|
|
|
func containsIgnoreCase(s, substr string) bool {
|
|
return strings.Contains(
|
|
strings.ToLower(s),
|
|
strings.ToLower(substr),
|
|
)
|
|
}
|
|
|
|
func cacheBust() string {
|
|
return fmt.Sprintf("?%d", time.Now().Nanosecond())
|
|
}
|