Merge pull request #324 from garyburd/master
Follow redirect in search API
diff --git a/gddo-server/main.go b/gddo-server/main.go
index 486addd..464deb5 100644
--- a/gddo-server/main.go
+++ b/gddo-server/main.go
@@ -60,6 +60,7 @@
robotRequest
queryRequest
refreshRequest
+ apiRequest
)
type crawlResult struct {
@@ -84,7 +85,7 @@
needsCrawl := false
switch requestType {
- case queryRequest:
+ case queryRequest, apiRequest:
needsCrawl = nextCrawl.IsZero() && len(pkgs) == 0
case humanRequest:
needsCrawl = nextCrawl.Before(time.Now())
@@ -598,7 +599,10 @@
var pkgs []database.Package
if gosrc.IsValidRemotePath(q) || (strings.Contains(q, "/") && gosrc.IsGoRepoPath(q)) {
- pdoc, _, err := getDoc(q, robotRequest)
+ pdoc, _, err := getDoc(q, apiRequest)
+ if e, ok := err.(gosrc.NotFoundError); ok && e.Redirect != "" {
+ pdoc, _, err = getDoc(e.Redirect, robotRequest)
+ }
if err == nil && pdoc != nil {
pkgs = []database.Package{{Path: pdoc.ImportPath, Synopsis: pdoc.Synopsis}}
}