mirror of
https://github.com/golang/go
synced 2024-11-18 15:24:41 -07:00
ee6b03148c
See bug for more details on exactly what was migrated. Notably: * No more Google-internal deployment scripts; see README.godoc-app and the Makefile for details. * Build tag "golangorg" is used for the godoc configuration used for golang.org. * Use of App Engine libraries replaced with GCP client libraries. * Redis is used to replace App Engine memcache. * Google analytics is controlled by an environment variable. * Regression tests have been migrated from Google-internal. * hg -> git hash map is moved from Google-internal. Updates golang/go#27205. Change-Id: Ia0a983f239c50eda8be2363494c8b784f60c2c6d Reviewed-on: https://go-review.googlesource.com/133355 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
// Copyright 2009 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.
|
|
|
|
// +build !golangorg
|
|
|
|
package main
|
|
|
|
import (
|
|
"errors"
|
|
"flag"
|
|
"io"
|
|
"log"
|
|
"net/http"
|
|
"net/url"
|
|
"os"
|
|
)
|
|
|
|
func handleRemoteSearch() {
|
|
// Command-line queries.
|
|
for i := 0; i < flag.NArg(); i++ {
|
|
res, err := remoteSearch(flag.Arg(i))
|
|
if err != nil {
|
|
log.Fatalf("remoteSearch: %s", err)
|
|
}
|
|
io.Copy(os.Stdout, res.Body)
|
|
}
|
|
return
|
|
}
|
|
|
|
// remoteSearchURL returns the search URL for a given query as needed by
|
|
// remoteSearch. If html is set, an html result is requested; otherwise
|
|
// the result is in textual form.
|
|
// Adjust this function as necessary if modeNames or FormValue parameters
|
|
// change.
|
|
func remoteSearchURL(query string, html bool) string {
|
|
s := "/search?m=text&q="
|
|
if html {
|
|
s = "/search?q="
|
|
}
|
|
return s + url.QueryEscape(query)
|
|
}
|
|
|
|
func remoteSearch(query string) (res *http.Response, err error) {
|
|
// list of addresses to try
|
|
var addrs []string
|
|
if *serverAddr != "" {
|
|
// explicit server address - only try this one
|
|
addrs = []string{*serverAddr}
|
|
} else {
|
|
addrs = []string{
|
|
defaultAddr,
|
|
"golang.org",
|
|
}
|
|
}
|
|
|
|
// remote search
|
|
search := remoteSearchURL(query, *html)
|
|
for _, addr := range addrs {
|
|
url := "http://" + addr + search
|
|
res, err = http.Get(url)
|
|
if err == nil && res.StatusCode == http.StatusOK {
|
|
break
|
|
}
|
|
}
|
|
|
|
if err == nil && res.StatusCode != http.StatusOK {
|
|
err = errors.New(res.Status)
|
|
}
|
|
|
|
return
|
|
}
|