diff options
Diffstat (limited to 'aws')
| -rw-r--r-- | aws/main.go | 31 |
1 files changed, 6 insertions, 25 deletions
diff --git a/aws/main.go b/aws/main.go index b1dcc28..528f9b3 100644 --- a/aws/main.go +++ b/aws/main.go @@ -9,45 +9,26 @@ package main import ( "context" - "fmt" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" - "os" + "go.awhk.org/go-import-redirect/lib" + "net/http" "path" - "strings" ) -func getDest(dest, repo string) string { - dest = strings.TrimRight(dest, "/") - return fmt.Sprintf("%s/%s", dest, repo) -} - -func getRepo(pkg, prefix string) string { - prefix = strings.TrimRight(prefix, "/") - path := strings.TrimLeft(strings.TrimPrefix(pkg, prefix), "/") - return strings.Split(path, "/")[0] -} - func redirect(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { var ( pkg = path.Join(req.Headers["Host"], req.Path) - dest = getDest(os.Getenv("DEST"), getRepo(pkg, os.Getenv("PREFIX"))) - doc = fmt.Sprintf("https://godoc.org/%s", pkg) - vcs = os.Getenv("VCS") - body = fmt.Sprintf(`<!doctype html> -<meta name="go-import" content="%s %s %s"> -<title>go-import-redirect</title> -`, pkg, vcs, dest) resp = events.APIGatewayProxyResponse{ - Body: body, + Body: lib.GetBody(pkg), Headers: map[string]string{"Content-Type": "text/html; charset=utf-8"}, } ) if v, ok := req.QueryStringParameters["go-get"]; ok && v == "1" { - resp.StatusCode = 200 + resp.StatusCode = http.StatusOK } else { - resp.Headers["Location"] = doc - resp.StatusCode = 302 + resp.Headers["Location"] = "https://godoc.org/" + pkg + resp.StatusCode = http.StatusFound } return resp, nil } |
