fix examples

This commit is contained in:
syumai 2024-04-17 00:56:47 +09:00
parent 52a78e1789
commit ca4bfba6cc
12 changed files with 24 additions and 30 deletions

View File

@ -37,7 +37,6 @@ func (rw *responseWriter) ToHTTPResponse() *http.Response {
} }
func handler(w http.ResponseWriter, req *http.Request) { func handler(w http.ResponseWriter, req *http.Request) {
ctx := req.Context()
rw := responseWriter{ResponseWriter: w} rw := responseWriter{ResponseWriter: w}
c := cache.New() c := cache.New()
@ -64,7 +63,7 @@ func handler(w http.ResponseWriter, req *http.Request) {
rw.Write([]byte(text)) rw.Write([]byte(text))
// Create cache // Create cache
cloudflare.WaitUntil(ctx, func() { cloudflare.WaitUntil(func() {
err := c.Put(req, rw.ToHTTPResponse()) err := c.Put(req, rw.ToHTTPResponse())
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)

View File

@ -25,7 +25,7 @@ func NewArticleHandler() http.Handler {
func (h *articleHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { func (h *articleHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
// initialize DB. // initialize DB.
// D1 connector requires request's context to initialize DB. // D1 connector requires request's context to initialize DB.
c, err := d1.OpenConnector(req.Context(), "BlogDB") c, err := d1.OpenConnector("BlogDB")
if err != nil { if err != nil {
h.handleErr(w, http.StatusInternalServerError, fmt.Sprintf("failed to initialize DB: %v", err)) h.handleErr(w, http.StatusInternalServerError, fmt.Sprintf("failed to initialize DB: %v", err))
} }

View File

@ -12,10 +12,10 @@ func main() {
workers.Serve(&MyHandler{}) workers.Serve(&MyHandler{})
} }
type MyHandler struct {} type MyHandler struct{}
func (_ *MyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { func (_ *MyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
COUNTER, err := cloudflare.NewDurableObjectNamespace(req.Context(), "COUNTER") COUNTER, err := cloudflare.NewDurableObjectNamespace("COUNTER")
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -38,4 +38,3 @@ func (_ *MyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
w.Write([]byte("Durable object 'A' count: " + string(count))) w.Write([]byte("Durable object 'A' count: " + string(count)))
} }

View File

@ -10,7 +10,7 @@ import (
func main() { func main() {
handler := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { handler := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "MY_ENV: %s", cloudflare.Getenv(req.Context(), "MY_ENV")) fmt.Fprintf(w, "MY_ENV: %s", cloudflare.Getenv("MY_ENV"))
}) })
workers.Serve(handler) workers.Serve(handler)
} }

View File

@ -1,4 +1,4 @@
module github.com/syumai/workers/_examples/hello module github.com/syumai/workers/_examples/fetch-event
go 1.21.3 go 1.21.3

View File

@ -12,12 +12,10 @@ import (
) )
func handler(w http.ResponseWriter, req *http.Request) { func handler(w http.ResponseWriter, req *http.Request) {
ctx := req.Context() cloudflare.PassThroughOnException()
cloudflare.PassThroughOnException(ctx)
// logging after responding // logging after responding
cloudflare.WaitUntil(ctx, func() { cloudflare.WaitUntil(func() {
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
time.Sleep(time.Second) time.Sleep(time.Second)
} }

View File

@ -31,7 +31,7 @@ func main() {
} }
// initialize KV namespace instance // initialize KV namespace instance
kv, err := cloudflare.NewKVNamespace(req.Context(), counterNamespace) kv, err := cloudflare.NewKVNamespace(counterNamespace)
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "failed to init KV: %v", err) fmt.Fprintf(os.Stderr, "failed to init KV: %v", err)
os.Exit(1) os.Exit(1)

View File

@ -27,13 +27,13 @@ func NewArticleHandler() http.Handler {
func (h *articleHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { func (h *articleHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
// initialize DB. // initialize DB.
mysql.RegisterDialContext("tcp", func(_ context.Context, addr string) (net.Conn, error) { mysql.RegisterDialContext("tcp", func(ctx context.Context, addr string) (net.Conn, error) {
return sockets.Connect(req.Context(), addr, &sockets.SocketOptions{ return sockets.Connect(ctx, addr, &sockets.SocketOptions{
SecureTransport: sockets.SecureTransportOff, SecureTransport: sockets.SecureTransportOff,
}) })
}) })
db, err := sql.Open("mysql", db, err := sql.Open("mysql",
cloudflare.Getenv(req.Context(), "MYSQL_DSN")) cloudflare.Getenv("MYSQL_DSN"))
if err != nil { if err != nil {
log.Fatalf("failed to connect: %v", err) log.Fatalf("failed to connect: %v", err)
} }

View File

@ -1,7 +1,6 @@
package main package main
import ( import (
"context"
"fmt" "fmt"
"io" "io"
"log" "log"
@ -24,12 +23,12 @@ func handleErr(w http.ResponseWriter, msg string, err error) {
type server struct{} type server struct{}
func (s *server) bucket(ctx context.Context) (*cloudflare.R2Bucket, error) { func (s *server) bucket() (*cloudflare.R2Bucket, error) {
return cloudflare.NewR2Bucket(ctx, bucketName) return cloudflare.NewR2Bucket(bucketName)
} }
func (s *server) post(w http.ResponseWriter, req *http.Request, key string) { func (s *server) post(w http.ResponseWriter, req *http.Request, key string) {
bucket, err := s.bucket(req.Context()) bucket, err := s.bucket()
if err != nil { if err != nil {
handleErr(w, "failed to initialize R2Bucket\n", err) handleErr(w, "failed to initialize R2Bucket\n", err)
return return
@ -61,9 +60,9 @@ func (s *server) post(w http.ResponseWriter, req *http.Request, key string) {
w.Write([]byte("successfully uploaded image")) w.Write([]byte("successfully uploaded image"))
} }
func (s *server) get(w http.ResponseWriter, req *http.Request, key string) { func (s *server) get(w http.ResponseWriter, key string) {
// get image object from R2 // get image object from R2
bucket, err := s.bucket(req.Context()) bucket, err := s.bucket()
if err != nil { if err != nil {
handleErr(w, "failed to initialize R2Bucket\n", err) handleErr(w, "failed to initialize R2Bucket\n", err)
return return
@ -88,9 +87,9 @@ func (s *server) get(w http.ResponseWriter, req *http.Request, key string) {
io.Copy(w, imgObj.Body) io.Copy(w, imgObj.Body)
} }
func (s *server) delete(w http.ResponseWriter, req *http.Request, key string) { func (s *server) delete(w http.ResponseWriter, key string) {
// delete image object from R2 // delete image object from R2
bucket, err := s.bucket(req.Context()) bucket, err := s.bucket()
if err != nil { if err != nil {
handleErr(w, "failed to initialize R2Bucket\n", err) handleErr(w, "failed to initialize R2Bucket\n", err)
return return
@ -107,10 +106,10 @@ func (s *server) ServeHTTP(w http.ResponseWriter, req *http.Request) {
key := strings.TrimPrefix(req.URL.Path, "/") key := strings.TrimPrefix(req.URL.Path, "/")
switch req.Method { switch req.Method {
case "GET": case "GET":
s.get(w, req, key) s.get(w, key)
return return
case "DELETE": case "DELETE":
s.delete(w, req, key) s.delete(w, key)
return return
case "POST": case "POST":
s.post(w, req, key) s.post(w, req, key)

View File

@ -23,7 +23,7 @@ func handleErr(w http.ResponseWriter, msg string, err error) {
// This example is based on implementation in syumai/workers-playground // This example is based on implementation in syumai/workers-playground
// - https://github.com/syumai/workers-playground/blob/e32881648ccc055e3690a0d9c750a834261c333e/r2-image-viewer/src/index.ts#L30 // - https://github.com/syumai/workers-playground/blob/e32881648ccc055e3690a0d9c750a834261c333e/r2-image-viewer/src/index.ts#L30
func handler(w http.ResponseWriter, req *http.Request) { func handler(w http.ResponseWriter, req *http.Request) {
bucket, err := cloudflare.NewR2Bucket(req.Context(), bucketName) bucket, err := cloudflare.NewR2Bucket(bucketName)
if err != nil { if err != nil {
handleErr(w, "failed to get R2Bucket\n", err) handleErr(w, "failed to get R2Bucket\n", err)
return return

View File

@ -1,4 +1,4 @@
module github.com/syumai/workers/_examples/fetch module github.com/syumai/workers/_examples/service-bindings
go 1.21.3 go 1.21.3

View File

@ -12,8 +12,7 @@ import (
func main() { func main() {
handler := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { handler := http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
ctx := req.Context() bind := cloudflare.GetBinding("hello")
bind := cloudflare.GetBinding(ctx, "hello")
fc := fetch.NewClient(fetch.WithBinding(bind)) fc := fetch.NewClient(fetch.WithBinding(bind))
hc := fc.HTTPClient(fetch.RedirectModeFollow) hc := fc.HTTPClient(fetch.RedirectModeFollow)