commit
375d0a03a9
@ -0,0 +1,3 @@ |
|||||||
|
.idea |
||||||
|
.vscode |
||||||
|
tmp |
@ -0,0 +1,6 @@ |
|||||||
|
set -euxo pipefail |
||||||
|
|
||||||
|
mkdir -p "$(pwd)/functions" |
||||||
|
GOBIN=$(pwd)/functions go install ./... |
||||||
|
chmod +x "$(pwd)"/functions/* |
||||||
|
go env |
@ -0,0 +1,10 @@ |
|||||||
|
module app |
||||||
|
|
||||||
|
go 1.22.1 |
||||||
|
|
||||||
|
require github.com/apex/gateway v1.1.2 |
||||||
|
|
||||||
|
require ( |
||||||
|
github.com/aws/aws-lambda-go v1.17.0 // indirect |
||||||
|
github.com/pkg/errors v0.9.1 // indirect |
||||||
|
) |
@ -0,0 +1,27 @@ |
|||||||
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= |
||||||
|
github.com/apex/gateway v1.1.2 h1:OWyLov8eaau8YhkYKkRuOAYqiUhpBJalBR1o+3FzX+8= |
||||||
|
github.com/apex/gateway v1.1.2/go.mod h1:AMTkVbz5u5Hvd6QOGhhg0JUrNgCcLVu3XNJOGntdoB4= |
||||||
|
github.com/aws/aws-lambda-go v1.17.0 h1:Ogihmi8BnpmCNktKAGpNwSiILNNING1MiosnKUfU8m0= |
||||||
|
github.com/aws/aws-lambda-go v1.17.0/go.mod h1:FEwgPLE6+8wcGBTe5cJN3JWurd1Ztm9zN4jsXsjzKKw= |
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= |
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= |
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= |
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= |
||||||
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= |
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= |
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= |
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= |
||||||
|
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= |
||||||
|
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= |
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= |
||||||
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= |
||||||
|
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= |
||||||
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= |
||||||
|
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk= |
||||||
|
github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk= |
||||||
|
github.com/urfave/cli/v2 v2.1.1/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= |
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= |
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= |
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c h1:grhR+C34yXImVGp7EzNk+DTIk+323eIUWOmEevy6bDo= |
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
@ -0,0 +1,73 @@ |
|||||||
|
package main |
||||||
|
|
||||||
|
import ( |
||||||
|
"bytes" |
||||||
|
"flag" |
||||||
|
"fmt" |
||||||
|
"net/http" |
||||||
|
"strings" |
||||||
|
|
||||||
|
"github.com/apex/gateway" |
||||||
|
) |
||||||
|
|
||||||
|
var ( |
||||||
|
port = flag.Int("port", -1, "specify a port") |
||||||
|
) |
||||||
|
|
||||||
|
func main() { |
||||||
|
flag.Parse() |
||||||
|
|
||||||
|
listen := gateway.ListenAndServe |
||||||
|
|
||||||
|
addr := "n/a" |
||||||
|
if *port != -1 { |
||||||
|
addr = fmt.Sprintf(":%d", *port) |
||||||
|
listen = http.ListenAndServe |
||||||
|
} |
||||||
|
|
||||||
|
listen(addr, http.HandlerFunc(serve)) |
||||||
|
} |
||||||
|
|
||||||
|
func serve(w http.ResponseWriter, r *http.Request) { |
||||||
|
parts := strings.Split(r.RequestURI, "/")[1:] |
||||||
|
|
||||||
|
w.Header().Set("content-type", "text/html") |
||||||
|
|
||||||
|
if len(parts) != 1 { |
||||||
|
w.Write(notfound()) |
||||||
|
} else { |
||||||
|
w.Write(module(parts[0])) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func notfound() []byte { |
||||||
|
return []byte(`<!doctype html> |
||||||
|
<html lang="en-US"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8" /> |
||||||
|
<meta name="viewport" content="width=device-width" /> |
||||||
|
<title>zestack.dev</title> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<a href="https://slim.zestack.dev">https://slim.zestack.dev</a>
|
||||||
|
</body> |
||||||
|
</html>`) |
||||||
|
} |
||||||
|
|
||||||
|
func module(name string) []byte { |
||||||
|
bts := []byte(`<!doctype html> |
||||||
|
<html lang="en-US"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8" /> |
||||||
|
<meta name="viewport" content="width=device-width" /> |
||||||
|
<meta name="go-import" content="zestack.dev/{} git https://github.com/zestack/{}"> |
||||||
|
<meta name="go-source" content="zestack.dev/{} https://github.com/zestack/{} https://github.com/zestack/{}/tree/master{/dir} https://github.com/zestack/{}/blob/master{/dir}/{file}#L{line}"> |
||||||
|
<title>{} - zestack.dev</title> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<a href="https://slim.zestack.dev">https://slim.zestack.dev</a>
|
||||||
|
</body> |
||||||
|
</html>`) |
||||||
|
|
||||||
|
return bytes.ReplaceAll(bts, []byte("{}"), []byte(name)) |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
[build] |
||||||
|
command = "./build.sh" |
||||||
|
functions = "functions" |
||||||
|
publish = "dist" |
||||||
|
|
||||||
|
[context.production.environment] |
||||||
|
GOOS = "linux" |
||||||
|
GOARCH = "amd64" |
Loading…
Reference in new issue