diff options
| author | Grégoire Duchêne <gduchene@awhk.org> | 2022-06-25 10:43:53 +0100 |
|---|---|---|
| committer | Grégoire Duchêne <gduchene@awhk.org> | 2022-06-25 10:43:53 +0100 |
| commit | 85e60b26336e9aa36c234df6f2c19fe49042185f (patch) | |
| tree | 28b100fd688ea6a5dd65707a064744c3c0c2c14e /main_aws.go | |
| parent | e47a7770f18283405b5fbfddc5c5490eca8080fb (diff) | |
Split the AWS version into its own module
This allows the rather large AWS Lambda SDK to only be fetched if the
command itself is being fetched.
Diffstat (limited to 'main_aws.go')
| -rw-r--r-- | main_aws.go | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/main_aws.go b/main_aws.go deleted file mode 100644 index 76cd5b9..0000000 --- a/main_aws.go +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-FileCopyrightText: © 2019 Grégoire Duchêne <gduchene@awhk.org> -// SPDX-License-Identifier: ISC - -//go:build aws && linux - -package main - -import ( - "context" - "net/http" - "os" - "path" - "regexp" - "strings" - - "github.com/aws/aws-lambda-go/events" - "github.com/aws/aws-lambda-go/lambda" - - "go.awhk.org/go-import-redirect/pkg/redirector" -) - -var transf = redirector.Transformer{ - Pattern: &redirector.Pattern{regexp.MustCompile(strings.ReplaceAll(os.Getenv("FROM"), `\\`, `\`))}, - Replacement: os.Getenv("TO"), - VCS: os.Getenv("VCS"), -} - -func redirect(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { - pkg := path.Join(req.Headers["Host"], req.Path) - - if !transf.Pattern.MatchString(pkg) { - return events.APIGatewayProxyResponse{StatusCode: http.StatusNotFound}, nil - } - - if v, ok := req.QueryStringParameters["go-get"]; !ok || v != "1" { - return events.APIGatewayProxyResponse{ - Headers: map[string]string{"Location": "https://pkg.go.dev/" + pkg}, - StatusCode: http.StatusFound, - }, nil - } - - data := redirector.TemplateData{ - Package: pkg, - Repository: transf.Pattern.ReplaceAllString(pkg, transf.Replacement), - VCS: transf.VCS, - } - var buf strings.Builder - if err := redirector.DefaultTemplate.Execute(&buf, data); err != nil { - return events.APIGatewayProxyResponse{}, err - } - return events.APIGatewayProxyResponse{ - Body: buf.String(), - Headers: map[string]string{"Content-Type": "text/html; charset=utf-8"}, - StatusCode: http.StatusOK, - }, nil -} - -func main() { - lambda.Start(redirect) -} |
