first commit
This commit is contained in:
parent
c09ba1f9b5
commit
278c611bab
5
.funcignore
Normal file
5
.funcignore
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
# Use the .funcignore file to exclude files which should not be
|
||||
# tracked in the image build. To instruct the system not to track
|
||||
# files in the image build, add the regex pattern or file information
|
||||
# to this file.
|
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
# Functions use the .func directory for local runtime data which should
|
||||
# generally not be tracked in source control. To instruct the system to track
|
||||
# .func in source control, comment the following line (prefix it with '# ').
|
||||
/.func
|
4
func.yaml
Normal file
4
func.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
specVersion: 0.35.0
|
||||
name: hello
|
||||
runtime: go
|
||||
created: 2023-12-07T19:54:11.056629+01:00
|
41
handle.go
Normal file
41
handle.go
Normal file
@ -0,0 +1,41 @@
|
||||
package function
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Handle an HTTP Request.
|
||||
func Handle(ctx context.Context, res http.ResponseWriter, req *http.Request) {
|
||||
/*
|
||||
* YOUR CODE HERE
|
||||
*
|
||||
* Try running `go test`. Add more test as you code in `handle_test.go`.
|
||||
*/
|
||||
|
||||
fmt.Println("Received request")
|
||||
fmt.Println(prettyPrint(req)) // echo to local output
|
||||
fmt.Fprintf(res, prettyPrint(req)) // echo to caller
|
||||
}
|
||||
|
||||
func prettyPrint(req *http.Request) string {
|
||||
b := &strings.Builder{}
|
||||
fmt.Fprintf(b, "%v %v %v %v\n", req.Method, req.URL, req.Proto, req.Host)
|
||||
for k, vv := range req.Header {
|
||||
for _, v := range vv {
|
||||
fmt.Fprintf(b, " %v: %v\n", k, v)
|
||||
}
|
||||
}
|
||||
|
||||
if req.Method == "POST" {
|
||||
req.ParseForm()
|
||||
fmt.Fprintln(b, "Body:")
|
||||
for k, v := range req.Form {
|
||||
fmt.Fprintf(b, " %v: %v\n", k, v)
|
||||
}
|
||||
}
|
||||
|
||||
return b.String()
|
||||
}
|
26
handle_test.go
Normal file
26
handle_test.go
Normal file
@ -0,0 +1,26 @@
|
||||
package function
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TestHandle ensures that Handle executes without error and returns the
|
||||
// HTTP 200 status code indicating no errors.
|
||||
func TestHandle(t *testing.T) {
|
||||
var (
|
||||
w = httptest.NewRecorder()
|
||||
req = httptest.NewRequest("GET", "http://example.com/test", nil)
|
||||
res *http.Response
|
||||
)
|
||||
|
||||
Handle(context.Background(), w, req)
|
||||
res = w.Result()
|
||||
defer res.Body.Close()
|
||||
|
||||
if res.StatusCode != 200 {
|
||||
t.Fatalf("unexpected response code: %v", res.StatusCode)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user