From 0726f6e1e194b3e7ebf8cb30b22061cbd6ca58bc Mon Sep 17 00:00:00 2001 From: Tim Holm Date: Mon, 23 Sep 2024 12:47:59 +1000 Subject: [PATCH 01/13] Update go docs and examples --- src/pages/apis.mdx | 72 +++++--------- .../guides/go/serverless-rest-api-example.mdx | 48 +++++----- src/pages/messaging.mdx | 14 +-- src/pages/reference/go/api/api-delete.mdx | 34 +++---- src/pages/reference/go/api/api-get.mdx | 28 +++--- src/pages/reference/go/api/api-patch.mdx | 34 +++---- src/pages/reference/go/api/api-post.mdx | 36 +++---- src/pages/reference/go/api/api-put.mdx | 34 +++---- src/pages/reference/go/api/api-route-all.mdx | 33 +++---- .../reference/go/api/api-route-delete.mdx | 33 +++---- src/pages/reference/go/api/api-route-get.mdx | 27 +++--- .../reference/go/api/api-route-patch.mdx | 33 +++---- src/pages/reference/go/api/api-route-post.mdx | 33 +++---- src/pages/reference/go/api/api-route-put.mdx | 33 +++---- src/pages/reference/go/api/api-route.mdx | 2 +- src/pages/reference/go/api/api.mdx | 10 +- .../reference/go/schedule/schedule-cron.mdx | 25 ++--- .../reference/go/schedule/schedule-every.mdx | 15 ++- src/pages/reference/go/schedule/schedule.mdx | 10 +- ...n-access.mdx => secret-access-version.mdx} | 11 ++- .../{secret-latest.mdx => secret-access.mdx} | 16 ++-- src/pages/reference/go/secrets/secret-put.mdx | 12 +-- .../reference/go/secrets/secret-version.mdx | 94 ------------------- src/pages/reference/go/secrets/secret.mdx | 5 +- ...cket-file-delete.mdx => bucket-delete.mdx} | 7 +- ...downloadurl.mdx => bucket-downloadurl.mdx} | 22 +++-- .../reference/go/storage/bucket-file.mdx | 47 ---------- ...{bucket-files.mdx => bucket-listfiles.mdx} | 11 +-- src/pages/reference/go/storage/bucket-on.mdx | 22 ++--- .../{bucket-file-read.mdx => bucket-read.mdx} | 9 +- ...ile-uploadurl.mdx => bucket-uploadurl.mdx} | 11 ++- ...bucket-file-write.mdx => bucket-write.mdx} | 7 +- src/pages/reference/go/storage/bucket.mdx | 12 +-- .../reference/go/topic/topic-publish.mdx | 38 ++------ .../reference/go/topic/topic-subscribe.mdx | 23 ++--- .../reference/go/websocket/websocket-on.mdx | 54 ++++------- src/pages/schedules.mdx | 27 ++---- src/pages/secrets.mdx | 16 ++-- src/pages/storage.mdx | 39 +++----- src/pages/websockets.mdx | 35 +++---- 40 files changed, 383 insertions(+), 689 deletions(-) rename src/pages/reference/go/secrets/{secret-version-access.mdx => secret-access-version.mdx} (81%) rename src/pages/reference/go/secrets/{secret-latest.mdx => secret-access.mdx} (75%) delete mode 100644 src/pages/reference/go/secrets/secret-version.mdx rename src/pages/reference/go/storage/{bucket-file-delete.mdx => bucket-delete.mdx} (83%) rename src/pages/reference/go/storage/{bucket-file-downloadurl.mdx => bucket-downloadurl.mdx} (70%) delete mode 100644 src/pages/reference/go/storage/bucket-file.mdx rename src/pages/reference/go/storage/{bucket-files.mdx => bucket-listfiles.mdx} (80%) rename src/pages/reference/go/storage/{bucket-file-read.mdx => bucket-read.mdx} (82%) rename src/pages/reference/go/storage/{bucket-file-uploadurl.mdx => bucket-uploadurl.mdx} (74%) rename src/pages/reference/go/storage/{bucket-file-write.mdx => bucket-write.mdx} (81%) diff --git a/src/pages/apis.mdx b/src/pages/apis.mdx index b80dc3218..1d930cc1e 100644 --- a/src/pages/apis.mdx +++ b/src/pages/apis.mdx @@ -43,7 +43,7 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -54,17 +54,13 @@ func main() { return } - galaxyApi.Get("/moon", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + galaxyApi.Get("/moon", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("that's no moon, it's a space station.") - - return next(ctx) }) if err := nitric.Run(); err != nil { fmt.Println(err) } - - fmt.Println("Service has started") } ``` @@ -128,7 +124,7 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" "github.com/your-org/your-repo/planets" ) @@ -140,25 +136,19 @@ func main() { return } - galaxyApi.Get("/planets", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + galaxyApi.Get("/planets", func(ctx *apis.Ctx) { ctx.Response.Headers = map[string][]string{"Content-Type": {"application/json"}} ctx.Response.Body = []byte(GetPlanetList()) - - return next(ctx) }) - galaxyApi.Post("/planets", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + galaxyApi.Post("/planets", func(ctx *apis.Ctx) { CreatePlanet(ctx.Request.Data()) ctx.Response.Status = 201 - - return next(ctx) }) if err := nitric.Run(); err != nil { fmt.Println(err) } - - fmt.Println("Service has started") } ``` @@ -222,7 +212,7 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" "github.com/your-org/your-repo/planets" ) @@ -235,19 +225,15 @@ func main() { } // create a dynamic route and extract the parameter `name` - galaxyApi.Get("/planets/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + galaxyApi.Get("/planets/:name", func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte(GetPlanet(name)) - - return next(ctx) }) if err := nitric.Run(); err != nil { fmt.Println(err) } - - fmt.Println("Service has started") } ``` @@ -290,11 +276,9 @@ async def find_alderaan(ctx): ```go // return a redirect response using status 301 -galaxyApi.Get("/planets/alderaan", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +galaxyApi.Get("/planets/alderaan", func(ctx *apis.Ctx) { ctx.Response.Status = 301 ctx.Response.Location = "https://example.org/debris/alderaan" - - return next(ctx) }) ``` @@ -552,15 +536,13 @@ async def get_planet(ctx): ```go // override top level security to remove security from this route -secureApi.Get("/planets/unsecured-planet", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +secureApi.Get("/planets/unsecured-planet", func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) // override top level security to require user.write scope to access -secureApi.Get("/planets/unsecured-planet", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +secureApi.Get("/planets/unsecured-planet", func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithSecurity(customRule([]string{"users:write"}))) ``` @@ -607,7 +589,7 @@ async def validate(ctx, nxt: HttpMiddleware): ``` ```go -func validate(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func validate(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*handler.HttpContext, error) { if ctx.Request.Headers()["content-type"] != nil { ctx.Response.Status = 400 ctx.Response.Body = []byte("header Content-Type is required") @@ -654,11 +636,11 @@ Nitric.run() import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func validate(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func validate(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { if ctx.Request.Headers()["content-type"] != nil { ctx.Response.Status = 400 ctx.Response.Body = []byte("header Content-Type is required") @@ -719,11 +701,11 @@ Route level middleware currently not supported in python import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func validate(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func validate(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { if ctx.Request.Headers()["content-type"] != nil { ctx.Response.Status = 400 ctx.Response.Body = []byte("header Content-Type is required") @@ -742,8 +724,8 @@ func main() { return } - customersApi.Get("/customers", handler.ComposeHttpMiddleware(validate, func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { - return next(ctx) + customersApi.Get("/customers", nitric.Compose(validate, func(ctx *apis.Ctx) { + // handle request })) if err := nitric.Run(); err != nil { @@ -917,7 +899,7 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -928,9 +910,8 @@ func main() { return } - accountsApi.Get("/users/:id", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + accountsApi.Get("/users/:id", func(ctx *apis.Ctx) { // your logic here - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -983,7 +964,7 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -994,9 +975,8 @@ func main() { return } - accountsApi.Get("/orgs/:id", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + accountsApi.Get("/orgs/:id", func(ctx *apis.Ctx) { // your logic here - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -1096,15 +1076,14 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" "github.com/your-org/your-repo/resources" ) func main() { - Resources.AccountsApi.Get("/users/:id", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + Resources.AccountsApi.Get("/users/:id", func(ctx *apis.Ctx) { // your logic here - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -1152,15 +1131,14 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" "github.com/your-org/your-repo/resources" ) func main() { - Resources.AccountsApi.Get("/orgs/:id", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + Resources.AccountsApi.Get("/orgs/:id", func(ctx *apis.Ctx) { // your logic here - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/guides/go/serverless-rest-api-example.mdx b/src/pages/guides/go/serverless-rest-api-example.mdx index 88a0e0385..d9b080ebf 100644 --- a/src/pages/guides/go/serverless-rest-api-example.mdx +++ b/src/pages/guides/go/serverless-rest-api-example.mdx @@ -90,7 +90,7 @@ import ( "fmt" "github.com/google/uuid" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -127,30 +127,28 @@ From here, let's add some features to that function that allow us to work with p ### Create profiles with POST ```go -profilesApi.Post("/profiles", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +profilesApi.Post("/profiles", func(ctx *apis.Ctx) error { id := uuid.New().String() var profileRequest map[string]interface{} err := json.Unmarshal(ctx.Request.Data(), &profileRequest) if err != nil { - return ctx, err + return err } err = profiles.Set(context.Background(), id, profileRequest) if err != nil { - return ctx, err + return err } ctx.Response.Body = []byte(id) - - return ctx, nil }) ``` ### Retrieve a profile with GET ```go -profilesApi.Get("/profiles/:id", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +profilesApi.Get("/profiles/:id", func(ctx *apis.Ctx) { id := ctx.Request.PathParams()["id"] profile, err := profiles.Get(context.Background(), id) @@ -158,29 +156,27 @@ profilesApi.Get("/profiles/:id", func(ctx *handler.HttpContext, next handler.Htt ctx.Response.Status = 404 ctx.Response.Body = []byte(fmt.Sprintf("profile with id '%s' not found", id)) - return ctx, nil + return } ctx.Response.Body, err = json.Marshal(profile) - - return ctx, err }) ``` ### List all profiles with GET ```go -profilesApi.Get("/profiles", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +profilesApi.Get("/profiles", func(ctx *apis.Ctx) error { keys, err := profiles.Keys(context.TODO()) if err != nil { - return ctx, err + return err } var profileContent []map[string]interface{} for { key, err := keys.Recv() if err != nil { - break + return err } content, _ := profiles.Get(context.Background(), key) profileContent = append(profileContent, content) @@ -188,14 +184,14 @@ profilesApi.Get("/profiles", func(ctx *handler.HttpContext, next handler.HttpHan ctx.Response.Body, err = json.Marshal(profileContent) - return ctx, err + return err }) ``` ### Remove a profile with DELETE ```go -profilesApi.Delete("/profiles/:id", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +profilesApi.Delete("/profiles/:id", func(ctx *apis.Ctx) { id := ctx.Request.PathParams()["id"] err := profiles.Delete(context.Background(), id) @@ -203,10 +199,8 @@ profilesApi.Delete("/profiles/:id", func(ctx *handler.HttpContext, next handler. ctx.Response.Status = 404 ctx.Response.Body = []byte(fmt.Sprintf("profile with id '%s' not found", id)) - return ctx, nil + return } - - return ctx, nil }) ``` @@ -313,55 +307,55 @@ if err != nil { ### Get a URL to upload a profile image ```go -profilesApi.Get("/profiles/:id/image/upload", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +profilesApi.Get("/profiles/:id/image/upload", func(ctx *apis.Ctx) error { id := ctx.Request.PathParams()["id"] photoId := fmt.Sprintf("images/%s/photo.png", id) photoUrl, err := profileImages.File(photoId).UploadUrl(context.TODO(), 600) if err != nil { - return ctx, err + return err } ctx.Response.Body = []byte(photoUrl) - return ctx, nil + return nil }) ``` ### Get a URL to download a profile image ```go -profilesApi.Get("/profiles/:id/image/download", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +profilesApi.Get("/profiles/:id/image/download", func(ctx *apis.Ctx) error { id := ctx.Request.PathParams()["id"] photoId := fmt.Sprintf("images/%s/photo.png", id) photoUrl, err := profileImages.File(photoId).DownloadUrl(context.TODO(), 600) if err != nil { - return ctx, err + return err } ctx.Response.Body = []byte(photoUrl) - return ctx, nil + return nil }) ``` You can also directly redirect to the photo URL. ```go -profilesApi.Get("/profiles/:id/image/view", func(ctx *faas.HttpContext, next faas.HttpHandler) (*faas.HttpContext, error) { +profilesApi.Get("/profiles/:id/image/view", func(ctx *apis.Ctx) error { id := ctx.Request.PathParams()["id"] photoId := fmt.Sprintf("images/%s/photo.png", id) photoUrl, err := profileImages.File(photoId).DownloadUrl(ctx.Request.Context(), 600) if err != nil { - return ctx, err + return err } ctx.Response.Status = 303 ctx.Response.Headers["Location"] = []string{photoUrl} - return ctx, nil + return nil }) ``` diff --git a/src/pages/messaging.mdx b/src/pages/messaging.mdx index c781732d1..3ab08cda4 100644 --- a/src/pages/messaging.mdx +++ b/src/pages/messaging.mdx @@ -174,7 +174,7 @@ Nitric.run() import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/topics" "github.com/nitrictech/go-sdk/nitric" "github.com/your-org/your-project/common" ) @@ -182,12 +182,10 @@ import ( func main() { userCreatedTopic := nitric.NewTopic("user-created") - userCreatedTopic.Subscribe(func(ctx *handler.MessageContext, next handler.MessageHandler) (*handler.MessageContext, error) { + userCreatedTopic.Subscribe(func(ctx *topics.Ctx) { email := ctx.Request.Message()["email"].(string) sendWelcomeEmail(email) - - return ctx, nil }) if err := nitric.Run(); err != nil { @@ -274,7 +272,7 @@ Nitric.run() import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/topics" "github.com/nitrictech/go-sdk/nitric" "github.com/your-org/your-project/common" ) @@ -282,15 +280,13 @@ import ( func main() { userCreatedTopic := nitric.NewTopic("updates") - userCreatedTopic.Subscribe(func(ctx *handler.MessageContext, next handler.MessageHandler) (*handler.MessageContext, error) { + userCreatedTopic.Subscribe(func(ctx *topics.Ctx) { if common.isDuplicate(ctx.Request) { - return ctx, nil + return } // not a duplicate, process the event // ... - - return ctx, nil }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-delete.mdx b/src/pages/reference/go/api/api-delete.mdx index c38b07bfd..9f5695dee 100644 --- a/src/pages/reference/go/api/api-delete.mdx +++ b/src/pages/reference/go/api/api-delete.mdx @@ -14,7 +14,7 @@ Register an API route and set a specific HTTP DELETE handler on that route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -24,9 +24,8 @@ func main() { return } - api.Delete("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Delete("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -44,9 +43,9 @@ func main() { that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -77,19 +76,17 @@ func main() { ### Register a handler for DELETE requests ```go -api.Delete("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Delete("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.Delete("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Delete("/hello/:name", func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` @@ -99,7 +96,7 @@ api.Delete("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandl import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -114,9 +111,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Delete("/public", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + secureApi.Delete("/public", func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -133,16 +129,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -154,7 +150,7 @@ func main() { return } - api.Delete("/hello/:name", handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.Delete("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -170,7 +166,7 @@ The DELETE request body is accessible using `ctx.Request.Data()`. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -180,12 +176,10 @@ func main() { return } - api.Delete("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Delete("/hello", func(ctx *apis.Ctx) { data := ctx.Request.Data() ctx.Response.Body = data - - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-get.mdx b/src/pages/reference/go/api/api-get.mdx index 32b4caeca..4455b2afc 100644 --- a/src/pages/reference/go/api/api-get.mdx +++ b/src/pages/reference/go/api/api-get.mdx @@ -14,7 +14,7 @@ Register an API route and set a specific HTTP GET handler on that route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -24,9 +24,8 @@ func main() { return } - api.Get("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Get("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -44,9 +43,9 @@ func main() { that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -77,19 +76,17 @@ func main() { ### Register a handler for GET requests ```go -api.Get("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Get("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.Get("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Get("/hello/:name", func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` @@ -99,7 +96,7 @@ api.Get("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -114,9 +111,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Get("/public", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + secureApi.Get("/public", func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -133,16 +129,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -154,7 +150,7 @@ func main() { return } - api.Get("/hello/:name", handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.Get("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) diff --git a/src/pages/reference/go/api/api-patch.mdx b/src/pages/reference/go/api/api-patch.mdx index 63857e639..7062e6396 100644 --- a/src/pages/reference/go/api/api-patch.mdx +++ b/src/pages/reference/go/api/api-patch.mdx @@ -14,7 +14,7 @@ Register an API route and set a specific HTTP PATCH handler on that route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -24,9 +24,8 @@ func main() { return } - api.Patch("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Patch("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -44,9 +43,9 @@ func main() { that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -77,19 +76,17 @@ func main() { ### Register a handler for PATCH requests ```go -api.Patch("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Patch("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.Patch("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Patch("/hello/:name", func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` @@ -99,7 +96,7 @@ api.Patch("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandle import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -114,9 +111,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Patch("/public", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + secureApi.Patch("/public", func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -133,16 +129,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -154,7 +150,7 @@ func main() { return } - api.Patch("/hello/:name", handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.Patch("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -170,7 +166,7 @@ The PATCH request body is accessible using `ctx.Request.Data()`. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -180,12 +176,10 @@ func main() { return } - api.Patch("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Patch("/hello", func(ctx *apis.Ctx) { data := ctx.Request.Data() ctx.Response.Body = data - - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-post.mdx b/src/pages/reference/go/api/api-post.mdx index 4c2f67fe0..5ed63edf7 100644 --- a/src/pages/reference/go/api/api-post.mdx +++ b/src/pages/reference/go/api/api-post.mdx @@ -14,7 +14,7 @@ Register an API route and set a specific HTTP POST handler on that route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -24,9 +24,8 @@ func main() { return } - api.Post("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Post("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -44,9 +43,9 @@ func main() { that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -77,29 +76,27 @@ func main() { ### Register a handler for POST requests ```go -api.Post("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Post("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.Post("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Post("/hello/:name", func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` ### Create a route with no method security ```go - import ( +import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -114,9 +111,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Post("/public", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + secureApi.Post("/public", func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -133,16 +129,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -154,7 +150,7 @@ func main() { return } - api.Post("/hello/:name", handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.Post("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -170,7 +166,7 @@ The POST request body is accessible using `ctx.Request.Data()`. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -180,12 +176,10 @@ func main() { return } - api.Post("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Post("/hello", func(ctx *apis.Ctx) { data := ctx.Request.Data() ctx.Response.Body = data - - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-put.mdx b/src/pages/reference/go/api/api-put.mdx index 6ad718713..a76ac9979 100644 --- a/src/pages/reference/go/api/api-put.mdx +++ b/src/pages/reference/go/api/api-put.mdx @@ -14,7 +14,7 @@ Register an API route and set a specific HTTP PUT handler on that route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -24,9 +24,8 @@ func main() { return } - api.Put("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Put("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -44,9 +43,9 @@ func main() { that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -77,19 +76,17 @@ func main() { ### Register a handler for PUT requests ```go -api.Put("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Put("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.Put("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.Put("/hello/:name", func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` @@ -99,7 +96,7 @@ api.Put("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -114,9 +111,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Put("/public", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + secureApi.Put("/public", func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -133,16 +129,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -154,7 +150,7 @@ func main() { return } - api.Put("/hello/:name", handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.Put("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -170,7 +166,7 @@ The PUT request body is accessible using `ctx.Request.Data()`. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -180,12 +176,10 @@ func main() { return } - api.Put("/hello", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Put("/hello", func(ctx *apis.Ctx) { data := ctx.Request.Data() ctx.Response.Body = data - - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-route-all.mdx b/src/pages/reference/go/api/api-route-all.mdx index 08efa05ee..05d2353a4 100644 --- a/src/pages/reference/go/api/api-route-all.mdx +++ b/src/pages/reference/go/api/api-route-all.mdx @@ -9,7 +9,7 @@ Register a single handler for all HTTP Methods (GET, POST, PUT, DELETE, PATCH) o import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -19,9 +19,8 @@ func main() { return } - customersRoute.All(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + customersRoute.All(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -33,9 +32,9 @@ func main() { ## Parameters - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. @@ -66,7 +65,7 @@ When using the `all()` method to register a single function as the handler for a import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -76,12 +75,11 @@ func main() { return } - customersRoute.All(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + customersRoute.All(func(ctx *apis.Ctx) { /* handle all requests */ - return next(ctx) }) - customersRoute.Get(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + customersRoute.Get(func(ctx *apis.Ctx) { /* this handler won't work */ }) @@ -99,7 +97,7 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -109,9 +107,8 @@ func main() { return } - customersRoute.All(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + customersRoute.All(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -128,16 +125,16 @@ When multiple services are provided they will be called as a chain. If one succe import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -149,7 +146,7 @@ func main() { return } - customersRoute.All(handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + customersRoute.All(nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -175,12 +172,10 @@ func main() { return } - customersRoute.All(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + customersRoute.All(func(ctx *apis.Ctx) { data := ctx.Request.Data() ctx.Response.Body = data - - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-route-delete.mdx b/src/pages/reference/go/api/api-route-delete.mdx index 3bfa1d9b8..3ed16bfe3 100644 --- a/src/pages/reference/go/api/api-route-delete.mdx +++ b/src/pages/reference/go/api/api-route-delete.mdx @@ -9,7 +9,7 @@ Register a handler for HTTP DELETE requests to the route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -19,9 +19,8 @@ func main() { return } - api.NewRoute("/hello").Delete(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/hello").Delete(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -33,9 +32,9 @@ func main() { ## Parameters - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -66,19 +65,17 @@ func main() { ### Register a handler for DELETE requests ```go -api.NewRoute("/hello").Delete(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello").Delete(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.NewRoute("/hello/:name").Delete(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello/:name").Delete(func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` @@ -89,6 +86,7 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { @@ -102,9 +100,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Delete(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/public").Delete(func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -121,16 +118,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -142,7 +139,7 @@ func main() { return } - api.NewRoute("/hello/:name").Delete(handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.NewRoute("/hello/:name").Delete(nitric.Compose(authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -158,7 +155,7 @@ The DELETE request body is accessible using `ctx.Request.Data()`. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -168,12 +165,10 @@ func main() { return } - api.NewRoute("/hello").Delete(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/hello").Delete(func(ctx *apis.Ctx) { data := ctx.Request.Data() ctx.Response.Body = data - - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-route-get.mdx b/src/pages/reference/go/api/api-route-get.mdx index dca3f88f5..a3e292993 100644 --- a/src/pages/reference/go/api/api-route-get.mdx +++ b/src/pages/reference/go/api/api-route-get.mdx @@ -9,7 +9,7 @@ Register a handler for HTTP GET requests to the route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -19,9 +19,8 @@ func main() { return } - api.NewRoute("/hello").Get(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/hello").Get(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -33,9 +32,9 @@ func main() { ## Parameters - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -66,19 +65,17 @@ func main() { ### Register a handler for GET requests ```go -api.NewRoute("/hello").Get(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello").Get(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.NewRoute("/hello/:name").Get(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello/:name").Get(func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` @@ -89,6 +86,7 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { @@ -102,9 +100,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Get(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/public").Get(func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -121,16 +118,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -142,7 +139,7 @@ func main() { return } - api.NewRoute("/hello/:name").Get(handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.NewRoute("/hello/:name").Get(nitric.Compose(authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) diff --git a/src/pages/reference/go/api/api-route-patch.mdx b/src/pages/reference/go/api/api-route-patch.mdx index 09d7f72f5..061982a10 100644 --- a/src/pages/reference/go/api/api-route-patch.mdx +++ b/src/pages/reference/go/api/api-route-patch.mdx @@ -9,7 +9,7 @@ Register a handler for HTTP PATCH requests to the route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -19,9 +19,8 @@ func main() { return } - api.NewRoute("/hello").Patch(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/hello").Patch(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -33,9 +32,9 @@ func main() { ## Parameters - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -66,19 +65,17 @@ func main() { ### Register a handler for PATCH requests ```go -api.NewRoute("/hello").Patch(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello").Patch(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.NewRoute("/hello/:name").Patch(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello/:name").Patch(func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` @@ -89,6 +86,7 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { @@ -102,9 +100,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Patch(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/public").Patch(func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -121,16 +118,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -142,7 +139,7 @@ func main() { return } - api.NewRoute("/hello/:name").Patch(handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.NewRoute("/hello/:name").Patch(nitric.Compose(authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -158,7 +155,7 @@ The PATCH request body is accessible using `ctx.Request.Data()`. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -168,12 +165,10 @@ func main() { return } - api.NewRoute("/hello").Patch(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/hello").Patch(func(ctx *apis.Ctx) { data := ctx.Request.Data() ctx.Response.Body = data - - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-route-post.mdx b/src/pages/reference/go/api/api-route-post.mdx index 45aef0765..42f57ce5d 100644 --- a/src/pages/reference/go/api/api-route-post.mdx +++ b/src/pages/reference/go/api/api-route-post.mdx @@ -9,7 +9,7 @@ Register a handler for HTTP POST requests to the route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -19,9 +19,8 @@ func main() { return } - api.NewRoute("/hello").Post(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/hello").Post(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -33,9 +32,9 @@ func main() { ## Parameters - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -66,19 +65,17 @@ func main() { ### Register a handler for POST requests ```go -api.NewRoute("/hello").Post(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello").Post(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.NewRoute("/hello/:name").Post(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello/:name").Post(func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` @@ -89,6 +86,7 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { @@ -102,9 +100,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Post(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/public").Post(func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -121,16 +118,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -142,7 +139,7 @@ func main() { return } - api.NewRoute("/hello/:name").Post(handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.NewRoute("/hello/:name").Post(nitric.Compose(authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -158,7 +155,7 @@ The POST request body is accessible using `ctx.Request.Data()`. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -168,12 +165,10 @@ func main() { return } - api.NewRoute("/hello").Post(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/hello").Post(func(ctx *apis.Ctx) { data := ctx.Request.Data() ctx.Response.Body = data - - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-route-put.mdx b/src/pages/reference/go/api/api-route-put.mdx index 441217cbb..32b24c436 100644 --- a/src/pages/reference/go/api/api-route-put.mdx +++ b/src/pages/reference/go/api/api-route-put.mdx @@ -9,7 +9,7 @@ Register a handler for HTTP PUT requests to the route. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -19,9 +19,8 @@ func main() { return } - api.NewRoute("/hello").Put(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/hello").Put(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -33,9 +32,9 @@ func main() { ## Parameters - + The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `handler.ComposeHttpMiddleware`. + to compose more than one middleware use `nitric.Compose`. Additional options for the route. See below. @@ -66,19 +65,17 @@ func main() { ### Register a handler for PUT requests ```go -api.NewRoute("/hello").Put(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello").Put(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") - return next(ctx) }) ``` ### Create a route with path params ```go -api.NewRoute("/hello/:name").Put(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +api.NewRoute("/hello/:name").Put(func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) - return next(ctx) }) ``` @@ -89,6 +86,7 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { @@ -102,9 +100,8 @@ func main() { } // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Put(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/public").Put(func(ctx *apis.Ctx) { // Handle request - return next(ctx) }, nitric.WithNoMethodSecurity()) if err := nitric.Run(); err != nil { @@ -121,16 +118,16 @@ When multiple functions are provided they will be called as a chain. If one succ import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } -func handleRequest(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte("Hello " + name) return next(ctx) @@ -142,7 +139,7 @@ func main() { return } - api.NewRoute("/hello/:name").Put(handler.ComposeHttpMiddleware(authMiddleware, handleRequest)) + api.NewRoute("/hello/:name").Put(nitric.Compose(authMiddleware, handleRequest)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -158,7 +155,7 @@ The PUT request body is accessible using `ctx.Request.Data()`. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -168,12 +165,10 @@ func main() { return } - api.NewRoute("/hello").Put(func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.NewRoute("/hello").Put(func(ctx *apis.Ctx) { data := ctx.Request.Data() ctx.Response.Body = data - - return next(ctx) }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/api/api-route.mdx b/src/pages/reference/go/api/api-route.mdx index e64e54666..d0de4b37e 100644 --- a/src/pages/reference/go/api/api-route.mdx +++ b/src/pages/reference/go/api/api-route.mdx @@ -38,7 +38,7 @@ func main() { middleware and handlers. See [create a route with path params](#create-a-route-with-path-params) - + The middleware (code) that should be run on all requests to this route. Useful for applying universal middleware such as CORS headers or Auth, across an entire route from a single place. diff --git a/src/pages/reference/go/api/api.mdx b/src/pages/reference/go/api/api.mdx index a1fc2f6c4..8881bf141 100644 --- a/src/pages/reference/go/api/api.mdx +++ b/src/pages/reference/go/api/api.mdx @@ -52,7 +52,7 @@ func main() { - + The middleware (code) that should be run on all requests to the API. Useful for applying universal middleware such as CORS headers or Auth, across an entire API from a single place. @@ -108,11 +108,11 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } @@ -132,7 +132,7 @@ func main() { ### Define middleware ```go -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } @@ -140,7 +140,7 @@ func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handle ### Notes -Middleware functions are supplied an `HttpContext` object and a `next()` function which calls the next middleware in the chain. +Middleware functions are supplied an `apis.Ctx` object and a `next()` function which calls the next middleware in the chain. ### Create an API with a base path diff --git a/src/pages/reference/go/schedule/schedule-cron.mdx b/src/pages/reference/go/schedule/schedule-cron.mdx index 4b7467847..90d273235 100644 --- a/src/pages/reference/go/schedule/schedule-cron.mdx +++ b/src/pages/reference/go/schedule/schedule-cron.mdx @@ -14,10 +14,8 @@ import ( ) func main() { - nitric.NewSchedule("archive-data").Cron("0 1 1 * *", func (ctx *handler.IntervalContext, _ handler.IntervalHandler) (*handler.IntervalContext, error) { - fmt.Println("archiving data") - - return ctx, nil + nitric.NewSchedule("archive-data").Cron("0 1 1 * *", func() { + // code which archives data }) if err := nitric.Run(); err != nil { @@ -33,7 +31,7 @@ func main() { The expression that sets when the schedule will be triggered. This value should be a standard 5 value Unix cron expression, e.g., '0 1 1 * *'. - + One or more callback functions to use as the handler which will run on the defined frequency. @@ -47,23 +45,18 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" ) func main() { // every 15 minutes - nitric.NewSchedule("check for updates").Cron("0/15 * * * *", func (ctx *handler.IntervalContext, _ handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("check for updates").Cron("0/15 * * * *", func () { fmt.Println("checking for updates") - - return ctx, nil }) // at 1:00am on the 1st of every month - nitric.NewSchedule("delete stale data").Cron("0 1 1 * *", func (ctx *handler.IntervalContext, _ handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("delete stale data").Cron("0 1 1 * *", func () { fmt.Println("deleting stale data") - - return ctx, nil }) if err := nitric.Run(); err != nil { @@ -78,24 +71,24 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/schedules" "github.com/nitrictech/go-sdk/nitric" ) -func generateReport(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { +func generateReport(ctx *schedules.Ctx, next nitric.Handler[schedules.Ctx]) (*schedules.Ctx, error) { // generate report return next(ctx) } -func sendNotification(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { +func sendNotification(ctx *schedules.Ctx, next nitric.Handler[schedules.Ctx]) (*schedules.Ctx, error) { // send notification with the report return next(ctx) } func main() { - nitric.NewSchedule("check for updates").Cron("0 1 1 * *", handler.ComposeIntervalMiddleware(generateReport, sendNotification)) + nitric.NewSchedule("check for updates").Cron("0 1 1 * *", generateReport, sendNotification) if err := nitric.Run(); err != nil { fmt.Println(err) diff --git a/src/pages/reference/go/schedule/schedule-every.mdx b/src/pages/reference/go/schedule/schedule-every.mdx index c38004016..f05e24bdd 100644 --- a/src/pages/reference/go/schedule/schedule-every.mdx +++ b/src/pages/reference/go/schedule/schedule-every.mdx @@ -15,10 +15,8 @@ import ( func main() { // Create a schedule that runs every 3 minutes - nitric.NewSchedule("send reminder").Every("3 minutes", func(ctx *handler.IntervalContext, _ handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("send reminder").Every("3 minutes", func() { // code which sends a reminder - - return ctx, nil }) if err := nitric.Run(); err != nil { @@ -34,7 +32,7 @@ func main() { The rate to run the schedule, e.g., '7 days'. All rates accept a number and a frequency. Valid frequencies are 'days', 'hours', or 'minutes'. - + One or more middleware functions to use as the handler which will run on the defined frequency. @@ -72,24 +70,23 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/schedules" "github.com/nitrictech/go-sdk/nitric" ) -func generateReport(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { +func generateReport(ctx *schedules.Ctx, next nitric.Handler[schedules.Ctx]) (*schedules.Ctx, error) { // generate report - return next(ctx) } -func sendNotification(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { +func sendNotification(ctx *schedules.Ctx, next nitric.Handler[schedules.Ctx]) (*schedules.Ctx, error) { // send notification with the report return next(ctx) } func main() { - nitric.NewSchedule("aggregate data").Every("3 days", handler.ComposeIntervalMiddleware(generateReport, sendNotification)) + nitric.NewSchedule("aggregate data").Every("3 days", generateReport, sendNotification) if err := nitric.Run(); err != nil { fmt.Println(err) diff --git a/src/pages/reference/go/schedule/schedule.mdx b/src/pages/reference/go/schedule/schedule.mdx index dfcabd0b5..a5a8ffb1b 100644 --- a/src/pages/reference/go/schedule/schedule.mdx +++ b/src/pages/reference/go/schedule/schedule.mdx @@ -49,21 +49,17 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/schedules" "github.com/nitrictech/go-sdk/nitric" ) func main() { - nitric.NewSchedule("send-reminder").Every("1 day", func(ctx *handler.IntervalContext, _ handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("send-reminder").Every("1 day", func() { fmt.Println("sending data") - - return ctx, nil }) - nitric.NewSchedule("archive-data").Cron("0 1 1 * *", func (ctx *handler.IntervalContext, _ handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("archive-data").Cron("0 1 1 * *", func (){ fmt.Println("archiving data") - - return ctx, nil }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/secrets/secret-version-access.mdx b/src/pages/reference/go/secrets/secret-access-version.mdx similarity index 81% rename from src/pages/reference/go/secrets/secret-version-access.mdx rename to src/pages/reference/go/secrets/secret-access-version.mdx index eeb312692..4e855318d 100644 --- a/src/pages/reference/go/secrets/secret-version-access.mdx +++ b/src/pages/reference/go/secrets/secret-access-version.mdx @@ -1,7 +1,7 @@ export const description = "Reference for Nitric's Go library - Retrieves the value from a version of a secret." -# Go - Secret.Version.Access() +# Go - Secret.AccessVersion() Retrieves the value from a version of a secret. @@ -18,7 +18,7 @@ func main() { return } - value, err := secret.Latest().Access(context.TODO()) + value, err := secret.AccessVersion(context.TODO(), "latest") if err != nil { return } @@ -37,6 +37,9 @@ func main() { The context of the call, used for tracing. + + The ID of the secret version to access + ## Examples @@ -56,7 +59,7 @@ func main() { return } - value, err := secret.Latest().Access(context.TODO()) + value, err := secret.AccessVersion(context.TODO(), "latest") if err != nil { return } @@ -85,7 +88,7 @@ func main() { return } - version, err := secret.Version("the-version-id").Access(context.TODO()) + version, err := secret.AccessVersion(context.TODO(), "the-version-id") if err != nil { fmt.Println(err) return diff --git a/src/pages/reference/go/secrets/secret-latest.mdx b/src/pages/reference/go/secrets/secret-access.mdx similarity index 75% rename from src/pages/reference/go/secrets/secret-latest.mdx rename to src/pages/reference/go/secrets/secret-access.mdx index e9f0b2118..4372631d2 100644 --- a/src/pages/reference/go/secrets/secret-latest.mdx +++ b/src/pages/reference/go/secrets/secret-access.mdx @@ -1,9 +1,9 @@ export const description = "Reference for Nitric's Go library - Returns a reference to the latest version of a secret, regardless of that version's ID." -# Go - Secret.Latest() +# Go - Secret.Access() -Returns a reference to the `latest` version of a secret, regardless of that version's ID. +Returns a the value of the latest iteration of a secret. ```go import ( @@ -18,7 +18,7 @@ func main() { return } - latest := secret.Latest() + latestSecret := secret.Access(context.TODO()) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -28,9 +28,9 @@ func main() { ## Notes -`Latest()` is most useful when you always want the most recent secret values from the secrets manager. Database credentials and API keys are good examples of secrets where the latest value is usually what you want. +`Access()` is most useful when you always want the most recent secret values from the secrets manager. Database credentials and API keys are good examples of secrets where the latest value is usually what you want. -For symmetric encryption, you'll need to retrieve the version of the secret used to _encrypt_ a value when you try to _decrypt_ it again. In those cases `Latest()` isn't a good choice, use [version()](./secret-version) instead. +For symmetric encryption, you'll need to retrieve the version of the secret used to _encrypt_ a value when you try to _decrypt_ it again. In those cases `Access()` isn't a good choice, use [AccessVersion()](./secret-access-version) instead. ## Examples @@ -49,7 +49,7 @@ func main() { return } - latest := secret.Latest() + latest := secret.Access(context.TODO()) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -72,7 +72,7 @@ func main() { return } - value, err := secret.Latest().Access(context.TODO()) + value, err := secret.Access(context.TODO()) if err != nil { return } @@ -86,5 +86,5 @@ func main() { ``` - See [Secret.Version().Access()](./secret-version-access) for more details. + See [Secret.AccessVersion()](./secret-access-version) for more details. diff --git a/src/pages/reference/go/secrets/secret-put.mdx b/src/pages/reference/go/secrets/secret-put.mdx index a8e3c6905..1570d1b5d 100644 --- a/src/pages/reference/go/secrets/secret-put.mdx +++ b/src/pages/reference/go/secrets/secret-put.mdx @@ -14,12 +14,12 @@ import ( ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) + secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretPut) if err != nil { return } - versionRef, err := secret.Put(context.TODO(), []byte("content")) + versionName, err := secret.Put(context.TODO(), []byte("content")) if err != nil { return } @@ -63,7 +63,7 @@ func main() { return } - versionRef, err := secret.Put(context.TODO(), []byte("content")) + versionName, err := secret.Put(context.TODO(), []byte("content")) if err != nil { return } @@ -76,7 +76,7 @@ func main() { ### Get the id of a new secret version -Calling `put()` returns a promise to a reference to the new secret version. Storing the ID of the new version can be useful if you need to retrieve that specific value again in future using [version.access()](./secret-version-access) +Calling `put()` returns the ID of the new secret version. Storing the ID of the new version can be useful if you need to retrieve that specific value again in future using [secret.access()](./secret-access) ```go import ( @@ -92,12 +92,12 @@ func main() { return } - versionRef, err := secret.Put(context.TODO(), []byte("content")) + versionName, err := secret.Put(context.TODO(), []byte("content")) if err != nil { return } - fmt.Println(versionRef.Version()) + fmt.Println(versionName) if err := nitric.Run(); err != nil { fmt.Println(err) diff --git a/src/pages/reference/go/secrets/secret-version.mdx b/src/pages/reference/go/secrets/secret-version.mdx deleted file mode 100644 index 9a07944f7..000000000 --- a/src/pages/reference/go/secrets/secret-version.mdx +++ /dev/null @@ -1,94 +0,0 @@ -export const description = - "Reference for Nitric's Go library - Returns a reference to a known version of a secret." - -# Go - Secret.Version() - -Returns a reference to a known version of a secret. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } - - version := secret.Version("the-version-id") - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -## Parameters - - - - The version ID. This value is returned from [secret.Put()](./secret-put). - - - -## Examples - -### Return a reference to a known secret version - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } - - version := secret.Version("the-version-id") - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Access the value of a known secret version - -```go -import ( - "context" - "fmt" - - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } - - version, err := secret.Version("the-version-id").Access(context.TODO()) - if err != nil { - fmt.Println(err) - return - } - - fmt.Println(version.AsString()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### See also - -- [Secret.Version().Access()](./secret-version-access) diff --git a/src/pages/reference/go/secrets/secret.mdx b/src/pages/reference/go/secrets/secret.mdx index e6e87c963..3f2b0b5e9 100644 --- a/src/pages/reference/go/secrets/secret.mdx +++ b/src/pages/reference/go/secrets/secret.mdx @@ -79,6 +79,5 @@ func main() { ### See also - [Secret.Put()](./secret-put) -- [Secret.Version()](./secret-version) -- [Secret.Latest()](./secret-latest) -- [Secret.Version().Access()](./secret-version-access) +- [Secret.AccessVersion()](./secret-access-version) +- [Secret.Access()](./secret-access) diff --git a/src/pages/reference/go/storage/bucket-file-delete.mdx b/src/pages/reference/go/storage/bucket-delete.mdx similarity index 83% rename from src/pages/reference/go/storage/bucket-file-delete.mdx rename to src/pages/reference/go/storage/bucket-delete.mdx index 8748e3d20..fb874599f 100644 --- a/src/pages/reference/go/storage/bucket-file-delete.mdx +++ b/src/pages/reference/go/storage/bucket-delete.mdx @@ -19,7 +19,7 @@ func main() { return } - err = bucket.File("cat.png").Delete(context.TODO()) + err = bucket.Delete(context.TODO(), "cat.png") if err != nil { return } @@ -36,6 +36,9 @@ func main() { The context of the call, used for tracing. + + The key of the file to delete. + ## Examples @@ -56,7 +59,7 @@ func main() { return } - err = bucket.File("cat.png").Delete(context.TODO()) + err = bucket.Delete(context.TODO(), "cat.png") if err != nil { return } diff --git a/src/pages/reference/go/storage/bucket-file-downloadurl.mdx b/src/pages/reference/go/storage/bucket-downloadurl.mdx similarity index 70% rename from src/pages/reference/go/storage/bucket-file-downloadurl.mdx rename to src/pages/reference/go/storage/bucket-downloadurl.mdx index 42127d959..3314dd2e0 100644 --- a/src/pages/reference/go/storage/bucket-file-downloadurl.mdx +++ b/src/pages/reference/go/storage/bucket-downloadurl.mdx @@ -1,7 +1,7 @@ export const description = "Reference for Nitric's Go library - Get a download url for a file from a bucket." -# Go - Bucket.File.DownloadUrl() +# Go - Bucket.DownloadUrl() Create a download url for a file within a bucket. @@ -19,7 +19,7 @@ func main() { return } - uploadUrl, err := bucket.File("cat.png").DownloadUrl(context.TODO(), 3600) + downloadUrl, err := bucket.File().DownloadUrl(context.TODO(), "cat.png") if err != nil { return } @@ -36,8 +36,11 @@ func main() { The context of the call, used for tracing. - - Seconds until link expiry. Maximum of `604800` (7 days). + + The key of the file to create a download url for. + + + Options to configure the download url. @@ -51,6 +54,7 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { @@ -59,7 +63,7 @@ func main() { return } - uploadUrl, err := bucket.File("cat.png").DownloadUrl(context.TODO(), 300) + downloadUrl, err := bucket.File("cat.png").DownloadUrl(context.TODO(), "cat.png", storage.WithPresignUrlExpiry(time.Minute*5)) if err != nil { return } @@ -77,7 +81,7 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -92,18 +96,16 @@ func main() { return } - api.Get("/images/:id", func(ctx *handler.HttpContext, _ handler.HttpHandler) (*handler.HttpContext, error) { + api.Get("/images/:id", func(ctx *apis.Ctx) { id := ctx.Request.PathParams()["id"] - downloadUrl, err := bucket.File(id).DownloadUrl(context.TODO(), 600) + downloadUrl, err := bucket.DownloadUrl(context.TODO(), id) if err != nil { return ctx, err } ctx.Response.Headers["Location"] = []string{downloadUrl} ctx.Response.Status = 303 - - return ctx, nil }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/storage/bucket-file.mdx b/src/pages/reference/go/storage/bucket-file.mdx deleted file mode 100644 index e0d671618..000000000 --- a/src/pages/reference/go/storage/bucket-file.mdx +++ /dev/null @@ -1,47 +0,0 @@ -export const description = - "Reference for Nitric's Go library - Create a reference to a file within a bucket." - -# Go - Bucket.File() - -Create a reference to a file within a bucket. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketRead) - if err != nil { - return - } - - file := bucket.File("cat.png") - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -## Parameters - - - - The unique name/reference to the file. - - - -### Notes - -The file does not need to exist, only a reference to that file is being created. - -## Available Operations - -- [File.Read()](./bucket-file-read) -- [File.Write()](./bucket-file-write) -- [File.Delete()](./bucket-file-delete) -- [File.GetDownloadUrl()](./bucket-file-downloadurl) -- [File.GetUploadUrl()](./bucket-file-uploadurl) diff --git a/src/pages/reference/go/storage/bucket-files.mdx b/src/pages/reference/go/storage/bucket-listfiles.mdx similarity index 80% rename from src/pages/reference/go/storage/bucket-files.mdx rename to src/pages/reference/go/storage/bucket-listfiles.mdx index 52fb8ea5a..5d5f9080d 100644 --- a/src/pages/reference/go/storage/bucket-files.mdx +++ b/src/pages/reference/go/storage/bucket-listfiles.mdx @@ -1,9 +1,9 @@ export const description = "Reference for Nitric's Go library - Get a list of file references for files that exist in the bucket." -# Go - Bucket.Files() +# Go - Bucket.ListFiles() -Get a list of file references for files that exist in the bucket. +Get a list of file keys for files that exist in the bucket. ```go import ( @@ -19,7 +19,7 @@ func main() { return } - files, err := bucket.Files(context.TODO()) + files, err := bucket.ListFiles(context.TODO()) if err != nil { return } @@ -65,7 +65,7 @@ func main() { } for _, file := range files { - file.Delete(ctx) + bucket.Delete(ctx, file) } if err := nitric.Run(); err != nil { @@ -74,6 +74,3 @@ func main() { } ``` -## Notes - -This method returns a list of [File](./bucket-file) references that exist on the bucket. diff --git a/src/pages/reference/go/storage/bucket-on.mdx b/src/pages/reference/go/storage/bucket-on.mdx index 673541f87..5ddd2a5cf 100644 --- a/src/pages/reference/go/storage/bucket-on.mdx +++ b/src/pages/reference/go/storage/bucket-on.mdx @@ -22,27 +22,23 @@ func main() { return } - assets.On(handler.DeleteNotification, "*", func(ctx *handler.BlobEventContext, _ handler.BlobEventHandler) (*handler.BlobEventContext, error) { + assets.On(handler.DeleteNotification, "*", func(ctx *handler.BlobEventContext) { fmt.Printf("a file named %s was deleted\n", ctx.Request.Key()) - - return ctx, nil }) - assets.On(handler.WriteNotification, "/images/cat", func(ctx *handler.BlobEventContext, _ handler.BlobEventHandler) (*handler.BlobEventContext, error) { + assets.On(handler.WriteNotification, "/images/cat", func(ctx *handler.BlobEventContext) { fmt.Printf("a cat image was written") - - return ctx, nil }) - assets.On(handler.WriteNotification, "/images/dog", func(ctx *handler.BlobEventContext, _ handler.BlobEventHandler) (*handler.BlobEventContext, error) { - dogImage, err := readableAssets.File(ctx.Request.Key()).Read(context.TODO()) + assets.On(handler.WriteNotification, "/images/dog", func(ctx *handler.BlobEventContext) error { + dogImage, err := readableAssets.Read(context.TODO(), ctx.Request.Key()) if err != nil { - return ctx, err + return err } fmt.Println(dogImage) - return ctx, nil + return nil }) if err := nitric.Run(); err != nil { @@ -67,7 +63,7 @@ func main() { filters overlap across notifications, an error will be thrown when registering the resource. - + The middleware (code) to be triggered by the bucket notification being triggered. @@ -77,11 +73,11 @@ func main() { **WriteNotification** -Run when a file in the bucket is created using: `File.Write()` +Run when a file in the bucket is created using: `Bucket.Write()` **DeleteNotification** -Run when a file in the bucket is deleted using: `File.Delete()` +Run when a file in the bucket is deleted using: `Bucket.Delete()` ### Trigger type cloud mapping diff --git a/src/pages/reference/go/storage/bucket-file-read.mdx b/src/pages/reference/go/storage/bucket-read.mdx similarity index 82% rename from src/pages/reference/go/storage/bucket-file-read.mdx rename to src/pages/reference/go/storage/bucket-read.mdx index ebd07a2aa..477c47afa 100644 --- a/src/pages/reference/go/storage/bucket-file-read.mdx +++ b/src/pages/reference/go/storage/bucket-read.mdx @@ -1,7 +1,7 @@ export const description = "Reference for Nitric's Go library - Read the contents of a file from a bucket." -# Go - Bucket.File.Read() +# Go - Bucket.Read() Read the contents of a file from a bucket. @@ -19,7 +19,7 @@ func main() { return } - contents, err := bucket.File("cat.png").Read(context.TODO()) + contents, err := bucket.Read(context.TODO(), "cat.png") if err != nil { return } @@ -38,6 +38,9 @@ func main() { The context of the call, used for tracing. + + The key of the file to read + ## Examples @@ -58,7 +61,7 @@ func main() { return } - contents, err := bucket.File("cat.png").Read(context.TODO()) + contents, err := bucket.Read(context.TODO(), "cat.png") if err != nil { return } diff --git a/src/pages/reference/go/storage/bucket-file-uploadurl.mdx b/src/pages/reference/go/storage/bucket-uploadurl.mdx similarity index 74% rename from src/pages/reference/go/storage/bucket-file-uploadurl.mdx rename to src/pages/reference/go/storage/bucket-uploadurl.mdx index 83f6cadee..9e9191a30 100644 --- a/src/pages/reference/go/storage/bucket-file-uploadurl.mdx +++ b/src/pages/reference/go/storage/bucket-uploadurl.mdx @@ -19,7 +19,7 @@ func main() { return } - uploadUrl, err := bucket.File("cat.png").UploadUrl(context.TODO(), 600) + uploadUrl, err := bucket.UploadUrl(context.TODO(), "cat.png") if err != nil { return } @@ -36,8 +36,11 @@ func main() { The context of the call, used for tracing. - - Seconds until link expiry. Maximum of `604800` (7 days). + + The key of the file to create an upload url for. + + + Options to configure the upload url. @@ -59,7 +62,7 @@ func main() { return } - uploadUrl, err := bucket.File("cat.png").UploadUrl(context.TODO(), 600) + uploadUrl, err := bucket.UploadUrl(context.TODO(), "cat.png") if err != nil { return } diff --git a/src/pages/reference/go/storage/bucket-file-write.mdx b/src/pages/reference/go/storage/bucket-write.mdx similarity index 81% rename from src/pages/reference/go/storage/bucket-file-write.mdx rename to src/pages/reference/go/storage/bucket-write.mdx index f2cbe2b32..3f253bc37 100644 --- a/src/pages/reference/go/storage/bucket-file-write.mdx +++ b/src/pages/reference/go/storage/bucket-write.mdx @@ -19,7 +19,7 @@ func main() { return } - err = bucket.File("cat.png").Write(context.TODO(), []byte("contents")) + err = bucket.Write(context.TODO(), "cat.png" []byte("contents")) if err != nil { return } @@ -36,6 +36,9 @@ func main() { The context of the call, used for tracing. + + The key of the file to write. + The data to write to the file. @@ -59,7 +62,7 @@ func main() { return } - err = bucket.File("cat.png").Write(context.TODO(), []byte("contents")) + err = bucket.Write(context.TODO(), "cat.png", []byte("contents")) if err != nil { return } diff --git a/src/pages/reference/go/storage/bucket.mdx b/src/pages/reference/go/storage/bucket.mdx index 52e07de62..5b43b8fd5 100644 --- a/src/pages/reference/go/storage/bucket.mdx +++ b/src/pages/reference/go/storage/bucket.mdx @@ -64,9 +64,9 @@ This permission allows your function to delete files from the bucket See the following for examples on working with files in a bucket: - [On()](./bucket-on) -- [File()](./bucket-file) -- [File.Read()](./bucket-file-read) -- [File.Write()](./bucket-file-write) -- [File.Delete()](./bucket-file-delete) -- [File.DownloadUrl()](./bucket-file-downloadurl) -- [File.UploadUrl()](./bucket-file-uploadurl) +- [Read()](./bucket-read) +- [Write()](./bucket-write) +- [Delete()](./bucket-delete) +- [DownloadUrl()](./bucket-downloadurl) +- [UploadUrl()](./bucket-uploadurl) +- [ListFiles()](./bucket-listfiles) diff --git a/src/pages/reference/go/topic/topic-publish.mdx b/src/pages/reference/go/topic/topic-publish.mdx index e41331d57..94e406066 100644 --- a/src/pages/reference/go/topic/topic-publish.mdx +++ b/src/pages/reference/go/topic/topic-publish.mdx @@ -10,7 +10,7 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/api/events" + "github.com/nitrictech/go-sdk/nitric/topics" "github.com/nitrictech/go-sdk/nitric" ) @@ -22,11 +22,11 @@ func main() { return } - updates.Publish(context.TODO(), &events.Event{ - Payload: map[string]interface{}{ + updates.Publish(context.TODO(), + map[string]interface{}{ "something": "amazing happened", }, - }) + ) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -40,19 +40,8 @@ func main() { The context of the call, used for tracing. - + The event to publish to the topic. - - - Unique ID to apply to the event. - - - Payload to send with the event. - - - A hint to the type of payload supplied. - - Optional function to send a message with a delay. @@ -82,11 +71,11 @@ func main() { return } - err := updates.Publish(context.TODO(), &events.Event{ - Payload: map[string]interface{}{ + err := updates.Publish(context.TODO(), + map[string]interface{}{ "something": "amazing happened", }, - }) + ) if err := nitric.Run(); err != nil { fmt.Println(err) } @@ -115,19 +104,12 @@ func main() { return } - updates.Publish(context.TODO(), &events.Event{ - Payload: map[string]interface{}{ + updates.Publish(context.TODO(), map[string]interface{}{ "something": "amazing happened", - }, - }, events.WithDelay(time.Hour)) + }, events.WithDelay(time.Hour)) if err := nitric.Run(); err != nil { fmt.Println(err) } } ``` - -### Notes - -- If an id is not supplied with an event a UUID(v4) will be generated for you. -- A function may subscribe to OR publish to a topic but not both. diff --git a/src/pages/reference/go/topic/topic-subscribe.mdx b/src/pages/reference/go/topic/topic-subscribe.mdx index d910ba569..2fdf0170d 100644 --- a/src/pages/reference/go/topic/topic-subscribe.mdx +++ b/src/pages/reference/go/topic/topic-subscribe.mdx @@ -9,15 +9,12 @@ Subscribe a handler to a topic and receive new events for processing. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" ) func main() { - nitric.NewTopic("updates").Subscribe(func(ctx *handler.MessageContext, _ handler.MessageHandler) (*handler.MessageContext, error) { + nitric.NewTopic("updates").Subscribe(func() { fmt.Println("received update") - - return ctx, nil }) if err := nitric.Run(); err != nil { @@ -29,7 +26,7 @@ func main() { ## Parameters - + The middleware (code) to be triggered by the topic. @@ -42,15 +39,13 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/topics" "github.com/nitrictech/go-sdk/nitric" ) func main() { - nitric.NewTopic("updates").Subscribe(func(ctx *handler.MessageContext, _ handler.MessageHandler) (*handler.MessageContext, error) { - fmt.Println("received update") - - return ctx, nil + nitric.NewTopic("updates").Subscribe(func(ctx *topics.Ctx) { + fmt.Printf("received update %+v", ctx.Request.Message()) }) if err := nitric.Run(); err != nil { @@ -65,24 +60,24 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/topcs" "github.com/nitrictech/go-sdk/nitric" ) -func validateUpdate(ctx *handler.MessageContext, next handler.MessageHandler) (*handler.MessageContext, error) { +func validateUpdate(ctx *topic.Ctx, next nitric.Handler[topics.Ctx]) (*topics.Ctx, error) { // validate update return next(ctx) } -func handleUpdate(ctx *handler.MessageContext, next handler.MessageHandler) (*handler.MessageContext, error) { +func handleUpdate(ctx *topic.Ctx, next nitric.Handler[topics.Ctx]) (*topics.Ctx, error) { // handle update return next(ctx) } func main() { - nitric.NewTopic("updates").Subscribe(handler.ComposeMessageMiddleware(validateUpdate, handleUpdate)) + nitric.NewTopic("updates").Subscribe(validateUpdate, handleUpdate) if err := nitric.Run(); err != nil { fmt.Println(err) diff --git a/src/pages/reference/go/websocket/websocket-on.mdx b/src/pages/reference/go/websocket/websocket-on.mdx index 4536ae57c..eb09dcf5f 100644 --- a/src/pages/reference/go/websocket/websocket-on.mdx +++ b/src/pages/reference/go/websocket/websocket-on.mdx @@ -9,7 +9,7 @@ Register a handler for connections, disconnections, or messages for the websocke import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/websockets" "github.com/nitrictech/go-sdk/nitric" ) @@ -19,19 +19,16 @@ func main() { return } - ws.On(handler.WebsocketConnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + ws.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) { // handle connections - return next(ctx) }) - ws.On(handler.WebsocketDisconnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + ws.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) { // handle disconnections - return next(ctx) }) - ws.On(handler.WebsocketMessage, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) { // handle messages - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -47,10 +44,10 @@ func main() { The type of websocket event to listen for. Can be `WebsocketConnect`, `WebsocketDisconnect`, or `WebsocketMessage`. - + The middleware function to use as the handler for Websocket events. If you want to compose more than one middleware use - `handler.ComposeWebsocketMiddleware`. + `nitric.Compose`. @@ -59,10 +56,8 @@ func main() { ### Register a handler for message events ```go -ws.On(handler.WebsocketMessage, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { +ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) { fmt.Printf("New Message from %s: %s\n", ctx.Request.ConnectionID(), ctx.Request.Message()) - - return next(ctx) }) ``` @@ -75,7 +70,7 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/websockets" "github.com/nitrictech/go-sdk/nitric" ) @@ -91,29 +86,19 @@ func main() { } // Register a new connection on connect - ws.On(handler.WebsocketConnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { - err := connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ + ws.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) error { + return := connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ "connectionId": ctx.Request.ConnectionID(), }) - if err != nil { - return ctx, err - } - - return next(ctx) }) // Remove a registered connection on disconnect - ws.On(handler.WebsocketDisconnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { - err := connections.Delete(context.TODO(), ctx.Request.ConnectionID()) - if err != nil { - return ctx, err - } - - return next(ctx) + ws.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) error { + return connections.Delete(context.TODO(), ctx.Request.ConnectionID()) }) // Broadcast message to all the registered websocket connections - ws.On(handler.WebsocketMessage, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) error { connectionStream, err := connections.Keys(context.TODO()) if err != nil { return ctx, err @@ -127,11 +112,11 @@ func main() { err = ws.Send(context.TODO(), connectionId, []byte(ctx.Request.Message())) if err != nil { - return ctx, err + return err } } - return next(ctx) + return nil }) if err := nitric.Run(); err != nil { @@ -146,17 +131,16 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/websockets" "github.com/nitrictech/go-sdk/nitric" ) -func validateMessage(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { +func validateMessage(ctx *websockets.Ctx, next nitric.Handler[websockets.Ctx]) (*websockets.Ctx, error) { // validate that the message does not contain explicit content - return next(ctx) } -func handleMessage(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { +func handleMessage(ctx *websockets.Ctx, next nitric.Handler[websockets.Ctx]) (*websockets.Ctx, error) { fmt.Printf("New Message from %s: %s\n", ctx.Request.ConnectionID(), ctx.Request.Message()) return next(ctx) @@ -168,7 +152,7 @@ func main() { return } - ws.On(handler.WebsocketMessage, handler.ComposeWebsocketMiddleware(validateMessage, handleMessage)) + ws.On(handler.WebsocketMessage, validateMessage, handleMessage) if err := nitric.Run(); err != nil { fmt.Println(err) diff --git a/src/pages/schedules.mdx b/src/pages/schedules.mdx index ba1d168f5..997f3f787 100644 --- a/src/pages/schedules.mdx +++ b/src/pages/schedules.mdx @@ -69,20 +69,18 @@ import ( "fmt" "time" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/schedules" "github.com/nitrictech/go-sdk/nitric" ) func main() { // Run every 5 minutes - nitric.NewSchedule("process-transactions").Every("5 minutues", func(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("process-transactions").Every("5 minutues", func(ctx *schedules.Ctx) { fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) - return ctx, nil }) // Run at 22:00 Monday through Friday. - nitric.NewSchedule("send-reminder").Cron("0 22 * * 1-5", func(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("send-reminder").Cron("0 22 * * 1-5", func(ctx *schedules.Ctx) { fmt.Printf("reminder at %s\n", time.Now().Format(time.RFC3339)) - return ctx, nil }) if err := nitric.Run(); err != nil { @@ -159,27 +157,24 @@ import ( "fmt" "time" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/schedules" "github.com/nitrictech/go-sdk/nitric" ) func main() { // Run every 5 minutes - nitric.NewSchedule("process-often").Every("5 minutes", func(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("process-often").Every("5 minutes", func(ctx *schedules.Ctx) { fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) - return ctx, nil }) // Run every 2 hours - nitric.NewSchedule("process-sometimes").Every("2 hours", func(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("process-sometimes").Every("2 hours", func(ctx *schedules.Ctx) { fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) - return ctx, nil }) // Run every 30 days - nitric.NewSchedule("process-rarely").Every("30 days", func(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("process-rarely").Every("30 days", func(ctx *schedules.Ctx) { fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) - return ctx, nil }) if err := nitric.Run(); err != nil { @@ -262,21 +257,19 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/schedules" "github.com/nitrictech/go-sdk/nitric" ) func main() { // every 15 minutes - nitric.NewSchedule("check-for-updates").Cron("0/15 * * * *", func(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("check-for-updates").Cron("0/15 * * * *", func(ctx *schedules.Ctx) { fmt.Println("checking for updates") - return ctx, nil }) // at 1:00am on the 1st of every month - nitric.NewSchedule("delete-stale-data").Cron("0 1 1 * *", func(ctx *handler.IntervalContext, next handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("delete-stale-data").Cron("0 1 1 * *", func(ctx *schedules.Ctx) { fmt.Println("clearing data") - return ctx, nil }) if err := nitric.Run(); err != nil { diff --git a/src/pages/secrets.mdx b/src/pages/secrets.mdx index e8490ed37..1de2e0a7a 100644 --- a/src/pages/secrets.mdx +++ b/src/pages/secrets.mdx @@ -133,7 +133,7 @@ func main() { latest, _ := apiKey.Put(context.TODO(), []byte("a new secret value")) // We can get the version ID of our newly stored value - latest.Version() + latest if err := nitric.Run(); err != nil { fmt.Println(err) @@ -185,11 +185,8 @@ version = api_key.version("7F5F86D0-D97F-487F") ``` ```go -// Get a reference to the latest version -latest := apiKey.Latest() - -// Get a reference to a specific version -version := apiKey.Version("7F5F86D0-D97F-487F") +// golang does not have a SecretVersion object use the Secret.Access() and Secret.AccessVersion() methods +// available on the secret ``` ```dart @@ -251,11 +248,16 @@ func main() { apiKey, _ := nitric.NewSecret("api-key").Allow(nitric.SecretAccess) // Access the details of the latest version of a secret - latest, _ := apiKey.Latest().Access(context.TODO()) + latest, _ := apiKey.Access(context.TODO()) // Retrieve the value of the secret as a string value := latest.AsString() + // Access the details of the latest version of a secret + someVersion, _ := apiKey.AccessVersion(context.TODO(), "known-version-id") + + otherValue := someVersion.AsString() + if err := nitric.Run(); err != nil { fmt.Println(err) } diff --git a/src/pages/storage.mdx b/src/pages/storage.mdx index 95b970466..0c126098c 100644 --- a/src/pages/storage.mdx +++ b/src/pages/storage.mdx @@ -113,21 +113,7 @@ Nitric.run() ``` ```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketRead, nitric.BucketWrite, nitric.BucketDelete) - - profilePicture := profiles.File("users/bruce-wayne/profile.png") - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} +// Go does not have File references use methods on the Bucket reference ``` ```dart @@ -185,7 +171,7 @@ import ( func main() { profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketRead, nitric.BucketWrite, nitric.BucketDelete) - files, _ := profiles.Files(context.TODO()) + files, _ := profiles.ListFiles(context.TODO()) for _, file := range files { fmt.Println(file.Name()) @@ -254,7 +240,7 @@ import ( func main() { profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketRead, nitric.BucketWrite, nitric.BucketDelete) - image, _ := profiles.File("users/bruce-wayne/profile.png").Read(context.TODO()) + image, _ := profiles.Read(context.TODO(), "users/bruce-wayne/profile.png") if err := nitric.Run(); err != nil { fmt.Println(err) @@ -321,7 +307,7 @@ func main() { profileImage := []byte("image data") - _ = profiles.File("users/bruce-wayne/profile.png").Write(context.TODO(), profileImage) + _ = profiles.Write(context.TODO(), "users/bruce-wayne/profile.png", profileImage) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -379,7 +365,7 @@ import ( func main() { profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketDelete) - _ = profiles.File("users/bruce-wayne/profile.png").Delete(context.TODO()) + _ = profiles.Delete(context.TODO(), "users/bruce-wayne/profile.png") if err := nitric.Run(); err != nil { fmt.Println(err) @@ -448,16 +434,17 @@ import ( "time" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketRead, nitric.BucketWrite) // Expiry defaults to 600 (10 minutes) - downloadUrl, _ := profiles.File("profile.png").DownloadUrl(context.TODO(), time.Millisecond*3600) + downloadUrl, _ := profiles.DownloadUrl(context.TODO(), "profile.png", storage.WithPresignUrlExpiry(time.Millisecond*3600)) // Expiry defaults to 600 (10 minutes) - uploadUrl, _ := profiles.File("profile.png").UploadUrl(context.TODO(), time.Millisecond*3600) + uploadUrl, _ := profiles.UploadUrl(context.TODO(), "profile.png", storage.WithPresignUrlExpiry(time.Millisecond*3600)) if err := nitric.Run(); err != nil { fmt.Println(err) @@ -527,7 +514,7 @@ Nitric.run() import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/storage" "github.com/nitrictech/go-sdk/nitric" ) @@ -535,9 +522,8 @@ func main() { profiles := nitric.NewBucket("profiles") // Filter for 'write' events for files starting with '/users/images' - profiles.On(handler.WriteNotification, "/users/images", func(ctx *handler.BlobEventContext, next handler.BlobEventHandler) (*handler.BlobEventContext, error) { + profiles.On(handler.WriteNotification, "/users/images", func(ctx *storage.Ctx) { fmt.Printf("new profile image for %s was written", ctx.Request.Key()) - return ctx, nil }) if err := nitric.Run(); err != nil { @@ -594,7 +580,7 @@ Nitric.run() import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/storage" "github.com/nitrictech/go-sdk/nitric" ) @@ -602,9 +588,8 @@ func main() { profiles := nitric.NewBucket("profiles") // Filter for 'delete' events for any file - profiles.On(handler.DeleteNotification, "*", func(ctx *handler.BlobEventContext, next handler.BlobEventHandler) (*handler.BlobEventContext, error) { + profiles.On(handler.DeleteNotification, "*", func(ctx *storage.Ctx) { fmt.Printf("%s was deleted", ctx.Request.Key()) - return ctx, nil }) if err := nitric.Run(); err != nil { diff --git a/src/pages/websockets.mdx b/src/pages/websockets.mdx index c041050dd..ebf2a82b5 100644 --- a/src/pages/websockets.mdx +++ b/src/pages/websockets.mdx @@ -59,26 +59,23 @@ Nitric.run() import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/websockets" "github.com/nitrictech/go-sdk/nitric" ) func main() { socket, _ := nitric.NewWebsocket("socket") - socket.On(handler.WebsocketConnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + socket.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) { // handle connections - return next(ctx) }) - socket.On(handler.WebsocketDisconnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + socket.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) { // handle disconnections - return next(ctx) }) - socket.On(handler.WebsocketMessage, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + socket.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) { // handle messages - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -169,7 +166,7 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/websockets" "github.com/nitrictech/go-sdk/nitric" ) @@ -178,20 +175,16 @@ func main() { connections, _ := nitric.NewKv("connections").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) // Register a new connection on connect - socket.On(handler.WebsocketConnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + socket.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) { _ = connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ // Store any metadata related to the connection here "connectionId": ctx.Request.ConnectionID(), }) - - return next(ctx) }) // Remove a registered connection on disconnect - socket.On(handler.WebsocketDisconnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + socket.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) { _ = connections.Delete(context.TODO(), ctx.Request.ConnectionID()) - - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -313,7 +306,7 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/websockets" "github.com/nitrictech/go-sdk/nitric" ) @@ -322,24 +315,20 @@ func main() { connections, _ := nitric.NewKv("connections").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) // Register a new connection on connect - socket.On(handler.WebsocketConnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + socket.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) { _ = connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ // Store any metadata related to the connection here "connectionId": ctx.Request.ConnectionID(), }) - - return next(ctx) }) // Remove a registered connection on disconnect - socket.On(handler.WebsocketDisconnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + socket.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) { _ = connections.Delete(context.TODO(), ctx.Request.ConnectionID()) - - return next(ctx) }) // Broadcast message to all the registered websocket connections - socket.On(handler.WebsocketMessage, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + socket.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) { connectionStream, _ := connections.Keys(context.TODO()) for { @@ -351,8 +340,6 @@ func main() { // Send a message to a connection _ = socket.Send(context.TODO(), connectionId, []byte(ctx.Request.Message())) } - - return next(ctx) }) if err := nitric.Run(); err != nil { From 6caf95377d46cbe19ce224b489407d786804c0e5 Mon Sep 17 00:00:00 2001 From: Tim Holm Date: Mon, 23 Sep 2024 16:12:41 +1000 Subject: [PATCH 02/13] update go reference version links with redirect notes --- src/nav.config.ts | 59 ++++++++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/src/nav.config.ts b/src/nav.config.ts index 4e3997925..b25c002df 100644 --- a/src/nav.config.ts +++ b/src/nav.config.ts @@ -2636,17 +2636,26 @@ const fullNav: FullNav = { href: '/reference/go/secrets/secret-put', }, { - title: 'Secret.Version()', - href: '/reference/go/secrets/secret-version', - }, - { - title: 'Secret.Latest()', - href: '/reference/go/secrets/secret-latest', + title: 'Secret.AccessVersion()', + href: '/reference/go/secrets/secret-access-version', }, { - title: 'Secret.Version.Access()', - href: '/reference/go/secrets/secret-version-access', + title: 'Secret.Access()', + href: '/reference/go/secrets/secret-access', }, + // TODO: Add redirects for these + // { + // title: 'Secret.Version()', + // href: '/reference/go/secrets/secret-version', + // }, + // { + // title: 'Secret.Latest()', + // href: '/reference/go/secrets/secret-latest', + // }, + // { + // title: 'Secret.Version.Access()', + // href: '/reference/go/secrets/secret-version-access', + // }, ], }, { @@ -2656,33 +2665,35 @@ const fullNav: FullNav = { title: 'Bucket.On()', href: '/reference/go/storage/bucket-on', }, + // Add redirect + // { + // title: 'Bucket.File()', + // href: '/reference/go/storage/bucket-file', + // }, { - title: 'Bucket.File()', - href: '/reference/go/storage/bucket-file', + title: 'Bucket.ListFiles()', + href: '/reference/go/storage/bucket-listfiles', }, + // TODO: Add redirects for these for their old file equivalents { - title: 'Bucket.Files()', - href: '/reference/go/storage/bucket-files', + title: 'Bucket.Read()', + href: '/reference/go/storage/bucket-read', }, { - title: 'File.Read()', - href: '/reference/go/storage/bucket-file-read', + title: 'Bucket.Write()', + href: '/reference/go/storage/bucket-write', }, { - title: 'File.Write()', - href: '/reference/go/storage/bucket-file-write', + title: 'Bucket.Delete()', + href: '/reference/go/storage/bucket-delete', }, { - title: 'File.Delete()', - href: '/reference/go/storage/bucket-file-delete', + title: 'Bucket.DownloadUrl()', + href: '/reference/go/storage/bucket-downloadurl', }, { - title: 'File.DownloadUrl()', - href: '/reference/go/storage/bucket-file-downloadurl', - }, - { - title: 'File.UploadUrl()', - href: '/reference/go/storage/bucket-file-uploadurl', + title: 'Bucket.UploadUrl()', + href: '/reference/go/storage/bucket-uploadurl', }, ], }, From bf23405db68c6f0dcd5b9b300203da84772f8b55 Mon Sep 17 00:00:00 2001 From: Tim Holm Date: Mon, 23 Sep 2024 16:16:07 +1000 Subject: [PATCH 03/13] format fix --- src/pages/reference/go/storage/bucket-listfiles.mdx | 1 - src/pages/reference/go/topic/topic-publish.mdx | 4 ++-- src/pages/reference/go/websocket/websocket-on.mdx | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/pages/reference/go/storage/bucket-listfiles.mdx b/src/pages/reference/go/storage/bucket-listfiles.mdx index 5d5f9080d..4b622ecd8 100644 --- a/src/pages/reference/go/storage/bucket-listfiles.mdx +++ b/src/pages/reference/go/storage/bucket-listfiles.mdx @@ -73,4 +73,3 @@ func main() { } } ``` - diff --git a/src/pages/reference/go/topic/topic-publish.mdx b/src/pages/reference/go/topic/topic-publish.mdx index 94e406066..fd656c515 100644 --- a/src/pages/reference/go/topic/topic-publish.mdx +++ b/src/pages/reference/go/topic/topic-publish.mdx @@ -22,7 +22,7 @@ func main() { return } - updates.Publish(context.TODO(), + updates.Publish(context.TODO(), map[string]interface{}{ "something": "amazing happened", }, @@ -71,7 +71,7 @@ func main() { return } - err := updates.Publish(context.TODO(), + err := updates.Publish(context.TODO(), map[string]interface{}{ "something": "amazing happened", }, diff --git a/src/pages/reference/go/websocket/websocket-on.mdx b/src/pages/reference/go/websocket/websocket-on.mdx index eb09dcf5f..debe41ce8 100644 --- a/src/pages/reference/go/websocket/websocket-on.mdx +++ b/src/pages/reference/go/websocket/websocket-on.mdx @@ -46,8 +46,7 @@ func main() { The middleware function to use as the handler for Websocket events. If you - want to compose more than one middleware use - `nitric.Compose`. + want to compose more than one middleware use `nitric.Compose`. From 0cf0894df9ee5828e9391a894c0d15acb341dece Mon Sep 17 00:00:00 2001 From: Tim Holm Date: Tue, 24 Sep 2024 08:32:13 +1000 Subject: [PATCH 04/13] update encore go example --- src/pages/concepts/comparison/encore.mdx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/pages/concepts/comparison/encore.mdx b/src/pages/concepts/comparison/encore.mdx index 6691606d5..28bd7d9ed 100644 --- a/src/pages/concepts/comparison/encore.mdx +++ b/src/pages/concepts/comparison/encore.mdx @@ -22,7 +22,7 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/faas" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -33,12 +33,10 @@ func main() { return } - mainApi.Get("/hello/:name", func(ctx *faas.HttpContext, next faas.HttpHandler) (*faas.HttpContext, error) { + mainApi.Get("/hello/:name", func(ctx *apis.Ctx) { params := ctx.Request.PathParams() ctx.Response.Body = []byte("Hello " + params["name"]) - - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -74,7 +72,7 @@ The Nitric example shows an API where HTTP request handling is achieved using `f | | Nitric | Encore | | -------------------- | -------------------------------------------------------------------------------------------- | -------------------------- | | Language | Your choice | Go | -| Lines of code | 27 | 15 | +| Lines of code | 26 | 15 | | Cloud Infrastructure | Inferred | Inferred | | Extensibility | [Custom providers](/reference/providers/custom/building-custom-provider) can be created | No | | Local simulation | Built-in local simulator | Built-in local simulator | From e02bcba68fe664b84aa4d757b5c834923adc2d29 Mon Sep 17 00:00:00 2001 From: Tim Holm Date: Tue, 24 Sep 2024 08:44:06 +1000 Subject: [PATCH 05/13] cleanup older sdk references. --- src/pages/getting-started/quickstart.mdx | 12 ++--- .../getting-started/resources-overview.mdx | 44 +++++-------------- src/pages/reference/go/api/api-route-all.mdx | 2 +- src/pages/reference/go/api/api-route.mdx | 7 +-- .../reference/go/schedule/schedule-cron.mdx | 1 - .../reference/go/schedule/schedule-every.mdx | 6 +-- src/pages/reference/go/schedule/schedule.mdx | 5 +-- src/pages/reference/go/storage/bucket-on.mdx | 8 ++-- .../go/websocket/websocket-close.mdx | 4 +- .../reference/go/websocket/websocket-send.mdx | 28 ++++-------- 10 files changed, 35 insertions(+), 82 deletions(-) diff --git a/src/pages/getting-started/quickstart.mdx b/src/pages/getting-started/quickstart.mdx index 55fc203cd..dcaf48df1 100644 --- a/src/pages/getting-started/quickstart.mdx +++ b/src/pages/getting-started/quickstart.mdx @@ -272,7 +272,7 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -283,25 +283,19 @@ func main() { return } - api.Get("/hello/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Get("/hello/:name", func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte(fmt.Sprintf("Hello %s", name)) - - return next(ctx) }) - api.Get("/goodbye/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Get("/goodbye/:name", func(ctx *apis.Ctx) { name := ctx.Request.PathParams()["name"] ctx.Response.Body = []byte(fmt.Sprintf("Goodbye %s", name)) - - return next(ctx) }) if err := nitric.Run(); err != nil { fmt.Println(err) } - - fmt.Println("Service has started") } ``` diff --git a/src/pages/getting-started/resources-overview.mdx b/src/pages/getting-started/resources-overview.mdx index 564b16e90..f4733fec5 100644 --- a/src/pages/getting-started/resources-overview.mdx +++ b/src/pages/getting-started/resources-overview.mdx @@ -56,7 +56,7 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -70,11 +70,9 @@ func main() { // ✅ This declaration will work bucket, err := nitric.NewBucket("files").Allow(nitric.BucketRead) - api.Get("/files/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Get("/files/:name", func(ctx *apis.Ctx) { // ❌ This declaration will not work, as this is only called at runtime. badBucket, err := nitric.NewBucket("wont-work").Allow(nitric.BucketRead) - - return next(ctx) }) if err := nitric.Run(); err != nil { @@ -155,7 +153,7 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) @@ -170,20 +168,16 @@ func main() { bucket, err := nitric.NewBucket("files").Allow(nitric.BucketRead) // ❌ This access will not work - fileContents, _ := bucket.File("example.txt").Read() + fileContents, _ := bucket.Read(context.TODO(), "example.txt") - api.Get("/files/:name", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + api.Get("/files/:name", func(ctx *apis.Ctx) { // ✅ This access will work - fileContents, _ := bucket.File("example.txt").Read() - - return next(ctx) + fileContents, _ := bucket.Read(context.TODO(), "example.txt") }) if err := nitric.Run(); err != nil { fmt.Println(err) } - - fmt.Println("Service has started") } ``` @@ -329,7 +323,6 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" "github.com/nitrictech/your-org/your-repo/resources" ) @@ -340,19 +333,15 @@ func main() { panic(err) } - resources.PublicApi.Post("/update", func(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + resources.PublicApi.Post("/update", func() { publisher.Publish(context.TODO(), map[string]interface{}{ "test": "message", }) - - return next(ctx) }) if err := nitric.Run(); err != nil { fmt.Println(err) } - - fmt.Println("Api service has started") } @@ -362,16 +351,13 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" "github.com/nitrictech/your-org/your-repo/resources" ) func main() { - resources.UpdateTopic.Subscribe(func(mc *handler.MessageContext, mh handler.MessageHandler) (*handler.MessageContext, error) { + resources.UpdateTopic.Subscribe(func() { println("got the message") - - return mc, nil }) if err := nitric.Run(); err != nil { @@ -516,22 +502,19 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" "github.com/your-org/your-repo/resources" ) func main() { - resources.PublicApi.Get("/bucket-one/file/:name", func(hc *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + resources.PublicApi.Get("/bucket-one/file/:name", func(ctx *apis.Ctx) { // do something with the file - return next(hc) }) if err := nitric.Run(); err != nil { fmt.Println(err) } - - fmt.Println("Service has started") } // services/service-two/main.go @@ -540,22 +523,19 @@ package main import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" "github.com/your-org/your-repo/resources" ) func main() { - resources.PublicApi.Get("/bucket-two/file/:name", func(hc *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { + resources.PublicApi.Get("/bucket-two/file/:name", func(hc *apis.Ctx) { // do something with the file - return next(hc) }) if err := nitric.Run(); err != nil { fmt.Println(err) } - - fmt.Println("Service has started") } ``` diff --git a/src/pages/reference/go/api/api-route-all.mdx b/src/pages/reference/go/api/api-route-all.mdx index 05d2353a4..18aadebd3 100644 --- a/src/pages/reference/go/api/api-route-all.mdx +++ b/src/pages/reference/go/api/api-route-all.mdx @@ -162,7 +162,7 @@ For methods that include a request body, such as `POST` and `PUT`, you can acces import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) diff --git a/src/pages/reference/go/api/api-route.mdx b/src/pages/reference/go/api/api-route.mdx index d0de4b37e..845f38485 100644 --- a/src/pages/reference/go/api/api-route.mdx +++ b/src/pages/reference/go/api/api-route.mdx @@ -9,7 +9,6 @@ Creates a new route (path) within an API. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" ) @@ -53,7 +52,6 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" ) @@ -81,7 +79,6 @@ For example, if you have a customers path and you want to include a `customerId` import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" ) @@ -106,11 +103,11 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) -func authMiddleware(ctx *handler.HttpContext, next handler.HttpHandler) (*handler.HttpContext, error) { +func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { // Perform auth validation return next(ctx) } diff --git a/src/pages/reference/go/schedule/schedule-cron.mdx b/src/pages/reference/go/schedule/schedule-cron.mdx index 90d273235..23a82452c 100644 --- a/src/pages/reference/go/schedule/schedule-cron.mdx +++ b/src/pages/reference/go/schedule/schedule-cron.mdx @@ -9,7 +9,6 @@ Sets the cron expressions that determines when the schedule triggers and a callb import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" ) diff --git a/src/pages/reference/go/schedule/schedule-every.mdx b/src/pages/reference/go/schedule/schedule-every.mdx index f05e24bdd..2935a79a6 100644 --- a/src/pages/reference/go/schedule/schedule-every.mdx +++ b/src/pages/reference/go/schedule/schedule-every.mdx @@ -9,7 +9,6 @@ Sets the frequency and one or many handlers to be triggered. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" ) @@ -46,16 +45,13 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" ) func main() { // Create a schedule that runs every 3 minutes - nitric.NewSchedule("send reminder").Every("3 minutes", func(ctx *handler.IntervalContext, _ handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("send reminder").Every("3 minutes", func() { // code which sends a reminder - - return ctx, nil }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/schedule/schedule.mdx b/src/pages/reference/go/schedule/schedule.mdx index a5a8ffb1b..7470cef0e 100644 --- a/src/pages/reference/go/schedule/schedule.mdx +++ b/src/pages/reference/go/schedule/schedule.mdx @@ -9,15 +9,12 @@ Creates a new Schedule to run a function on a defined frequency. import ( "fmt" - "github.com/nitrictech/go-sdk/handler" "github.com/nitrictech/go-sdk/nitric" ) func main() { - nitric.NewSchedule("aggregate-data").Every("3 days", func(ctx *handler.IntervalContext, _ handler.IntervalHandler) (*handler.IntervalContext, error) { + nitric.NewSchedule("aggregate-data").Every("3 days", func() { fmt.Println("aggregating data") - - return ctx, nil }) if err := nitric.Run(); err != nil { diff --git a/src/pages/reference/go/storage/bucket-on.mdx b/src/pages/reference/go/storage/bucket-on.mdx index 5ddd2a5cf..5ea61de8a 100644 --- a/src/pages/reference/go/storage/bucket-on.mdx +++ b/src/pages/reference/go/storage/bucket-on.mdx @@ -10,7 +10,7 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/storage" "github.com/nitrictech/go-sdk/nitric" ) @@ -22,15 +22,15 @@ func main() { return } - assets.On(handler.DeleteNotification, "*", func(ctx *handler.BlobEventContext) { + assets.On(handler.DeleteNotification, "*", func(ctx *storage.Ctx) { fmt.Printf("a file named %s was deleted\n", ctx.Request.Key()) }) - assets.On(handler.WriteNotification, "/images/cat", func(ctx *handler.BlobEventContext) { + assets.On(handler.WriteNotification, "/images/cat", func(ctx *storage.Ctx) { fmt.Printf("a cat image was written") }) - assets.On(handler.WriteNotification, "/images/dog", func(ctx *handler.BlobEventContext) error { + assets.On(handler.WriteNotification, "/images/dog", func(ctx *storage.Ctx) error { dogImage, err := readableAssets.Read(context.TODO(), ctx.Request.Key()) if err != nil { return err diff --git a/src/pages/reference/go/websocket/websocket-close.mdx b/src/pages/reference/go/websocket/websocket-close.mdx index 81db2b838..71aecd7ce 100644 --- a/src/pages/reference/go/websocket/websocket-close.mdx +++ b/src/pages/reference/go/websocket/websocket-close.mdx @@ -47,7 +47,7 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/websockets" "github.com/nitrictech/go-sdk/nitric" ) @@ -58,7 +58,7 @@ func main() { } // Broadcast message to all the registered websocket connections - ws.On(handler.WebsocketMessage, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) (*websockets.Ctx, error) { if ctx.Request.Message() == "close" { err := ws.Close(context.Background(), ctx.Request.ConnectionID()) return ctx, err diff --git a/src/pages/reference/go/websocket/websocket-send.mdx b/src/pages/reference/go/websocket/websocket-send.mdx index d6dd53e84..2cf5551b6 100644 --- a/src/pages/reference/go/websocket/websocket-send.mdx +++ b/src/pages/reference/go/websocket/websocket-send.mdx @@ -55,7 +55,7 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/handler" + "github.com/nitrictech/go-sdk/nitric/websockets" "github.com/nitrictech/go-sdk/nitric" ) @@ -71,32 +71,22 @@ func main() { } // Register a new connection on connect - ws.On(handler.WebsocketConnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { - err := connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ + ws.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) error { + return connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ "connectionId": ctx.Request.ConnectionID(), }) - if err != nil { - return ctx, err - } - - return next(ctx) }) // Remove a registered connection on disconnect - ws.On(handler.WebsocketDisconnect, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { - err := connections.Delete(context.TODO(), ctx.Request.ConnectionID()) - if err != nil { - return ctx, err - } - - return next(ctx) + ws.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) error { + return connections.Delete(context.TODO(), ctx.Request.ConnectionID()) }) // Broadcast message to all the registered websocket connections - ws.On(handler.WebsocketMessage, func(ctx *handler.WebsocketContext, next handler.WebsocketHandler) (*handler.WebsocketContext, error) { + ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) error { connectionStream, err := connections.Keys(context.TODO()) if err != nil { - return ctx, err + return err } for { @@ -107,11 +97,11 @@ func main() { err = ws.Send(context.TODO(), connectionId, []byte(ctx.Request.Message())) if err != nil { - return ctx, err + return err } } - return next(ctx) + return nil }) if err := nitric.Run(); err != nil { From 2391f878127d825693f78fcce38d712dc3dd51c0 Mon Sep 17 00:00:00 2001 From: Tim Holm Date: Fri, 27 Sep 2024 10:10:54 +1000 Subject: [PATCH 06/13] add old go sdk reference redirects --- next.config.mjs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/next.config.mjs b/next.config.mjs index 74b8a5c4a..07d21a29e 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -36,6 +36,20 @@ const nextConfig = { permanent: true, }, // redirects from old docs + ...[ + '/docs/reference/go/storage/bucket-file', + '/docs/reference/go/storage/bucket-files', + '/docs/reference/go/storage/bucket-file-read', + '/docs/reference/go/storage/bucket-file-write', + '/docs/reference/go/storage/bucket-file-delete', + '/docs/reference/go/storage/bucket-file-downloadurl', + '/docs/reference/go/storage/bucket-file-uploadurl', + ].map((source) => ({ + source: source, + destination: `/docs/reference/go`, + basePath: false, + permanent: true, + })), ...[ '/docs/testing', '/docs/guides/debugging', From b481ed1fb36bfcee1c1cf28510b32b7bbabb5c54 Mon Sep 17 00:00:00 2001 From: Tim Holm Date: Fri, 27 Sep 2024 10:13:07 +1000 Subject: [PATCH 07/13] add old secret redirects. --- next.config.mjs | 3 +++ src/nav.config.ts | 19 ------------------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index 07d21a29e..d73b16681 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -37,6 +37,9 @@ const nextConfig = { }, // redirects from old docs ...[ + '/docs/reference/go/secrets/secret-version', + '/docs/reference/go/secrets/secret-latest', + '/docs/reference/go/secrets/secret-version-access', '/docs/reference/go/storage/bucket-file', '/docs/reference/go/storage/bucket-files', '/docs/reference/go/storage/bucket-file-read', diff --git a/src/nav.config.ts b/src/nav.config.ts index b25c002df..dc4005e52 100644 --- a/src/nav.config.ts +++ b/src/nav.config.ts @@ -2643,19 +2643,6 @@ const fullNav: FullNav = { title: 'Secret.Access()', href: '/reference/go/secrets/secret-access', }, - // TODO: Add redirects for these - // { - // title: 'Secret.Version()', - // href: '/reference/go/secrets/secret-version', - // }, - // { - // title: 'Secret.Latest()', - // href: '/reference/go/secrets/secret-latest', - // }, - // { - // title: 'Secret.Version.Access()', - // href: '/reference/go/secrets/secret-version-access', - // }, ], }, { @@ -2665,16 +2652,10 @@ const fullNav: FullNav = { title: 'Bucket.On()', href: '/reference/go/storage/bucket-on', }, - // Add redirect - // { - // title: 'Bucket.File()', - // href: '/reference/go/storage/bucket-file', - // }, { title: 'Bucket.ListFiles()', href: '/reference/go/storage/bucket-listfiles', }, - // TODO: Add redirects for these for their old file equivalents { title: 'Bucket.Read()', href: '/reference/go/storage/bucket-read', From 27a122479a4171e7b9a5481d0d71b307707a6b52 Mon Sep 17 00:00:00 2001 From: David Moore Date: Mon, 30 Sep 2024 18:50:06 +1000 Subject: [PATCH 08/13] fix broken link --- src/pages/reference/go/secrets/secret-put.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/reference/go/secrets/secret-put.mdx b/src/pages/reference/go/secrets/secret-put.mdx index 1570d1b5d..ed950dfa5 100644 --- a/src/pages/reference/go/secrets/secret-put.mdx +++ b/src/pages/reference/go/secrets/secret-put.mdx @@ -3,7 +3,7 @@ export const description = # Go - Secret.Put() -Store a new secret value, creating a new [version](./secret-version) to store the value. +Store a new secret value. ```go import ( From 5bf8574a6d730312abbaeba312d1c2f533063a5e Mon Sep 17 00:00:00 2001 From: Ryan Cartwright Date: Tue, 1 Oct 2024 15:38:14 +1000 Subject: [PATCH 09/13] update old sdk references --- src/pages/apis.mdx | 4 ++-- src/pages/reference/go/storage/bucket-on.mdx | 6 +++--- .../go/websocket/websocket-close.mdx | 2 +- .../reference/go/websocket/websocket-on.mdx | 20 +++++++++---------- .../reference/go/websocket/websocket-send.mdx | 6 +++--- src/pages/storage.mdx | 4 ++-- src/pages/websockets.mdx | 16 +++++++-------- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/pages/apis.mdx b/src/pages/apis.mdx index 1d930cc1e..d8ae32821 100644 --- a/src/pages/apis.mdx +++ b/src/pages/apis.mdx @@ -582,14 +582,14 @@ async function validate(ctx, next) { ```python async def validate(ctx, nxt: HttpMiddleware): if ctx.req.headers['content-type'] is None: - ctx.res.status = 400; + ctx.res.status = 400 ctx.res.body = "header Content-Type is required" return ctx return await nxt(ctx) ``` ```go -func validate(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*handler.HttpContext, error) { +func validate(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { if ctx.Request.Headers()["content-type"] != nil { ctx.Response.Status = 400 ctx.Response.Body = []byte("header Content-Type is required") diff --git a/src/pages/reference/go/storage/bucket-on.mdx b/src/pages/reference/go/storage/bucket-on.mdx index 5ea61de8a..db4b89bb3 100644 --- a/src/pages/reference/go/storage/bucket-on.mdx +++ b/src/pages/reference/go/storage/bucket-on.mdx @@ -22,15 +22,15 @@ func main() { return } - assets.On(handler.DeleteNotification, "*", func(ctx *storage.Ctx) { + assets.On(storage.DeleteNotification, "*", func(ctx *storage.Ctx) { fmt.Printf("a file named %s was deleted\n", ctx.Request.Key()) }) - assets.On(handler.WriteNotification, "/images/cat", func(ctx *storage.Ctx) { + assets.On(storage.WriteNotification, "/images/cat", func(ctx *storage.Ctx) { fmt.Printf("a cat image was written") }) - assets.On(handler.WriteNotification, "/images/dog", func(ctx *storage.Ctx) error { + assets.On(storage.WriteNotification, "/images/dog", func(ctx *storage.Ctx) error { dogImage, err := readableAssets.Read(context.TODO(), ctx.Request.Key()) if err != nil { return err diff --git a/src/pages/reference/go/websocket/websocket-close.mdx b/src/pages/reference/go/websocket/websocket-close.mdx index 71aecd7ce..9820a0f72 100644 --- a/src/pages/reference/go/websocket/websocket-close.mdx +++ b/src/pages/reference/go/websocket/websocket-close.mdx @@ -58,7 +58,7 @@ func main() { } // Broadcast message to all the registered websocket connections - ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) (*websockets.Ctx, error) { + ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) (*websockets.Ctx, error) { if ctx.Request.Message() == "close" { err := ws.Close(context.Background(), ctx.Request.ConnectionID()) return ctx, err diff --git a/src/pages/reference/go/websocket/websocket-on.mdx b/src/pages/reference/go/websocket/websocket-on.mdx index debe41ce8..139782dcc 100644 --- a/src/pages/reference/go/websocket/websocket-on.mdx +++ b/src/pages/reference/go/websocket/websocket-on.mdx @@ -19,15 +19,15 @@ func main() { return } - ws.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) { + ws.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { // handle connections }) - ws.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) { + ws.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) { // handle disconnections }) - ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) { + ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) { // handle messages }) @@ -41,8 +41,8 @@ func main() { - The type of websocket event to listen for. Can be `WebsocketConnect`, - `WebsocketDisconnect`, or `WebsocketMessage`. + The type of websocket event to listen for. Can be `EventType_Connect`, + `EventType_Disconnect`, or `EventType_Message`. The middleware function to use as the handler for Websocket events. If you @@ -55,7 +55,7 @@ func main() { ### Register a handler for message events ```go -ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) { +ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) { fmt.Printf("New Message from %s: %s\n", ctx.Request.ConnectionID(), ctx.Request.Message()) }) ``` @@ -85,19 +85,19 @@ func main() { } // Register a new connection on connect - ws.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) error { + ws.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) error { return := connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ "connectionId": ctx.Request.ConnectionID(), }) }) // Remove a registered connection on disconnect - ws.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) error { + ws.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) error { return connections.Delete(context.TODO(), ctx.Request.ConnectionID()) }) // Broadcast message to all the registered websocket connections - ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) error { + ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) error { connectionStream, err := connections.Keys(context.TODO()) if err != nil { return ctx, err @@ -151,7 +151,7 @@ func main() { return } - ws.On(handler.WebsocketMessage, validateMessage, handleMessage) + ws.On(websockets.EventType_Message, validateMessage, handleMessage) if err := nitric.Run(); err != nil { fmt.Println(err) diff --git a/src/pages/reference/go/websocket/websocket-send.mdx b/src/pages/reference/go/websocket/websocket-send.mdx index 2cf5551b6..b12d6f14a 100644 --- a/src/pages/reference/go/websocket/websocket-send.mdx +++ b/src/pages/reference/go/websocket/websocket-send.mdx @@ -71,19 +71,19 @@ func main() { } // Register a new connection on connect - ws.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) error { + ws.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) error { return connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ "connectionId": ctx.Request.ConnectionID(), }) }) // Remove a registered connection on disconnect - ws.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) error { + ws.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) error { return connections.Delete(context.TODO(), ctx.Request.ConnectionID()) }) // Broadcast message to all the registered websocket connections - ws.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) error { + ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) error { connectionStream, err := connections.Keys(context.TODO()) if err != nil { return err diff --git a/src/pages/storage.mdx b/src/pages/storage.mdx index 0c126098c..3ef07123c 100644 --- a/src/pages/storage.mdx +++ b/src/pages/storage.mdx @@ -522,7 +522,7 @@ func main() { profiles := nitric.NewBucket("profiles") // Filter for 'write' events for files starting with '/users/images' - profiles.On(handler.WriteNotification, "/users/images", func(ctx *storage.Ctx) { + profiles.On(storage.WriteNotification, "/users/images", func(ctx *storage.Ctx) { fmt.Printf("new profile image for %s was written", ctx.Request.Key()) }) @@ -588,7 +588,7 @@ func main() { profiles := nitric.NewBucket("profiles") // Filter for 'delete' events for any file - profiles.On(handler.DeleteNotification, "*", func(ctx *storage.Ctx) { + profiles.On(storage.DeleteNotification, "*", func(ctx *storage.Ctx) { fmt.Printf("%s was deleted", ctx.Request.Key()) }) diff --git a/src/pages/websockets.mdx b/src/pages/websockets.mdx index ebf2a82b5..c0de0c97a 100644 --- a/src/pages/websockets.mdx +++ b/src/pages/websockets.mdx @@ -66,15 +66,15 @@ import ( func main() { socket, _ := nitric.NewWebsocket("socket") - socket.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) { + socket.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { // handle connections }) - socket.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) { + socket.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) { // handle disconnections }) - socket.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) { + socket.On(websockets.EventType_Message, func(ctx *websockets.Ctx) { // handle messages }) @@ -175,7 +175,7 @@ func main() { connections, _ := nitric.NewKv("connections").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) // Register a new connection on connect - socket.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) { + socket.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { _ = connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ // Store any metadata related to the connection here "connectionId": ctx.Request.ConnectionID(), @@ -183,7 +183,7 @@ func main() { }) // Remove a registered connection on disconnect - socket.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) { + socket.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) { _ = connections.Delete(context.TODO(), ctx.Request.ConnectionID()) }) @@ -315,7 +315,7 @@ func main() { connections, _ := nitric.NewKv("connections").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) // Register a new connection on connect - socket.On(handler.WebsocketConnect, func(ctx *websockets.Ctx) { + socket.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { _ = connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ // Store any metadata related to the connection here "connectionId": ctx.Request.ConnectionID(), @@ -323,12 +323,12 @@ func main() { }) // Remove a registered connection on disconnect - socket.On(handler.WebsocketDisconnect, func(ctx *websockets.Ctx) { + socket.On(websockets.EventType_Disconnnect, func(ctx *websockets.Ctx) { _ = connections.Delete(context.TODO(), ctx.Request.ConnectionID()) }) // Broadcast message to all the registered websocket connections - socket.On(handler.WebsocketMessage, func(ctx *websockets.Ctx) { + socket.On(websockets.EventType_Message, func(ctx *websockets.Ctx) { connectionStream, _ := connections.Keys(context.TODO()) for { From 0586fffe3642a458f92bfc68167a4c2d789eaf26 Mon Sep 17 00:00:00 2001 From: Ryan Cartwright Date: Tue, 1 Oct 2024 17:33:47 +1000 Subject: [PATCH 10/13] update security definitions with open id configuration and correct pkg --- src/pages/apis.mdx | 16 +++++++++++++--- src/pages/reference/go/api/api-delete.mdx | 4 ++-- src/pages/reference/go/api/api-get.mdx | 2 +- src/pages/reference/go/api/api-patch.mdx | 4 ++-- src/pages/reference/go/api/api-post.mdx | 4 ++-- src/pages/reference/go/api/api-put.mdx | 4 ++-- src/pages/reference/go/api/api-route-delete.mdx | 4 ++-- src/pages/reference/go/api/api-route-get.mdx | 4 ++-- src/pages/reference/go/api/api-route-patch.mdx | 4 ++-- src/pages/reference/go/api/api-route-post.mdx | 4 ++-- src/pages/reference/go/api/api-route-put.mdx | 4 ++-- src/pages/reference/go/api/api.mdx | 5 +++-- 12 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/pages/apis.mdx b/src/pages/apis.mdx index d8ae32821..72a6b9c9c 100644 --- a/src/pages/apis.mdx +++ b/src/pages/apis.mdx @@ -366,14 +366,19 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - defaultSecurityRule := nitric.OidcRule("default", "https://dev-abc123.us.auth0.com", []string{"https://test-security-definition/"}) + defaultSecurityRule := apis.OidcRule( + "default", + "https://dev-abc123.us.auth0.com", + []string{"https://test-security-definition/.well-known/openid-configuration"} + ) secureApi, err := nitric.NewApi( "main", - nitric.WithSecurity(defaultSecurityRule([]string{})), + apis.WithSecurity(defaultSecurityRule([]string{})), ) if err != nil { return @@ -458,10 +463,15 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - defaultSecurityRule := nitric.OidcRule("default", "https://dev-abc123.us.auth0.com", []string{"https://test-security-definition/"}) + defaultSecurityRule := nitric.OidcRule( + "default", + "https://dev-abc123.us.auth0.com/.well-known/openid-configuration", + []string{"https://test-security-definition/"} + ) secureApi, err := nitric.NewApi( "main", diff --git a/src/pages/reference/go/api/api-delete.mdx b/src/pages/reference/go/api/api-delete.mdx index 9f5695dee..e9e7b34a4 100644 --- a/src/pages/reference/go/api/api-delete.mdx +++ b/src/pages/reference/go/api/api-delete.mdx @@ -101,11 +101,11 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api-get.mdx b/src/pages/reference/go/api/api-get.mdx index 4455b2afc..a1cbc816d 100644 --- a/src/pages/reference/go/api/api-get.mdx +++ b/src/pages/reference/go/api/api-get.mdx @@ -101,7 +101,7 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api-patch.mdx b/src/pages/reference/go/api/api-patch.mdx index 7062e6396..15e345ba5 100644 --- a/src/pages/reference/go/api/api-patch.mdx +++ b/src/pages/reference/go/api/api-patch.mdx @@ -101,11 +101,11 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api-post.mdx b/src/pages/reference/go/api/api-post.mdx index 5ed63edf7..a9193e32d 100644 --- a/src/pages/reference/go/api/api-post.mdx +++ b/src/pages/reference/go/api/api-post.mdx @@ -101,11 +101,11 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api-put.mdx b/src/pages/reference/go/api/api-put.mdx index a76ac9979..56b21a465 100644 --- a/src/pages/reference/go/api/api-put.mdx +++ b/src/pages/reference/go/api/api-put.mdx @@ -101,11 +101,11 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api-route-delete.mdx b/src/pages/reference/go/api/api-route-delete.mdx index 3ed16bfe3..b0565a597 100644 --- a/src/pages/reference/go/api/api-route-delete.mdx +++ b/src/pages/reference/go/api/api-route-delete.mdx @@ -90,11 +90,11 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api-route-get.mdx b/src/pages/reference/go/api/api-route-get.mdx index a3e292993..9a0baa868 100644 --- a/src/pages/reference/go/api/api-route-get.mdx +++ b/src/pages/reference/go/api/api-route-get.mdx @@ -90,11 +90,11 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api-route-patch.mdx b/src/pages/reference/go/api/api-route-patch.mdx index 061982a10..0b7fab8fe 100644 --- a/src/pages/reference/go/api/api-route-patch.mdx +++ b/src/pages/reference/go/api/api-route-patch.mdx @@ -90,11 +90,11 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api-route-post.mdx b/src/pages/reference/go/api/api-route-post.mdx index 42f57ce5d..3de6186f5 100644 --- a/src/pages/reference/go/api/api-route-post.mdx +++ b/src/pages/reference/go/api/api-route-post.mdx @@ -90,11 +90,11 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api-route-put.mdx b/src/pages/reference/go/api/api-route-put.mdx index 32b24c436..10a83ce55 100644 --- a/src/pages/reference/go/api/api-route-put.mdx +++ b/src/pages/reference/go/api/api-route-put.mdx @@ -90,11 +90,11 @@ import ( ) func main() { - defaultOidcRule := nitric.OidcRule("user", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api.mdx b/src/pages/reference/go/api/api.mdx index 8881bf141..7a537835f 100644 --- a/src/pages/reference/go/api/api.mdx +++ b/src/pages/reference/go/api/api.mdx @@ -172,15 +172,16 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - defaultSecurityRule := nitric.OidcRule("default", "https://example-issuer.com", []string{"YOUR-AUDIENCES"}) + defaultSecurityRule := apis.OidcRule("default", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) secureApi, err := nitric.NewApi( "secure", // apply the security definition to all routes in this API. - nitric.WithSecurity(defaultSecurityRule([]string{})), + apis.WithSecurity(defaultSecurityRule([]string{})), ) if err != nil { return From 1292623a27f0af626ca559c72efa119a01929ee0 Mon Sep 17 00:00:00 2001 From: Ryan Cartwright Date: Wed, 2 Oct 2024 09:55:58 +1000 Subject: [PATCH 11/13] keep examples from overflowing off the page --- src/pages/apis.mdx | 4 ++-- src/pages/reference/go/api/api-delete.mdx | 6 +++++- src/pages/reference/go/api/api-get.mdx | 9 ++++++--- src/pages/reference/go/api/api-patch.mdx | 6 +++++- src/pages/reference/go/api/api-post.mdx | 6 +++++- src/pages/reference/go/api/api-put.mdx | 6 +++++- src/pages/reference/go/api/api-route-delete.mdx | 6 +++++- src/pages/reference/go/api/api-route-get.mdx | 6 +++++- src/pages/reference/go/api/api-route-patch.mdx | 6 +++++- src/pages/reference/go/api/api-route-post.mdx | 6 +++++- src/pages/reference/go/api/api-route-put.mdx | 6 +++++- src/pages/reference/go/api/api.mdx | 6 +++++- 12 files changed, 58 insertions(+), 15 deletions(-) diff --git a/src/pages/apis.mdx b/src/pages/apis.mdx index 72a6b9c9c..f80c70d45 100644 --- a/src/pages/apis.mdx +++ b/src/pages/apis.mdx @@ -372,8 +372,8 @@ import ( func main() { defaultSecurityRule := apis.OidcRule( "default", - "https://dev-abc123.us.auth0.com", - []string{"https://test-security-definition/.well-known/openid-configuration"} + "https://dev-abc123.us.auth0.com/.well-known/openid-configuration", + []string{"https://test-security-definition"} ) secureApi, err := nitric.NewApi( diff --git a/src/pages/reference/go/api/api-delete.mdx b/src/pages/reference/go/api/api-delete.mdx index e9e7b34a4..23c1b2d1f 100644 --- a/src/pages/reference/go/api/api-delete.mdx +++ b/src/pages/reference/go/api/api-delete.mdx @@ -101,7 +101,11 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api-get.mdx b/src/pages/reference/go/api/api-get.mdx index a1cbc816d..1e7dc8c0a 100644 --- a/src/pages/reference/go/api/api-get.mdx +++ b/src/pages/reference/go/api/api-get.mdx @@ -101,11 +101,14 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) - + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", - nitric.WithSecurity(defaultOidcRule([]string{"products:read"}))) + apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) if err != nil { return } diff --git a/src/pages/reference/go/api/api-patch.mdx b/src/pages/reference/go/api/api-patch.mdx index 15e345ba5..25eb1aeaa 100644 --- a/src/pages/reference/go/api/api-patch.mdx +++ b/src/pages/reference/go/api/api-patch.mdx @@ -101,7 +101,11 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api-post.mdx b/src/pages/reference/go/api/api-post.mdx index a9193e32d..f9a5b04fc 100644 --- a/src/pages/reference/go/api/api-post.mdx +++ b/src/pages/reference/go/api/api-post.mdx @@ -101,7 +101,11 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api-put.mdx b/src/pages/reference/go/api/api-put.mdx index 56b21a465..ab4ab9026 100644 --- a/src/pages/reference/go/api/api-put.mdx +++ b/src/pages/reference/go/api/api-put.mdx @@ -101,7 +101,11 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api-route-delete.mdx b/src/pages/reference/go/api/api-route-delete.mdx index b0565a597..df86e3a69 100644 --- a/src/pages/reference/go/api/api-route-delete.mdx +++ b/src/pages/reference/go/api/api-route-delete.mdx @@ -90,7 +90,11 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api-route-get.mdx b/src/pages/reference/go/api/api-route-get.mdx index 9a0baa868..057aac4df 100644 --- a/src/pages/reference/go/api/api-route-get.mdx +++ b/src/pages/reference/go/api/api-route-get.mdx @@ -90,7 +90,11 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api-route-patch.mdx b/src/pages/reference/go/api/api-route-patch.mdx index 0b7fab8fe..5a3445909 100644 --- a/src/pages/reference/go/api/api-route-patch.mdx +++ b/src/pages/reference/go/api/api-route-patch.mdx @@ -90,7 +90,11 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api-route-post.mdx b/src/pages/reference/go/api/api-route-post.mdx index 3de6186f5..887a5192d 100644 --- a/src/pages/reference/go/api/api-route-post.mdx +++ b/src/pages/reference/go/api/api-route-post.mdx @@ -90,7 +90,11 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api-route-put.mdx b/src/pages/reference/go/api/api-route-put.mdx index 10a83ce55..aae1390c5 100644 --- a/src/pages/reference/go/api/api-route-put.mdx +++ b/src/pages/reference/go/api/api-route-put.mdx @@ -90,7 +90,11 @@ import ( ) func main() { - defaultOidcRule := apis.OidcRule("user", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", diff --git a/src/pages/reference/go/api/api.mdx b/src/pages/reference/go/api/api.mdx index 7a537835f..371abba38 100644 --- a/src/pages/reference/go/api/api.mdx +++ b/src/pages/reference/go/api/api.mdx @@ -176,7 +176,11 @@ import ( ) func main() { - defaultSecurityRule := apis.OidcRule("default", "https://example-issuer.com/.well-known/openid-configuration", []string{"YOUR-AUDIENCES"}) + defaultOidcRule := apis.OidcRule( + "user", + "https://example-issuer.com/.well-known/openid-configuration", + []string{"YOUR-AUDIENCES"}, + ) secureApi, err := nitric.NewApi( "secure", From 071625e7989668de53c52d08f4632a7946d1195c Mon Sep 17 00:00:00 2001 From: Jye Cusch Date: Wed, 2 Oct 2024 11:50:43 +1000 Subject: [PATCH 12/13] update Go middleware docs --- src/pages/apis.mdx | 60 +++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/src/pages/apis.mdx b/src/pages/apis.mdx index f80c70d45..e112591e4 100644 --- a/src/pages/apis.mdx +++ b/src/pages/apis.mdx @@ -572,9 +572,9 @@ galaxyApi.post("/planets/unsecured-planet", (ctx) async { ## Defining Middleware -Behavior that's common to several APIs or routes can be applied using middleware services. Multiple middleware can also be composed to create a cascading set of steps to perform on incoming requests or outgoing responses. +Behavior that's common to several APIs or routes can be applied using middleware. Multiple middleware can also be composed to create a cascading set of steps to perform on incoming requests or outgoing responses. -Middleware services look nearly identical to handlers except for an additional parameter called `next`, which is the next middleware or handler to be called in the chain. By providing each middleware the next middleware in the chain it allows them to intercept requests, response and errors to perform operations like logging, decoration, exception handling and many other common tasks. +In most of Nitric's supported languages middleware functions look nearly identical to handlers except for an additional parameter called `next`, which is the next middleware or handler to be called in the chain. By providing each middleware the next middleware in the chain it allows them to intercept requests, response and errors to perform operations like logging, decoration, exception handling and many other common tasks. @@ -599,15 +599,18 @@ async def validate(ctx, nxt: HttpMiddleware): ``` ```go -func validate(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - if ctx.Request.Headers()["content-type"] != nil { - ctx.Response.Status = 400 - ctx.Response.Body = []byte("header Content-Type is required") +// Using the Go SDK we recommend using higher-order functions to define middleware +func validate(next nitric.Handler[apis.Ctx]) nitric.Handler[apis.Ctx] { + return func (ctx *apis.Ctx) error { + if ctx.Request.Headers()["content-type"] != nil { + ctx.Response.Status = 400 + ctx.Response.Body = []byte("header Content-Type is required") - return ctx, nil - } + return nil + } - return next(ctx) + return next(ctx) + } } ``` @@ -650,21 +653,23 @@ import ( "github.com/nitrictech/go-sdk/nitric" ) -func validate(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - if ctx.Request.Headers()["content-type"] != nil { - ctx.Response.Status = 400 - ctx.Response.Body = []byte("header Content-Type is required") +func validate(next nitric.Handler[apis.Ctx]) nitric.Handler[apis.Ctx] { + return func (ctx *apis.Ctx) error { + if ctx.Request.Headers()["content-type"] != nil { + ctx.Response.Status = 400 + ctx.Response.Body = []byte("header Content-Type is required") - return ctx, nil - } + return nil + } - return next(ctx) + return next(ctx) + } } func main() { customersApi, err := nitric.NewApi( "customers", - nitric.WithMiddleware(validate)) + apis.WithMiddleware(validate)) if err != nil { return @@ -715,26 +720,27 @@ import ( "github.com/nitrictech/go-sdk/nitric" ) -func validate(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - if ctx.Request.Headers()["content-type"] != nil { - ctx.Response.Status = 400 - ctx.Response.Body = []byte("header Content-Type is required") +func validate(next nitric.Handler[apis.Ctx]) nitric.Handler[apis.Ctx] { + return func (ctx *apis.Ctx) error { + if ctx.Request.Headers()["content-type"] != nil { + ctx.Response.Status = 400 + ctx.Response.Body = []byte("header Content-Type is required") - return ctx, nil - } + return nil + } - return next(ctx) + return next(ctx) + } } func main() { - customersApi, err := nitric.NewApi( - "customers") + customersApi, err := nitric.NewApi("customers") if err != nil { return } - customersApi.Get("/customers", nitric.Compose(validate, func(ctx *apis.Ctx) { + customersApi.Get("/customers", validate(func(ctx *apis.Ctx) { // handle request })) From fdfeb68e77f2380706fad6e184bf67013281ea6b Mon Sep 17 00:00:00 2001 From: Jye Cusch Date: Wed, 2 Oct 2024 15:38:52 +1000 Subject: [PATCH 13/13] new Go sdk docs --- src/pages/apis.mdx | 325 +++++++----------- .../guides/go/serverless-rest-api-example.mdx | 40 +-- src/pages/keyvalue.mdx | 105 +++--- src/pages/messaging.mdx | 162 ++++----- src/pages/reference/go/api/api-delete.mdx | 98 +----- src/pages/reference/go/api/api-get.mdx | 91 +---- src/pages/reference/go/api/api-patch.mdx | 117 +------ src/pages/reference/go/api/api-post.mdx | 107 +----- src/pages/reference/go/api/api-put.mdx | 115 +------ src/pages/reference/go/api/api-route-all.mdx | 157 ++------- .../reference/go/api/api-route-delete.mdx | 142 +------- src/pages/reference/go/api/api-route-get.mdx | 112 +----- .../reference/go/api/api-route-patch.mdx | 142 +------- src/pages/reference/go/api/api-route-post.mdx | 150 +------- src/pages/reference/go/api/api-route-put.mdx | 142 +------- src/pages/reference/go/api/api-route.mdx | 99 +----- src/pages/reference/go/api/api.mdx | 98 ++---- .../reference/go/keyvalue/keyvalue-delete.mdx | 38 +- .../reference/go/keyvalue/keyvalue-get.mdx | 56 ++- .../reference/go/keyvalue/keyvalue-keys.mdx | 128 +++---- .../reference/go/keyvalue/keyvalue-set.mdx | 42 +-- src/pages/reference/go/keyvalue/keyvalue.mdx | 123 +++---- .../reference/go/queues/queue-dequeue.mdx | 72 ++-- .../reference/go/queues/queue-enqueue.mdx | 70 ++-- src/pages/reference/go/queues/queue.mdx | 78 ++--- .../reference/go/schedule/schedule-cron.mdx | 55 +-- .../reference/go/schedule/schedule-every.mdx | 48 +-- src/pages/reference/go/schedule/schedule.mdx | 14 +- .../go/secrets/secret-access-version.mdx | 32 +- .../reference/go/secrets/secret-access.mdx | 39 +-- src/pages/reference/go/secrets/secret-put.mdx | 32 +- src/pages/reference/go/secrets/secret.mdx | 28 +- .../reference/go/storage/bucket-delete.mdx | 26 +- .../go/storage/bucket-downloadurl.mdx | 21 +- .../reference/go/storage/bucket-listfiles.mdx | 29 +- src/pages/reference/go/storage/bucket-on.mdx | 16 +- .../reference/go/storage/bucket-read.mdx | 20 +- .../reference/go/storage/bucket-uploadurl.mdx | 22 +- .../reference/go/storage/bucket-write.mdx | 26 +- src/pages/reference/go/storage/bucket.mdx | 14 +- .../reference/go/topic/topic-publish.mdx | 49 +-- .../reference/go/topic/topic-subscribe.mdx | 45 +-- src/pages/reference/go/topic/topic.mdx | 12 +- src/pages/reference/go/v0/api/api-delete.mdx | 16 +- src/pages/reference/go/v0/api/api-details.mdx | 8 +- src/pages/reference/go/v0/api/api-get.mdx | 12 +- src/pages/reference/go/v0/api/api-patch.mdx | 16 +- src/pages/reference/go/v0/api/api-post.mdx | 16 +- src/pages/reference/go/v0/api/api-put.mdx | 16 +- .../reference/go/v0/api/api-route-all.mdx | 20 +- .../reference/go/v0/api/api-route-delete.mdx | 16 +- .../reference/go/v0/api/api-route-get.mdx | 12 +- .../reference/go/v0/api/api-route-patch.mdx | 16 +- .../reference/go/v0/api/api-route-post.mdx | 16 +- .../reference/go/v0/api/api-route-put.mdx | 16 +- src/pages/reference/go/v0/api/api-route.mdx | 16 +- src/pages/reference/go/v0/api/api.mdx | 20 +- .../v0/collection/collection-collection.mdx | 8 +- .../collection/collection-doc-collection.mdx | 4 +- .../v0/collection/collection-doc-delete.mdx | 4 +- .../go/v0/collection/collection-doc-get.mdx | 4 +- .../go/v0/collection/collection-doc-set.mdx | 12 +- .../go/v0/collection/collection-doc.mdx | 4 +- .../v0/collection/collection-query-fetch.mdx | 12 +- .../v0/collection/collection-query-limit.mdx | 4 +- .../v0/collection/collection-query-stream.mdx | 8 +- .../v0/collection/collection-query-where.mdx | 12 +- .../go/v0/collection/collection-query.mdx | 4 +- .../reference/go/v0/collection/collection.mdx | 8 +- .../reference/go/v0/queues/queue-receive.mdx | 8 +- .../reference/go/v0/queues/queue-send.mdx | 8 +- src/pages/reference/go/v0/queues/queue.mdx | 12 +- .../go/v0/schedule/schedule-cron.mdx | 12 +- .../go/v0/schedule/schedule-every.mdx | 12 +- .../reference/go/v0/schedule/schedule.mdx | 8 +- .../reference/go/v0/secrets/secret-latest.mdx | 12 +- .../reference/go/v0/secrets/secret-put.mdx | 12 +- .../go/v0/secrets/secret-version-access.mdx | 12 +- .../go/v0/secrets/secret-version.mdx | 12 +- src/pages/reference/go/v0/secrets/secret.mdx | 8 +- .../go/v0/storage/bucket-file-delete.mdx | 8 +- .../go/v0/storage/bucket-file-downloadurl.mdx | 12 +- .../go/v0/storage/bucket-file-read.mdx | 8 +- .../go/v0/storage/bucket-file-uploadurl.mdx | 8 +- .../go/v0/storage/bucket-file-write.mdx | 8 +- .../reference/go/v0/storage/bucket-file.mdx | 4 +- .../reference/go/v0/storage/bucket-files.mdx | 8 +- .../reference/go/v0/storage/bucket-on.mdx | 4 +- src/pages/reference/go/v0/storage/bucket.mdx | 4 +- .../reference/go/v0/topic/topic-publish.mdx | 12 +- .../reference/go/v0/topic/topic-subscribe.mdx | 12 +- src/pages/reference/go/v0/topic/topic.mdx | 8 +- .../go/v0/websocket/websocket-close.mdx | 8 +- .../go/v0/websocket/websocket-details.mdx | 8 +- .../go/v0/websocket/websocket-on.mdx | 12 +- .../go/v0/websocket/websocket-send.mdx | 8 +- .../reference/go/v0/websocket/websocket.mdx | 8 +- .../go/websocket/websocket-close.mdx | 48 +-- .../reference/go/websocket/websocket-on.mdx | 137 +++----- .../reference/go/websocket/websocket-send.mdx | 104 +++--- .../reference/go/websocket/websocket.mdx | 26 +- src/pages/schedules.mdx | 102 +++--- src/pages/secrets.mdx | 55 ++- src/pages/sql.mdx | 56 +++ src/pages/storage.mdx | 144 ++++---- src/pages/websockets.mdx | 148 ++++---- 106 files changed, 1330 insertions(+), 3383 deletions(-) diff --git a/src/pages/apis.mdx b/src/pages/apis.mdx index e112591e4..cd4c60bca 100644 --- a/src/pages/apis.mdx +++ b/src/pages/apis.mdx @@ -41,26 +41,17 @@ Nitric.run() package main import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - galaxyApi, err := nitric.NewApi("far-away-galaxy-api") - if err != nil { - fmt.Println(err) - return - } - - galaxyApi.Get("/moon", func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("that's no moon, it's a space station.") - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + galaxyApi := nitric.NewApi("far-away-galaxy-api") + galaxyApi.Get("/moon", func(ctx *apis.Ctx) { + ctx.Response.Body = []byte("that's no moon, it's a space station.") + }) + + nitric.Run() } ``` @@ -122,33 +113,24 @@ async def create_planet(ctx): package main import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" - "github.com/your-org/your-repo/planets" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - galaxyApi, err := nitric.NewApi("far-away-galaxy-api") - if err != nil { - fmt.Println(err) - return - } - - galaxyApi.Get("/planets", func(ctx *apis.Ctx) { - ctx.Response.Headers = map[string][]string{"Content-Type": {"application/json"}} - ctx.Response.Body = []byte(GetPlanetList()) - }) - - galaxyApi.Post("/planets", func(ctx *apis.Ctx) { - CreatePlanet(ctx.Request.Data()) - ctx.Response.Status = 201 - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + galaxyApi := nitric.NewApi("far-away-galaxy-api") + + galaxyApi.Get("/planets", func(ctx *apis.Ctx) { + ctx.Response.Headers = map[string][]string{"Content-Type": {"application/json"}} + ctx.Response.Body = []byte(GetPlanetList()) + }) + + galaxyApi.Post("/planets", func(ctx *apis.Ctx) { + CreatePlanet(ctx.Request.Data()) + ctx.Response.Status = 201 + }) + + nitric.Run() } ``` @@ -210,31 +192,23 @@ async def get_planet_route(ctx): package main import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" - "github.com/your-org/your-repo/planets" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - galaxyApi, err := nitric.NewApi("far-away-galaxy-api") - if err != nil { - fmt.Println(err) - return - } - - // create a dynamic route and extract the parameter `name` - galaxyApi.Get("/planets/:name", func(ctx *apis.Ctx) { - name := ctx.Request.PathParams()["name"] - - ctx.Response.Body = []byte(GetPlanet(name)) - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + galaxyApi := nitric.NewApi("far-away-galaxy-api") + + // create a dynamic route and extract the parameter `name` + galaxyApi.Get("/planets/:name", func(ctx *apis.Ctx) { + name := ctx.Request.PathParams()["name"] + + ctx.Response.Body = []byte(GetPlanet(name)) + }) + + nitric.Run() } + ``` ```dart @@ -363,30 +337,23 @@ Nitric.run() package main import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" - "github.com/nitrictech/go-sdk/nitric/apis" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - defaultSecurityRule := apis.OidcRule( - "default", - "https://dev-abc123.us.auth0.com/.well-known/openid-configuration", - []string{"https://test-security-definition"} - ) - - secureApi, err := nitric.NewApi( - "main", - apis.WithSecurity(defaultSecurityRule([]string{})), - ) - if err != nil { - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + defaultSecurityRule := apis.OidcRule( + "default", + "https://dev-abc123.us.auth0.com/.well-known/openid-configuration", + []string{"https://test-security-definition"}, + ) + + secureApi := nitric.NewApi( + "main", + apis.WithSecurity(defaultSecurityRule([]string{})), + ) + + nitric.Run() } ``` @@ -460,31 +427,25 @@ Nitric.run() package main import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" - "github.com/nitrictech/go-sdk/nitric/apis" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - defaultSecurityRule := nitric.OidcRule( - "default", - "https://dev-abc123.us.auth0.com/.well-known/openid-configuration", - []string{"https://test-security-definition/"} - ) - - secureApi, err := nitric.NewApi( - "main", - nitric.WithSecurity(defaultSecurityRule([]string{"user.read"})), - ) - if err != nil { - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + defaultSecurityRule := apis.OidcRule( + "default", + "https://dev-abc123.us.auth0.com/.well-known/openid-configuration", + []string{"https://test-security-definition/"}, + ) + + secureApi := nitric.NewApi( + "main", + apis.WithSecurity(defaultSecurityRule([]string{"user.read"})), + ) + + nitric.Run() } + ``` ```dart @@ -548,12 +509,12 @@ async def get_planet(ctx): // override top level security to remove security from this route secureApi.Get("/planets/unsecured-planet", func(ctx *apis.Ctx) { // Handle request -}, nitric.WithNoMethodSecurity()) +}, apis.WithNoMethodSecurity()) // override top level security to require user.write scope to access secureApi.Get("/planets/unsecured-planet", func(ctx *apis.Ctx) { // Handle request -}, nitric.WithSecurity(customRule([]string{"users:write"}))) +}, apis.WithSecurity(customRule([]string{"users:write"}))) ``` ```dart @@ -600,7 +561,7 @@ async def validate(ctx, nxt: HttpMiddleware): ```go // Using the Go SDK we recommend using higher-order functions to define middleware -func validate(next nitric.Handler[apis.Ctx]) nitric.Handler[apis.Ctx] { +func validate(next apis.Handler) apis.Handler { return func (ctx *apis.Ctx) error { if ctx.Request.Headers()["content-type"] != nil { ctx.Response.Status = 400 @@ -647,14 +608,12 @@ Nitric.run() ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) -func validate(next nitric.Handler[apis.Ctx]) nitric.Handler[apis.Ctx] { - return func (ctx *apis.Ctx) error { +func validate(next apis.Handler) apis.Handler { + return func(ctx *apis.Ctx) error { if ctx.Request.Headers()["content-type"] != nil { ctx.Response.Status = 400 ctx.Response.Body = []byte("header Content-Type is required") @@ -667,17 +626,11 @@ func validate(next nitric.Handler[apis.Ctx]) nitric.Handler[apis.Ctx] { } func main() { - customersApi, err := nitric.NewApi( - "customers", - apis.WithMiddleware(validate)) - - if err != nil { - return - } + customersApi := nitric.NewApi( + "customers", + apis.WithMiddleware(validate)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -714,14 +667,12 @@ Route level middleware currently not supported in python ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) -func validate(next nitric.Handler[apis.Ctx]) nitric.Handler[apis.Ctx] { - return func (ctx *apis.Ctx) error { +func validate(next apis.Handler) apis.Handler { + return func(ctx *apis.Ctx) error { if ctx.Request.Headers()["content-type"] != nil { ctx.Response.Status = 400 ctx.Response.Body = []byte("header Content-Type is required") @@ -734,19 +685,14 @@ func validate(next nitric.Handler[apis.Ctx]) nitric.Handler[apis.Ctx] { } func main() { - customersApi, err := nitric.NewApi("customers") - - if err != nil { - return - } + customersApi := nitric.NewApi("customers") - customersApi.Get("/customers", validate(func(ctx *apis.Ctx) { - // handle request - })) + customersApi.Get("/customers", validate(func(ctx *apis.Ctx) error { + // handle request + return nil + })) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -910,29 +856,19 @@ Nitric.run() ``` ```go {{ tag: 'services/one/main.go' }} -package main - import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - accountsApi, err := nitric.NewApi("accounts") - - if err != nil { - return - } + accountsApi := nitric.NewApi("accounts") - accountsApi.Get("/users/:id", func(ctx *apis.Ctx) { - // your logic here - }) + accountsApi.Get("/users/:id", func(ctx *apis.Ctx) { + // your logic here + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -975,29 +911,19 @@ Nitric.run() ``` ```go {{ tag: 'services/two/main.go' }} -package main - import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - accountsApi, err := nitric.NewApi("accounts") + accountsApi := nitric.NewApi("accounts") - if err != nil { - return - } + accountsApi.Get("/orgs/:id", func(ctx *apis.Ctx) { + // your logic here + }) - accountsApi.Get("/orgs/:id", func(ctx *apis.Ctx) { - // your logic here - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -1039,19 +965,16 @@ accounts_api = api('accounts') ``` ```go {{ tag: 'resources/main.go' }} -package resources - -import "github.com/nitrictech/go-sdk/nitric" +import ( + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" +) -var AccountsApi nitric.Api +var AccountsApi apis.Api func init() { - accountsApi, err := nitric.NewApi("accounts") - if err != nil { - panic(err) - } - - AccountsApi = accountsApi + accountsApi := nitric.NewApi("accounts") + AccountsApi = accountsApi } ``` @@ -1090,21 +1013,18 @@ Nitric.run() package main import ( - "fmt" + "your/resources" - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" - "github.com/your-org/your-repo/resources" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - Resources.AccountsApi.Get("/users/:id", func(ctx *apis.Ctx) { - // your logic here - }) + resources.AccountsApi.Get("/users/:id", func(ctx *apis.Ctx) { + // your logic here + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -1145,21 +1065,18 @@ Nitric.run() package main import ( - "fmt" + "your/resources" - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" - "github.com/your-org/your-repo/resources" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - Resources.AccountsApi.Get("/orgs/:id", func(ctx *apis.Ctx) { - // your logic here - }) + resources.AccountsApi.Get("/orgs/:id", func(ctx *apis.Ctx) { + // your logic here + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/guides/go/serverless-rest-api-example.mdx b/src/pages/guides/go/serverless-rest-api-example.mdx index d9b080ebf..0294b1368 100644 --- a/src/pages/guides/go/serverless-rest-api-example.mdx +++ b/src/pages/guides/go/serverless-rest-api-example.mdx @@ -82,32 +82,17 @@ If everything is working as expected you can now delete all files/folders in the Let's begin by setting up the Profiles API. First, create a new folder called `profiles` within the services directory. Inside this folder, add a file named `main.go`, and include the following code: ```go -package main - import ( - "context" - "encoding/json" - "fmt" - - "github.com/google/uuid" - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - profilesApi, err := nitric.NewApi("public") - if err != nil { - return - } + profilesApi := nitric.NewApi("public") - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet, nitric.KvStoreSet) - if err != nil { - return - } + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -142,6 +127,7 @@ profilesApi.Post("/profiles", func(ctx *apis.Ctx) error { } ctx.Response.Body = []byte(id) + return nil }) ``` @@ -176,7 +162,7 @@ profilesApi.Get("/profiles", func(ctx *apis.Ctx) error { for { key, err := keys.Recv() if err != nil { - return err + break } content, _ := profiles.Get(context.Background(), key) profileContent = append(profileContent, content) @@ -297,11 +283,7 @@ If you want to go a bit deeper and create some other resources with Nitric, why Define a bucket named `profileImages` with read/write permissions ```go -profileImages, err := nitric.NewBucket("profileImages").Allow(nitric.BucketRead, nitric.BucketWrite) -if err != nil { - fmt.Println(err) - return -} +profileImages := nitric.NewBucket("profileImages").Allow(storage.BucketRead, storage.BucketWrite) ``` ### Get a URL to upload a profile image @@ -311,7 +293,7 @@ profilesApi.Get("/profiles/:id/image/upload", func(ctx *apis.Ctx) error { id := ctx.Request.PathParams()["id"] photoId := fmt.Sprintf("images/%s/photo.png", id) - photoUrl, err := profileImages.File(photoId).UploadUrl(context.TODO(), 600) + photoUrl, err := profileImages.UploadUrl(context.TODO(), photoId, storage.WithPresignUrlExpiry(600)) if err != nil { return err } @@ -329,7 +311,7 @@ profilesApi.Get("/profiles/:id/image/download", func(ctx *apis.Ctx) error { id := ctx.Request.PathParams()["id"] photoId := fmt.Sprintf("images/%s/photo.png", id) - photoUrl, err := profileImages.File(photoId).DownloadUrl(context.TODO(), 600) + photoUrl, err := profileImages.DownloadUrl(context.TODO(), photoId, storage.WithPresignUrlExpiry(600)) if err != nil { return err } @@ -347,7 +329,7 @@ profilesApi.Get("/profiles/:id/image/view", func(ctx *apis.Ctx) error { id := ctx.Request.PathParams()["id"] photoId := fmt.Sprintf("images/%s/photo.png", id) - photoUrl, err := profileImages.File(photoId).DownloadUrl(ctx.Request.Context(), 600) + photoUrl, err := profileImages.DownloadUrl(context.TODO(), photoId, storage.WithPresignUrlExpiry(600)) if err != nil { return err } diff --git a/src/pages/keyvalue.mdx b/src/pages/keyvalue.mdx index b12d2b19a..773400bde 100644 --- a/src/pages/keyvalue.mdx +++ b/src/pages/keyvalue.mdx @@ -54,21 +54,14 @@ Nitric.run() ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - countries, err := nitric.NewKv("Countries").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - if err != nil { - fmt.Println(err) - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + countries := nitric.NewKv("Countries").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) + + nitric.Run() } ``` @@ -121,21 +114,21 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) -countries, _ := nitric.NewKv("Countries").Allow(nitric.KvStoreSet) +func main() { + countries := nitric.NewKv("Countries").Allow(keyvalue.KvStoreSet) -_ = countries.Set(context.TODO(), "USA", map[string]interface{}{ - "name": "United States of America", - "population": 329500000, -}) + _ = countries.Set(context.TODO(), "USA", map[string]interface{}{ + "name": "United States of America", + "population": 329500000, + }) -if err := nitric.Run(); err != nil { - fmt.Println(err) + nitric.Run() } ``` @@ -215,18 +208,18 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) -countries, _ := nitric.NewKv("Countries").Allow(nitric.KvStoreGet) +func main() { + countries := nitric.NewKv("Countries").Allow(keyvalue.KvStoreGet) -country, _ := countries.Get(context.TODO(), "USA") + country, _ := countries.Get(context.TODO(), "USA") -if err := nitric.Run(); err != nil { - fmt.Println(err) + nitric.Run() } ``` @@ -281,23 +274,23 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) -countries, _ := nitric.NewKv("Countries").Allow(nitric.KvStoreSet, nitric.KvStoreDelete) +func main() { + countries := nitric.NewKv("Countries").Allow(keyvalue.KvStoreSet, keyvalue.KvStoreDelete) -_ = countries.Set(context.TODO(), "USA", map[string]interface{}{ - "name": "United States of America", - "population": 329500000, -}) + _ = countries.Set(context.TODO(), "USA", map[string]interface{}{ + "name": "United States of America", + "population": 329500000, + }) -_ = countries.Delete(context.TODO(), "USA") + _ = countries.Delete(context.TODO(), "USA") -if err := nitric.Run(); err != nil { - fmt.Println(err) + nitric.Run() } ``` @@ -351,28 +344,30 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) -countries, _ := nitric.NewKv("Countries").Allow(nitric.KvStoreGet) +func main() { -keys, _ := profiles.Keys(context.TODO()) + countries := nitric.NewKv("Countries").Allow(keyvalue.KvStoreGet) -for { - key, err := keys.Recv() - if err != nil { - // check if the stream has ended - break - } + keys, _ := countries.Keys(context.TODO()) - fmt.Println(key) -} + for { + key, err := keys.Recv() + if err != nil { + // check if the stream has ended + break + } + + fmt.Println(key) + } -if err := nitric.Run(); err != nil { - fmt.Println(err) + nitric.Run() } ``` diff --git a/src/pages/messaging.mdx b/src/pages/messaging.mdx index 3ab08cda4..c81d4cbff 100644 --- a/src/pages/messaging.mdx +++ b/src/pages/messaging.mdx @@ -42,17 +42,14 @@ Nitric.run() ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/topics" ) func main() { - userCreatedTopic, _ := nitric.NewTopic("user-created").Allow(nitric.TopicPublish) + userCreatedTopic := nitric.NewTopic("user-created").Allow(topics.TopicPublish) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -99,22 +96,20 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/topics" ) func main() { - userCreatedTopic, _ := nitric.NewTopic("user-created").Allow(nitric.TopicPublish) + userCreatedTopic := nitric.NewTopic("user-created").Allow(topics.TopicPublish) - _ = userCreatedTopic.Publish(context.TODO(), map[string]interface{}{ - "email": "new.user@example.com", - }) + _ = userCreatedTopic.Publish(context.TODO(), map[string]interface{}{ + "email": "new.user@example.com", + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -172,25 +167,24 @@ Nitric.run() ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/topics" - "github.com/nitrictech/go-sdk/nitric" - "github.com/your-org/your-project/common" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/topics" ) func main() { - userCreatedTopic := nitric.NewTopic("user-created") + userCreatedTopic := nitric.NewTopic("user-created") - userCreatedTopic.Subscribe(func(ctx *topics.Ctx) { - email := ctx.Request.Message()["email"].(string) + userCreatedTopic.Subscribe(func(ctx *topics.Ctx) { + email := ctx.Request.Message()["email"].(string) - sendWelcomeEmail(email) - }) + sendWelcomeEmail(email) + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() +} + +func sendWelcomeEmail(email string) { + // TODO: Implement email sending } ``` @@ -270,28 +264,24 @@ Nitric.run() ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/topics" - "github.com/nitrictech/go-sdk/nitric" - "github.com/your-org/your-project/common" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/topics" + "github.com/your-org/your-project/common" ) func main() { - userCreatedTopic := nitric.NewTopic("updates") + userCreatedTopic := nitric.NewTopic("updates") - userCreatedTopic.Subscribe(func(ctx *topics.Ctx) { - if common.isDuplicate(ctx.Request) { - return - } + userCreatedTopic.Subscribe(func(ctx *topics.Ctx) { + if common.isDuplicate(ctx.Request) { + return + } - // not a duplicate, process the event - // ... - }) + // not a duplicate, process the event + // ... + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -360,17 +350,14 @@ Nitric.run() ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - transactionQueue, _ := nitric.NewQueue("transactions").Allow(nitric.QueueEnqueue, nitric.QueueDequeue) + transactionQueue := nitric.NewQueue("transactions").Allow(queues.QueueEnqueue, queues.QueueDequeue) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -417,24 +404,22 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - transactionQueue, _ := nitric.NewQueue("transactions").Allow(nitric.QueueEnqueue) + transactionQueue := nitric.NewQueue("transactions").Allow(queues.QueueEnqueue) - messages := []map[string]interface{}{ - {"message": "hello world"}, - } + messages := []map[string]interface{}{ + {"message": "hello world"}, + } - transactionQueue.Enqueue(context.TODO(), messages) + transactionQueue.Enqueue(context.TODO(), messages) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -490,25 +475,23 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - transactionQueue, _ := nitric.NewQueue("transactions").Allow(nitric.QueueEnqueue) + transactionQueue := nitric.NewQueue("transactions").Allow(queues.QueueEnqueue) - messages := []map[string]interface{}{ - {"message": "batch task 1"}, - {"message": "batch task 2"}, - } + messages := []map[string]interface{}{ + {"message": "batch task 1"}, + {"message": "batch task 2"}, + } - transactionQueue.Enqueue(context.TODO(), messages) + transactionQueue.Enqueue(context.TODO(), messages) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -577,28 +560,27 @@ for task in tasks: ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - transactionQueue, _ := nitric.NewQueue("transactions").Allow(nitric.QueueDequeue) + transactionQueue := nitric.NewQueue("transactions").Allow(queues.QueueDequeue) - messages, _ := transactionQueue.Dequeue(context.TODO(), 10) + messages, _ := transactionQueue.Dequeue(context.TODO(), 10) - for _, message := range messages { - // process your message's data - fmt.Println(message.Message()) + for _, message := range messages { + // process your message's data + fmt.Println(message.Message()) - // acknowledge when the message is complete - message.Complete(context.TODO()) - } + // acknowledge when the message is complete + message.Complete(context.TODO()) + } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/api/api-delete.mdx b/src/pages/reference/go/api/api-delete.mdx index 23c1b2d1f..ffb991f03 100644 --- a/src/pages/reference/go/api/api-delete.mdx +++ b/src/pages/reference/go/api/api-delete.mdx @@ -28,24 +28,21 @@ func main() { ctx.Response.Body = []byte("Hello World") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - + The path matcher to use for the route. Matchers accept path parameters in the form of a colon prefixed string. The string provided will be used as that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle requests to the given path and method. Additional options for the route. See below. @@ -56,7 +53,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -90,95 +87,18 @@ api.Delete("/hello/:name", func(ctx *apis.Ctx) { }) ``` -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Delete("/public", func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.Delete("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - ### Access the request body The DELETE request body is accessible using `ctx.Request.Data()`. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.Delete("/hello", func(ctx *apis.Ctx) { data := ctx.Request.Data() @@ -186,8 +106,6 @@ func main() { ctx.Response.Body = data }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/api/api-get.mdx b/src/pages/reference/go/api/api-get.mdx index 1e7dc8c0a..86c0f7bda 100644 --- a/src/pages/reference/go/api/api-get.mdx +++ b/src/pages/reference/go/api/api-get.mdx @@ -12,40 +12,32 @@ Register an API route and set a specific HTTP GET handler on that route. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.Get("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - + The path matcher to use for the route. Matchers accept path parameters in the form of a colon prefixed string. The string provided will be used as that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle requests to the given path and method. Additional options for the route. See below. @@ -56,7 +48,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -89,74 +81,3 @@ api.Get("/hello/:name", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello " + name) }) ``` - -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Get("/public", func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.Get("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` diff --git a/src/pages/reference/go/api/api-patch.mdx b/src/pages/reference/go/api/api-patch.mdx index 25eb1aeaa..65d203042 100644 --- a/src/pages/reference/go/api/api-patch.mdx +++ b/src/pages/reference/go/api/api-patch.mdx @@ -12,40 +12,32 @@ Register an API route and set a specific HTTP PATCH handler on that route. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.Patch("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - + The path matcher to use for the route. Matchers accept path parameters in the form of a colon prefixed string. The string provided will be used as that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle requests to the given path and method. Additional options for the route. See below. @@ -56,7 +48,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -90,104 +82,25 @@ api.Patch("/hello/:name", func(ctx *apis.Ctx) { }) ``` -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Patch("/public", func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.Patch("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - ### Access the request body The PATCH request body is accessible using `ctx.Request.Data()`. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") - api.Patch("/hello", func(ctx *apis.Ctx) { - data := ctx.Request.Data() + api.Patch("/hello", func(ctx *apis.Ctx) { + data := ctx.Request.Data() - ctx.Response.Body = data - }) + ctx.Response.Body = data + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/api/api-post.mdx b/src/pages/reference/go/api/api-post.mdx index f9a5b04fc..3efd7df93 100644 --- a/src/pages/reference/go/api/api-post.mdx +++ b/src/pages/reference/go/api/api-post.mdx @@ -12,40 +12,32 @@ Register an API route and set a specific HTTP POST handler on that route. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.Post("/hello", func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - + The path matcher to use for the route. Matchers accept path parameters in the form of a colon prefixed string. The string provided will be used as that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle requests to the given path and method. Additional options for the route. See below. @@ -56,7 +48,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -90,95 +82,18 @@ api.Post("/hello/:name", func(ctx *apis.Ctx) { }) ``` -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Post("/public", func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.Post("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - ### Access the request body The POST request body is accessible using `ctx.Request.Data()`. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.Post("/hello", func(ctx *apis.Ctx) { data := ctx.Request.Data() @@ -186,8 +101,6 @@ func main() { ctx.Response.Body = data }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/api/api-put.mdx b/src/pages/reference/go/api/api-put.mdx index ab4ab9026..cce6b45f5 100644 --- a/src/pages/reference/go/api/api-put.mdx +++ b/src/pages/reference/go/api/api-put.mdx @@ -12,40 +12,32 @@ Register an API route and set a specific HTTP PUT handler on that route. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") - api.Put("/hello", func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("Hello World") - }) + api.Put("/hello", func(ctx *apis.Ctx) { + ctx.Response.Body = []byte("Hello World") + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - + The path matcher to use for the route. Matchers accept path parameters in the form of a colon prefixed string. The string provided will be used as that path parameter's name when calling middleware and handlers. See [create a route with path params](#create-a-route-with-path-params). - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle requests to the given path and method. Additional options for the route. See below. @@ -56,7 +48,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -90,95 +82,18 @@ api.Put("/hello/:name", func(ctx *apis.Ctx) { }) ``` -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - secureApi.Put("/public", func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.Put("/hello/:name", nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - ### Access the request body The PUT request body is accessible using `ctx.Request.Data()`. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.Put("/hello", func(ctx *apis.Ctx) { data := ctx.Request.Data() @@ -186,8 +101,6 @@ func main() { ctx.Response.Body = data }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/api/api-route-all.mdx b/src/pages/reference/go/api/api-route-all.mdx index 18aadebd3..2d6e5d663 100644 --- a/src/pages/reference/go/api/api-route-all.mdx +++ b/src/pages/reference/go/api/api-route-all.mdx @@ -7,34 +7,29 @@ Register a single handler for all HTTP Methods (GET, POST, PUT, DELETE, PATCH) o ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - customersRoute, err := nitric.NewApi("public").NewRoute("/customers") - if err != nil { - return - } - - customersRoute.All(func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("") - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + customersRoute := nitric.NewApi("public").NewRoute("/customers") + + customersRoute.All(func(ctx *apis.Ctx) { + ctx.Response.Body = []byte("") + }) + + nitric.Run() } ``` ## Parameters - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle all HTTP methods on the given route. + + + Additional options for the route. See below. @@ -42,7 +37,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -63,123 +58,21 @@ When using the `all()` method to register a single function as the handler for a ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - customersRoute, err := nitric.NewApi("public").NewRoute("/customers") - if err != nil { - return - } - - customersRoute.All(func(ctx *apis.Ctx) { - /* handle all requests */ - }) - - customersRoute.Get(func(ctx *apis.Ctx) { - /* this handler won't work */ - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -## Examples - -### Register a method handler function - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - customersRoute, err := nitric.NewApi("public").NewRoute("/customers") - if err != nil { - return - } - - customersRoute.All(func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("") - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain services as a single method handler - -When multiple services are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - customersRoute, err := nitric.NewApi("private").NewRoute("/customers") - if err != nil { - return - } - - customersRoute.All(nitric.Compose[apis.Ctx](authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Access the request body - -For methods that include a request body, such as `POST` and `PUT`, you can access the body from the `ctx.Request.Data()` object. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - customersRoute, err := nitric.NewApi("public").NewRoute("/customers") - if err != nil { - return - } + customersRoute := nitric.NewApi("public").NewRoute("/customers") - customersRoute.All(func(ctx *apis.Ctx) { - data := ctx.Request.Data() + customersRoute.All(func(ctx *apis.Ctx) { + /* handle all requests */ + }) - ctx.Response.Body = data - }) + customersRoute.Get(func(ctx *apis.Ctx) { + /* this handler won't work */ + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/api/api-route-delete.mdx b/src/pages/reference/go/api/api-route-delete.mdx index df86e3a69..42675586f 100644 --- a/src/pages/reference/go/api/api-route-delete.mdx +++ b/src/pages/reference/go/api/api-route-delete.mdx @@ -7,34 +7,27 @@ Register a handler for HTTP DELETE requests to the route. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.NewRoute("/hello").Delete(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle all HTTP request to the given route and + method. Additional options for the route. See below. @@ -45,7 +38,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -59,124 +52,3 @@ func main() { - -## Examples - -### Register a handler for DELETE requests - -```go -api.NewRoute("/hello").Delete(func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("Hello World") -}) -``` - -### Create a route with path params - -```go -api.NewRoute("/hello/:name").Delete(func(ctx *apis.Ctx) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) -}) -``` - -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" - "github.com/nitrictech/go-sdk/nitric/apis" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Delete(func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.NewRoute("/hello/:name").Delete(nitric.Compose(authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Access the request body - -The DELETE request body is accessible using `ctx.Request.Data()`. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } - - api.NewRoute("/hello").Delete(func(ctx *apis.Ctx) { - data := ctx.Request.Data() - - ctx.Response.Body = data - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` diff --git a/src/pages/reference/go/api/api-route-get.mdx b/src/pages/reference/go/api/api-route-get.mdx index 057aac4df..aee691ff0 100644 --- a/src/pages/reference/go/api/api-route-get.mdx +++ b/src/pages/reference/go/api/api-route-get.mdx @@ -7,34 +7,27 @@ Register a handler for HTTP GET requests to the route. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.NewRoute("/hello").Get(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle all HTTP request to the given route and + method. Additional options for the route. See below. @@ -45,7 +38,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -59,94 +52,3 @@ func main() { - -## Examples - -### Register a handler for GET requests - -```go -api.NewRoute("/hello").Get(func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("Hello World") -}) -``` - -### Create a route with path params - -```go -api.NewRoute("/hello/:name").Get(func(ctx *apis.Ctx) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) -}) -``` - -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" - "github.com/nitrictech/go-sdk/nitric/apis" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Get(func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.NewRoute("/hello/:name").Get(nitric.Compose(authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` diff --git a/src/pages/reference/go/api/api-route-patch.mdx b/src/pages/reference/go/api/api-route-patch.mdx index 5a3445909..d4cdd8ed3 100644 --- a/src/pages/reference/go/api/api-route-patch.mdx +++ b/src/pages/reference/go/api/api-route-patch.mdx @@ -7,34 +7,27 @@ Register a handler for HTTP PATCH requests to the route. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.NewRoute("/hello").Patch(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle all HTTP request to the given route and + method. Additional options for the route. See below. @@ -45,7 +38,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -59,124 +52,3 @@ func main() { - -## Examples - -### Register a handler for PATCH requests - -```go -api.NewRoute("/hello").Patch(func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("Hello World") -}) -``` - -### Create a route with path params - -```go -api.NewRoute("/hello/:name").Patch(func(ctx *apis.Ctx) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) -}) -``` - -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" - "github.com/nitrictech/go-sdk/nitric/apis" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Patch(func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.NewRoute("/hello/:name").Patch(nitric.Compose(authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Access the request body - -The PATCH request body is accessible using `ctx.Request.Data()`. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } - - api.NewRoute("/hello").Patch(func(ctx *apis.Ctx) { - data := ctx.Request.Data() - - ctx.Response.Body = data - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` diff --git a/src/pages/reference/go/api/api-route-post.mdx b/src/pages/reference/go/api/api-route-post.mdx index 887a5192d..760f206b6 100644 --- a/src/pages/reference/go/api/api-route-post.mdx +++ b/src/pages/reference/go/api/api-route-post.mdx @@ -7,34 +7,27 @@ Register a handler for HTTP POST requests to the route. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") - api.NewRoute("/hello").Post(func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("Hello World") - }) + api.NewRoute("/hello").Post(func(ctx *apis.Ctx) { + ctx.Response.Body = []byte("Hello World") + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle all HTTP request to the given route and + method. Additional options for the route. See below. @@ -45,7 +38,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -59,124 +52,3 @@ func main() { - -## Examples - -### Register a handler for POST requests - -```go -api.NewRoute("/hello").Post(func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("Hello World") -}) -``` - -### Create a route with path params - -```go -api.NewRoute("/hello/:name").Post(func(ctx *apis.Ctx) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) -}) -``` - -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" - "github.com/nitrictech/go-sdk/nitric/apis" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Post(func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.NewRoute("/hello/:name").Post(nitric.Compose(authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Access the request body - -The POST request body is accessible using `ctx.Request.Data()`. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } - - api.NewRoute("/hello").Post(func(ctx *apis.Ctx) { - data := ctx.Request.Data() - - ctx.Response.Body = data - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` diff --git a/src/pages/reference/go/api/api-route-put.mdx b/src/pages/reference/go/api/api-route-put.mdx index aae1390c5..7001944d5 100644 --- a/src/pages/reference/go/api/api-route-put.mdx +++ b/src/pages/reference/go/api/api-route-put.mdx @@ -7,34 +7,27 @@ Register a handler for HTTP PUT requests to the route. ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") api.NewRoute("/hello").Put(func(ctx *apis.Ctx) { ctx.Response.Body = []byte("Hello World") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - - The middleware function to use as the handler for HTTP requests. If you want - to compose more than one middleware use `nitric.Compose`. + + The callback function to handle all HTTP request to the given route and + method. Additional options for the route. See below. @@ -45,7 +38,7 @@ func main() { - Sets a base path for all the routes in the API. + Disables security on the method. Overrides a security rule from API defined JWT rules. @@ -59,124 +52,3 @@ func main() { - -## Examples - -### Register a handler for PUT requests - -```go -api.NewRoute("/hello").Put(func(ctx *apis.Ctx) { - ctx.Response.Body = []byte("Hello World") -}) -``` - -### Create a route with path params - -```go -api.NewRoute("/hello/:name").Put(func(ctx *apis.Ctx) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) -}) -``` - -### Create a route with no method security - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" - "github.com/nitrictech/go-sdk/nitric/apis" -) - -func main() { - defaultOidcRule := apis.OidcRule( - "user", - "https://example-issuer.com/.well-known/openid-configuration", - []string{"YOUR-AUDIENCES"}, - ) - - secureApi, err := nitric.NewApi( - "secure", - apis.WithSecurity(defaultOidcRule([]string{"products:read"}))) - if err != nil { - return - } - - // Override the APIs security requirements with `WithNoMethodSecurity()` - api.NewRoute("/public").Put(func(ctx *apis.Ctx) { - // Handle request - }, nitric.WithNoMethodSecurity()) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -When multiple functions are provided they will be called as a chain. If one succeeds, it will move on to the next. This allows middleware to be composed into more complex handlers. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func handleRequest(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - name := ctx.Request.PathParams()["name"] - ctx.Response.Body = []byte("Hello " + name) - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("private") - if err != nil { - return - } - - api.NewRoute("/hello/:name").Put(nitric.Compose(authMiddleware, handleRequest)) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Access the request body - -The PUT request body is accessible using `ctx.Request.Data()`. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } - - api.NewRoute("/hello").Put(func(ctx *apis.Ctx) { - data := ctx.Request.Data() - - ctx.Response.Body = data - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` diff --git a/src/pages/reference/go/api/api-route.mdx b/src/pages/reference/go/api/api-route.mdx index 845f38485..d143e81a7 100644 --- a/src/pages/reference/go/api/api-route.mdx +++ b/src/pages/reference/go/api/api-route.mdx @@ -7,22 +7,15 @@ Creates a new route (path) within an API. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") route := api.NewRoute("/hello") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -37,91 +30,7 @@ func main() { middleware and handlers. See [create a route with path params](#create-a-route-with-path-params) - - The middleware (code) that should be run on all requests to this route. - Useful for applying universal middleware such as CORS headers or Auth, - across an entire route from a single place. + + Additional options for the route. - -## Examples - -### Create a route - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } - - route := api.NewRoute("/hello") - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Create a route with path params - -Route paths can include dynamic parameters. These values will automatically be parsed and provided in the context object for your middleware and handlers as a `string`. - -For example, if you have a customers path and you want to include a `customerId` param you would define the route like this. - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" -) - -func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } - - // Define route with customerId param - route := api.NewRoute("/customers/:customerId") - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Create a route with middleware - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" - "github.com/nitrictech/go-sdk/nitric" -) - -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) -} - -func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } - - route := api.NewRoute("/hello", authMiddleware) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` diff --git a/src/pages/reference/go/api/api.mdx b/src/pages/reference/go/api/api.mdx index 371abba38..82ddf0604 100644 --- a/src/pages/reference/go/api/api.mdx +++ b/src/pages/reference/go/api/api.mdx @@ -7,20 +7,13 @@ Creates a new HTTP API. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -85,20 +78,13 @@ func main() { ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" ) func main() { - api, err := nitric.NewApi("public") - if err != nil { - return - } + api := nitric.NewApi("public") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -106,41 +92,46 @@ func main() { ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/apis" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) +func authMiddleware(next apis.Handler) apis.Handler { + return func(ctx *apis.Ctx) error { + if ctx.Request.Headers().Get("Authorization") == "" { + ctx.Response.Status = 401 + ctx.Response.Body = []byte("Unauthorized") + return nil + } + // perform additional auth checks + + return next(ctx) + } } func main() { - api, err := nitric.NewApi("private", nitric.WithMiddleware(authMiddleware)) - if err != nil { - return - } + api := nitric.NewApi("private", apis.WithMiddleware(authMiddleware)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ### Define middleware ```go -func authMiddleware(ctx *apis.Ctx, next nitric.Handler[apis.Ctx]) (*apis.Ctx, error) { - // Perform auth validation - return next(ctx) +func yourMiddleware(next apis.Handler) apis.Handler { + return func(ctx *apis.Ctx) error { + // Perform checks/actions prior to the route handler + err := next(ctx) + // Perform checks/actions after the route handler + return err + } } ``` ### Notes -Middleware functions are supplied an `apis.Ctx` object and a `next()` function which calls the next middleware in the chain. +Middleware are higher-order functions that take a handler and return a handler. They can be used to perform actions before and after the route handler. Middleware can be used to perform actions such as logging, authentication, and error handling. ### Create an API with a base path @@ -148,20 +139,14 @@ If you need to put all the routes in your api below a shared base path, you can ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/apis" ) func main() { - v1Api, err := nitric.NewApi("public", nitric.WithPath("/api/v1/")) - if err != nil { - return - } + v1Api := nitric.NewApi("public", apis.WithPath("/api/v1/")) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -169,9 +154,7 @@ func main() { ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" "github.com/nitrictech/go-sdk/nitric/apis" ) @@ -182,17 +165,12 @@ func main() { []string{"YOUR-AUDIENCES"}, ) - secureApi, err := nitric.NewApi( - "secure", - // apply the security definition to all routes in this API. - apis.WithSecurity(defaultSecurityRule([]string{})), - ) - if err != nil { - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + secureApi := nitric.NewApi( + "secure", + // apply the security definition to all routes in this API. + apis.WithSecurity(defaultOidcRule([]string{})), + ) + + nitric.Run() } ``` diff --git a/src/pages/reference/go/keyvalue/keyvalue-delete.mdx b/src/pages/reference/go/keyvalue/keyvalue-delete.mdx index eba734a33..aab531b07 100644 --- a/src/pages/reference/go/keyvalue/keyvalue-delete.mdx +++ b/src/pages/reference/go/keyvalue/keyvalue-delete.mdx @@ -7,27 +7,23 @@ Delete key from a key value store. ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreDelete) - if err != nil { - return - } + // Initialize the KV service + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreDelete) - err = profiles.Delete(context.Background(), "profile-1a2b3c") - if err != nil { - fmt.Println(err) - } + err := profiles.Delete(context.Background(), "profile-1a2b3c") + if err != nil { + fmt.Println(err) + } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -52,22 +48,18 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreDelete) - if err != nil { - return - } + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreDelete) - err = profiles.Delete(context.Background(), "profile-1a2b3c") + err := profiles.Delete(context.Background(), "profile-1a2b3c") if err != nil { fmt.Println(err) } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/keyvalue/keyvalue-get.mdx b/src/pages/reference/go/keyvalue/keyvalue-get.mdx index e108c4618..c5a66b74e 100644 --- a/src/pages/reference/go/keyvalue/keyvalue-get.mdx +++ b/src/pages/reference/go/keyvalue/keyvalue-get.mdx @@ -7,25 +7,23 @@ Get a value from a key value store. ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet) - if err != nil { - return - } - - profile, err := profiles.Get(context.Background(), "profile-1a2b3c") - // do something with the profile - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + // Initialize the KV service + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet) + + profile, err := profiles.Get(context.Background(), "profile-1a2b3c") + if err != nil { + // handle error + } + // do something with the profile + + nitric.Run() } ``` @@ -46,24 +44,22 @@ func main() { ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet) - if err != nil { - return - } - - profile, err := profiles.Get(context.Background(), "profile-1a2b3c") - // do something with the profile - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + // Initialize the KV service + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet) + + profile, err := profiles.Get(context.Background(), "profile-1a2b3c") + if err != nil { + // handle error + } + // do something with the profile + + nitric.Run() } ``` diff --git a/src/pages/reference/go/keyvalue/keyvalue-keys.mdx b/src/pages/reference/go/keyvalue/keyvalue-keys.mdx index 7bb0d4a26..df041e266 100644 --- a/src/pages/reference/go/keyvalue/keyvalue-keys.mdx +++ b/src/pages/reference/go/keyvalue/keyvalue-keys.mdx @@ -11,19 +11,16 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - if err != nil { - return - } + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) keys, err := profiles.Keys(context.TODO()) if err != nil { - fmt.Println("Error getting keys: ", err) - return + // handle error } // Get all keys from a key value store @@ -37,14 +34,23 @@ func main() { fmt.Printf("Key: %s\n", key) } + nitric.Run() } ``` ## Parameters - - The prefix to filter keys by, if not provided all keys will be returned. + + Options for the scan keys operation. See below. + + + +### Scan keys options + + + + Filter keys by prefix. @@ -54,36 +60,35 @@ func main() { ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - if err != nil { - return - } - - keys, err := profiles.Keys(context.TODO()) - if err != nil { - fmt.Println("Error getting keys: ", err) - return - } - - // Get all keys from a key value store - for { - key, err := keys.Recv() - if err != nil { - // check if the stream has ended - break - } - // do something with the key - fmt.Printf("Key: %s\n", key) - } - + // Initialize the KV service + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) + + keys, err := profiles.Keys(context.TODO()) + if err != nil { + fmt.Println("Error getting keys: ", err) + return + } + + // Get all keys from a key value store + for { + key, err := keys.Recv() + if err != nil { + // check if the stream has ended + break + } + // do something with the key + fmt.Printf("Key: %s\n", key) + } + + nitric.Run() } ``` @@ -91,38 +96,35 @@ func main() { ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/api/keyvalue" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - if err != nil { - return - } - - // make function with keyvalue.ScanKeysOption type - keys, err := profiles.Keys(context.TODO(), keyvalue.WithPrefix("profile:")) - if err != nil { - fmt.Println("Error getting keys: ", err) - return - } - - // Get all keys from a key value store - for { - key, err := keys.Recv() - if err != nil { - // check if the stream has ended - break - } - // do something with the key - fmt.Printf("Key: %s\n", key) - } - + // Initialize the KV service + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) + + // make function with keyvalue.ScanKeysOption type + keys, err := profiles.Keys(context.TODO(), keyvalue.WithPrefix("profile:")) + if err != nil { + fmt.Println("Error getting keys: ", err) + return + } + + // Get all keys from a key value store + for { + key, err := keys.Recv() + if err != nil { + // check if the stream has ended + break + } + // do something with the key + fmt.Printf("Key: %s\n", key) + } + + nitric.Run() } - ``` diff --git a/src/pages/reference/go/keyvalue/keyvalue-set.mdx b/src/pages/reference/go/keyvalue/keyvalue-set.mdx index 029c69496..4d8842d44 100644 --- a/src/pages/reference/go/keyvalue/keyvalue-set.mdx +++ b/src/pages/reference/go/keyvalue/keyvalue-set.mdx @@ -7,29 +7,25 @@ Store a key value pair in a key value store. ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreSet) - if err != nil { - return - } + // Initialize the KV service + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreSet) - err = profiles.Set(context.Background(), "profile-1a2b3c", map[string]interface{}{ - "name": "John Smith", - }) - if err != nil { - fmt.Println(err) - } + err := profiles.Set(context.Background(), "profile-1a2b3c", map[string]interface{}{ + "name": "John Smith", + }) + if err != nil { + fmt.Println(err) + } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -57,24 +53,20 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreSet) - if err != nil { - return - } + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreSet) - err = profiles.Set(context.Background(), "profile-1a2b3c", map[string]interface{}{ + err := profiles.Set(context.Background(), "profile-1a2b3c", map[string]interface{}{ "name": "John Smith", }) if err != nil { fmt.Println(err) } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/keyvalue/keyvalue.mdx b/src/pages/reference/go/keyvalue/keyvalue.mdx index f4e03b902..6ebd5ef64 100644 --- a/src/pages/reference/go/keyvalue/keyvalue.mdx +++ b/src/pages/reference/go/keyvalue/keyvalue.mdx @@ -7,21 +7,14 @@ Creates a new key value store to get, set, and delete key value pairs. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - - if err != nil { - return - } + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -42,19 +35,19 @@ All Nitric resources provide access permissions you can use to specify the level --- -**nitric.KvStoreGet** +**keyvalue.KvStoreGet** This permission allows your service to get values from the key value store. --- -**nitric.KvStoreSet** +**keyvalue.KvStoreSet** This permission allows your service to set key value pairs in the key value store. --- -**nitric.KvStoreDelete** +**keyvalue.KvStoreDelete** This permission allows your service to delete key value pairs in the key value store. @@ -66,21 +59,14 @@ This permission allows your service to delete key value pairs in the key value s ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) - if err != nil { - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -89,24 +75,22 @@ func main() { ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet) - if err != nil { - return - } + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet) profile, err := profiles.Get(context.Background(), "profile-1a2b3c") + if err != nil { + // handle error + } // do something with the profile - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -118,25 +102,21 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreSet) - if err != nil { - return - } + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreSet) - err = profiles.Set(context.Background(), "profile-1a2b3c", map[string]interface{}{ + err := profiles.Set(context.Background(), "profile-1a2b3c", map[string]interface{}{ "name": "John Smith", }) if err != nil { fmt.Println(err) } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -148,57 +128,54 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreDelete) - if err != nil { - return - } + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreDelete) - err = profiles.Delete(context.Background(), "profile-1a2b3c") + err := profiles.Delete(context.Background(), "profile-1a2b3c") if err != nil { fmt.Println(err) } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } - ``` ### Get all keys from a key value store ```go import ( - "context" - "fmt" - "io" - "github.com/nitrictech/go-sdk" + "context" + "fmt" + + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" ) func main() { - // Initialize the KV service - profiles, err := nitric.NewKv("profiles").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - if err != nil { - return - } - - // Get all keys from a key value store - for { - key, err := keys.Recv() - if err != nil { - // check if the stream has ended - if err == io.EOF { - break - } - return nil, err - } - // do something with the key - fmt.Printf("Key: %s\n", key) - } - + // Initialize the KV service + profiles := nitric.NewKv("profiles").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) + + keys, err := profiles.Keys(context.TODO()) + if err != nil { + fmt.Println("Error getting keys: ", err) + return + } + + // Get all keys from a key value store + for { + key, err := keys.Recv() + if err != nil { + // check if the stream has ended + break + } + // do something with the key + fmt.Printf("Key: %s\n", key) + } + + nitric.Run() } ``` diff --git a/src/pages/reference/go/queues/queue-dequeue.mdx b/src/pages/reference/go/queues/queue-dequeue.mdx index 05a242b07..1ffb94eb3 100644 --- a/src/pages/reference/go/queues/queue-dequeue.mdx +++ b/src/pages/reference/go/queues/queue-dequeue.mdx @@ -7,35 +7,31 @@ Dequeue messages. ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - queue, err := nitric.NewQueue("queue-name").Allow(nitric.QueueDequeue) - if err != nil { - return - } + queue := nitric.NewQueue("queue-name").Allow(queues.QueueDequeue) - ctx := context.TODO() + ctx := context.TODO() - // dequeue up to 10 messages - messages, err := queue.Dequeue(ctx, 10) - if err != nil { - return - } + // dequeue up to 10 messages + messages, err := queue.Dequeue(ctx, 10) + if err != nil { + return + } - for _, message := range messages { - fmt.Println("Message: ", message.Message()) + for _, message := range messages { + fmt.Println("Message: ", message.Message()) - message.Complete(ctx) - } + message.Complete(ctx) + } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -81,34 +77,30 @@ This means calls to dequeue will return between 0 and _depth_ tasks. ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - queue, err := nitric.NewQueue("queue-name").Allow(nitric.QueueDequeue) - if err != nil { - return - } + queue := nitric.NewQueue("queue-name").Allow(queues.QueueDequeue) - ctx := context.TODO() + ctx := context.TODO() - // dequeue up to 10 messages - messages, err := queue.Dequeue(ctx, 10) - if err != nil { - return - } + // dequeue up to 10 messages + messages, err := queue.Dequeue(ctx, 10) + if err != nil { + return + } - for _, message := range messages { - fmt.Println("Message: ", message.Message()) + for _, message := range messages { + fmt.Println("Message: ", message.Message()) - message.Complete(ctx) - } + message.Complete(ctx) + } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/queues/queue-enqueue.mdx b/src/pages/reference/go/queues/queue-enqueue.mdx index 522b64c61..c8a9ae38c 100644 --- a/src/pages/reference/go/queues/queue-enqueue.mdx +++ b/src/pages/reference/go/queues/queue-enqueue.mdx @@ -11,14 +11,11 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - queue, err := nitric.NewQueue("queue-name").Allow(nitric.QueueEnqueue, nitric.QueueDequeue) - if err != nil { - fmt.Println(err) - return - } + queue := nitric.NewQueue("queue-name").Allow(queues.QueueEnqueue, queues.QueueDequeue) messages := []map[string]interface{}{ { @@ -32,9 +29,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -55,42 +50,37 @@ func main() { ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - queue, err := nitric.NewQueue("queue-name").Allow(nitric.QueueEnqueue) - if err != nil { - fmt.Println(err) - return - } - - messages := []map[string]interface{}{ - { - "type": "email", - "to": "hello@example.com", - "subject": "Notification", - "message": "A notification from Nitric", - }, - { - "type": "SMS", - "to": "+17200000000", - "message": "A text message from Nitric", - }, - } - - failedMessages, err := queue.Enqueue(context.TODO(), messages) - if err != nil { - fmt.Println(err) - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + queue := nitric.NewQueue("queue-name").Allow(queues.QueueEnqueue) + + messages := []map[string]interface{}{ + { + "type": "email", + "to": "hello@example.com", + "subject": "Notification", + "message": "A notification from Nitric", + }, + { + "type": "SMS", + "to": "+17200000000", + "message": "A text message from Nitric", + }, + } + + failedMessages, err := queue.Enqueue(context.TODO(), messages) + if err != nil { + fmt.Println(err) + return + } + + nitric.Run() } ``` diff --git a/src/pages/reference/go/queues/queue.mdx b/src/pages/reference/go/queues/queue.mdx index 0c565d8e7..e94a10e2f 100644 --- a/src/pages/reference/go/queues/queue.mdx +++ b/src/pages/reference/go/queues/queue.mdx @@ -7,21 +7,14 @@ Creates a new Queue to send and receive asynchronous tasks. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - queue, err := nitric.NewQueue("queue-name").Allow(nitric.QueueEnqueue, nitric.QueueDequeue) - if err != nil { - fmt.Println(err) - return - } + queue := nitric.NewQueue("queue-name").Allow(queues.QueueEnqueue, queues.QueueDequeue) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -64,21 +57,14 @@ In most instances, code should either enqueue or dequeue from a queue, usually n ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - queue, err := nitric.NewQueue("queue-name").Allow(nitric.QueueEnqueue, nitric.QueueDequeue) - if err != nil { - fmt.Println(err) - return - } + queue := nitric.NewQueue("queue-name").Allow(queues.QueueEnqueue, queues.QueueDequeue) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -90,16 +76,17 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - queue, err := nitric.NewQueue("queue-name").Allow(nitric.QueueEnqueue) - if err != nil { - fmt.Println(err) - return - } + queue := nitric.NewQueue("queue-name").Allow(queues.QueueEnqueue, queues.QueueDequeue) - messages := []map[string]interface{}{} + messages := []map[string]interface{}{ + { + "message": "hello world", + }, + } failedMessages, err := queue.Enqueue(context.TODO(), messages) if err != nil { @@ -107,9 +94,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -117,27 +102,30 @@ func main() { ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/queues" ) func main() { - queue, err := nitric.NewQueue("queue-name").Allow(nitric.QueueDequeue) - if err != nil { - fmt.Println(err) - return - } + queue := nitric.NewQueue("queue-name").Allow(queues.QueueDequeue) - tasks, err := queue.Dequeue(context.TODO(), 10) - if err != nil { - fmt.Println(err) - return - } + ctx := context.TODO() - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + // dequeue up to 10 messages + messages, err := queue.Dequeue(ctx, 10) + if err != nil { + return + } + + for _, message := range messages { + fmt.Println("Message: ", message.Message()) + + message.Complete(ctx) + } + + nitric.Run() } ``` diff --git a/src/pages/reference/go/schedule/schedule-cron.mdx b/src/pages/reference/go/schedule/schedule-cron.mdx index 23a82452c..e58648181 100644 --- a/src/pages/reference/go/schedule/schedule-cron.mdx +++ b/src/pages/reference/go/schedule/schedule-cron.mdx @@ -7,19 +7,15 @@ Sets the cron expressions that determines when the schedule triggers and a callb ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" ) func main() { - nitric.NewSchedule("archive-data").Cron("0 1 1 * *", func() { - // code which archives data - }) + nitric.NewSchedule("archive-data").Cron("0 1 1 * *", func() { + // code which archives data + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -30,9 +26,9 @@ func main() { The expression that sets when the schedule will be triggered. This value should be a standard 5 value Unix cron expression, e.g., '0 1 1 * *'. - - One or more callback functions to use as the handler which will run on the - defined frequency. + + The callback function to use as the handler which will run on the defined + frequency. @@ -58,39 +54,6 @@ func main() { fmt.Println("deleting stale data") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Create a Schedule with multiple middleware/handlers - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/schedules" - "github.com/nitrictech/go-sdk/nitric" -) - -func generateReport(ctx *schedules.Ctx, next nitric.Handler[schedules.Ctx]) (*schedules.Ctx, error) { - // generate report - - return next(ctx) -} - -func sendNotification(ctx *schedules.Ctx, next nitric.Handler[schedules.Ctx]) (*schedules.Ctx, error) { - // send notification with the report - - return next(ctx) -} - -func main() { - nitric.NewSchedule("check for updates").Cron("0 1 1 * *", generateReport, sendNotification) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/schedule/schedule-every.mdx b/src/pages/reference/go/schedule/schedule-every.mdx index 2935a79a6..13d3e752b 100644 --- a/src/pages/reference/go/schedule/schedule-every.mdx +++ b/src/pages/reference/go/schedule/schedule-every.mdx @@ -7,8 +7,6 @@ Sets the frequency and one or many handlers to be triggered. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" ) @@ -18,9 +16,7 @@ func main() { // code which sends a reminder }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -31,9 +27,9 @@ func main() { The rate to run the schedule, e.g., '7 days'. All rates accept a number and a frequency. Valid frequencies are 'days', 'hours', or 'minutes'. - - One or more middleware functions to use as the handler which will run on the - defined frequency. + + The callback function to use as the handler which will run on the defined + frequency. @@ -43,8 +39,6 @@ func main() { ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" ) @@ -54,38 +48,6 @@ func main() { // code which sends a reminder }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Create a Schedule with multiple middleware/handlers - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/schedules" - "github.com/nitrictech/go-sdk/nitric" -) - -func generateReport(ctx *schedules.Ctx, next nitric.Handler[schedules.Ctx]) (*schedules.Ctx, error) { - // generate report - return next(ctx) -} - -func sendNotification(ctx *schedules.Ctx, next nitric.Handler[schedules.Ctx]) (*schedules.Ctx, error) { - // send notification with the report - - return next(ctx) -} - -func main() { - nitric.NewSchedule("aggregate data").Every("3 days", generateReport, sendNotification) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/schedule/schedule.mdx b/src/pages/reference/go/schedule/schedule.mdx index 7470cef0e..d64b47f2d 100644 --- a/src/pages/reference/go/schedule/schedule.mdx +++ b/src/pages/reference/go/schedule/schedule.mdx @@ -17,9 +17,7 @@ func main() { fmt.Println("aggregating data") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -35,7 +33,6 @@ func main() { ### Notes - Schedules do not require access permissions to be specified. - - During local development schedules can be triggered manually from the local development dashboard ## Examples @@ -46,21 +43,18 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/nitric/schedules" "github.com/nitrictech/go-sdk/nitric" ) func main() { - nitric.NewSchedule("send-reminder").Every("1 day", func() { + nitric.NewSchedule("send-reminder").Every("1 day", func() { fmt.Println("sending data") }) - nitric.NewSchedule("archive-data").Cron("0 1 1 * *", func (){ + nitric.NewSchedule("archive-data").Cron("0 1 1 * *", func() { fmt.Println("archiving data") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/secrets/secret-access-version.mdx b/src/pages/reference/go/secrets/secret-access-version.mdx index 4e855318d..8c06b3c45 100644 --- a/src/pages/reference/go/secrets/secret-access-version.mdx +++ b/src/pages/reference/go/secrets/secret-access-version.mdx @@ -7,16 +7,15 @@ Retrieves the value from a version of a secret. ```go import ( + "context" "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretAccess) value, err := secret.AccessVersion(context.TODO(), "latest") if err != nil { @@ -25,9 +24,7 @@ func main() { fmt.Println(value.AsString()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -48,16 +45,15 @@ func main() { ```go import ( + "context" "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretAccess) value, err := secret.AccessVersion(context.TODO(), "latest") if err != nil { @@ -66,9 +62,7 @@ func main() { fmt.Println(value.AsString()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -80,13 +74,11 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretAccess) version, err := secret.AccessVersion(context.TODO(), "the-version-id") if err != nil { @@ -96,8 +88,6 @@ func main() { fmt.Println(version.AsString()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/secrets/secret-access.mdx b/src/pages/reference/go/secrets/secret-access.mdx index 4372631d2..05aca7168 100644 --- a/src/pages/reference/go/secrets/secret-access.mdx +++ b/src/pages/reference/go/secrets/secret-access.mdx @@ -7,22 +7,18 @@ Returns a the value of the latest iteration of a secret. ```go import ( - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretAccess) - latestSecret := secret.Access(context.TODO()) + latestSecret := secret.Access(context.TODO()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -38,22 +34,18 @@ For symmetric encryption, you'll need to retrieve the version of the secret used ```go import ( - "fmt" + "context" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretAccess) latest := secret.Access(context.TODO()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -61,16 +53,15 @@ func main() { ```go import ( + "context" "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretAccess) value, err := secret.Access(context.TODO()) if err != nil { @@ -79,9 +70,7 @@ func main() { fmt.Println(value.AsString()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/secrets/secret-put.mdx b/src/pages/reference/go/secrets/secret-put.mdx index ed950dfa5..d98d497ec 100644 --- a/src/pages/reference/go/secrets/secret-put.mdx +++ b/src/pages/reference/go/secrets/secret-put.mdx @@ -8,25 +8,20 @@ Store a new secret value. ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretPut) - if err != nil { - return - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretPut) versionName, err := secret.Put(context.TODO(), []byte("content")) if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -52,25 +47,20 @@ A new secret version is always created when calling `Put()`, the versions will a ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretPut) - if err != nil { - return - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretPut) versionName, err := secret.Put(context.TODO(), []byte("content")) if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -84,13 +74,11 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretAccess) - if err != nil { - return - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretAccess) versionName, err := secret.Put(context.TODO(), []byte("content")) if err != nil { @@ -99,8 +87,6 @@ func main() { fmt.Println(versionName) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/secrets/secret.mdx b/src/pages/reference/go/secrets/secret.mdx index 3f2b0b5e9..11044d75a 100644 --- a/src/pages/reference/go/secrets/secret.mdx +++ b/src/pages/reference/go/secrets/secret.mdx @@ -7,20 +7,14 @@ Creates a reference to a secret in the secrets manager. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretPut, nitric.SecretAccess) - if err != nil { - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretPut, secrets.SecretAccess) + + nitric.Run() } ``` @@ -59,20 +53,14 @@ This permission allows your code to retrieve secret values. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - secret, err := nitric.NewSecret("secret-name").Allow(nitric.SecretPut, nitric.SecretAccess) - if err != nil { - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + secret := nitric.NewSecret("secret-name").Allow(secrets.SecretPut, secrets.SecretAccess) + + nitric.Run() } ``` diff --git a/src/pages/reference/go/storage/bucket-delete.mdx b/src/pages/reference/go/storage/bucket-delete.mdx index fb874599f..36dfd9209 100644 --- a/src/pages/reference/go/storage/bucket-delete.mdx +++ b/src/pages/reference/go/storage/bucket-delete.mdx @@ -8,25 +8,20 @@ Delete a file from a bucket. ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketDelete) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketDelete) - err = bucket.Delete(context.TODO(), "cat.png") + err := bucket.Delete(context.TODO(), "cat.png") if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -48,24 +43,19 @@ func main() { ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketDelete) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketDelete) - err = bucket.Delete(context.TODO(), "cat.png") + err := bucket.Delete(context.TODO(), "cat.png") if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/storage/bucket-downloadurl.mdx b/src/pages/reference/go/storage/bucket-downloadurl.mdx index 3314dd2e0..afe431b01 100644 --- a/src/pages/reference/go/storage/bucket-downloadurl.mdx +++ b/src/pages/reference/go/storage/bucket-downloadurl.mdx @@ -8,25 +8,20 @@ Create a download url for a file within a bucket. ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketRead) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketRead) - downloadUrl, err := bucket.File().DownloadUrl(context.TODO(), "cat.png") + downloadUrl, err := bucket.DownloadUrl(context.TODO(), "cat.png") if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -68,9 +63,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -108,8 +101,6 @@ func main() { ctx.Response.Status = 303 }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/storage/bucket-listfiles.mdx b/src/pages/reference/go/storage/bucket-listfiles.mdx index 4b622ecd8..042276873 100644 --- a/src/pages/reference/go/storage/bucket-listfiles.mdx +++ b/src/pages/reference/go/storage/bucket-listfiles.mdx @@ -8,25 +8,28 @@ Get a list of file keys for files that exist in the bucket. ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketRead) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketRead) files, err := bucket.ListFiles(context.TODO()) if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) + for _, file := range files { + contents, err := bucket.Read(context.TODO(), file) + if err != nil { + continue + } + // Do something with the file contents } + + nitric.Run() } ``` @@ -48,17 +51,15 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketRead) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketRead) ctx := context.TODO() - files, err := bucket.Files(ctx) + files, err := bucket.ListFiles(ctx) if err != nil { fmt.Println(err) return @@ -68,8 +69,6 @@ func main() { bucket.Delete(ctx, file) } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/storage/bucket-on.mdx b/src/pages/reference/go/storage/bucket-on.mdx index db4b89bb3..339537aec 100644 --- a/src/pages/reference/go/storage/bucket-on.mdx +++ b/src/pages/reference/go/storage/bucket-on.mdx @@ -10,17 +10,14 @@ import ( "context" "fmt" - "github.com/nitrictech/go-sdk/nitric/storage" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { assets := nitric.NewBucket("assets") - readableAssets, err := nitric.NewBucket("assets").Allow(nitric.BucketRead) - if err != nil { - return - } + readableAssets := nitric.NewBucket("assets").Allow(storage.BucketRead) assets.On(storage.DeleteNotification, "*", func(ctx *storage.Ctx) { fmt.Printf("a file named %s was deleted\n", ctx.Request.Key()) @@ -41,9 +38,7 @@ func main() { return nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -63,9 +58,8 @@ func main() { filters overlap across notifications, an error will be thrown when registering the resource. - - The middleware (code) to be triggered by the bucket notification being - triggered. + + The callback function to be triggered when bucket events occur. diff --git a/src/pages/reference/go/storage/bucket-read.mdx b/src/pages/reference/go/storage/bucket-read.mdx index 477c47afa..d9dc88ae9 100644 --- a/src/pages/reference/go/storage/bucket-read.mdx +++ b/src/pages/reference/go/storage/bucket-read.mdx @@ -11,13 +11,11 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketRead) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketRead) contents, err := bucket.Read(context.TODO(), "cat.png") if err != nil { @@ -26,9 +24,7 @@ func main() { fmt.Println(contents) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -53,13 +49,11 @@ import ( "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketRead) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketRead) contents, err := bucket.Read(context.TODO(), "cat.png") if err != nil { @@ -68,8 +62,6 @@ func main() { fmt.Println(contents) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/storage/bucket-uploadurl.mdx b/src/pages/reference/go/storage/bucket-uploadurl.mdx index 9e9191a30..03978c2f4 100644 --- a/src/pages/reference/go/storage/bucket-uploadurl.mdx +++ b/src/pages/reference/go/storage/bucket-uploadurl.mdx @@ -8,25 +8,20 @@ Create an upload URL for a file within a bucket. ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketWrite) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketWrite) uploadUrl, err := bucket.UploadUrl(context.TODO(), "cat.png") if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -51,24 +46,19 @@ func main() { ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketWrite) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketWrite) uploadUrl, err := bucket.UploadUrl(context.TODO(), "cat.png") if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/storage/bucket-write.mdx b/src/pages/reference/go/storage/bucket-write.mdx index 3f253bc37..26fae0790 100644 --- a/src/pages/reference/go/storage/bucket-write.mdx +++ b/src/pages/reference/go/storage/bucket-write.mdx @@ -8,25 +8,20 @@ Write a file to a bucket. ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketWrite) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketWrite) - err = bucket.Write(context.TODO(), "cat.png" []byte("contents")) + err := bucket.Write(context.TODO(), "cat.png", []byte("contents")) if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -51,24 +46,19 @@ func main() { ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketWrite) - if err != nil { - return - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketWrite) - err = bucket.Write(context.TODO(), "cat.png", []byte("contents")) + err := bucket.Write(context.TODO(), "cat.png", []byte("contents")) if err != nil { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/storage/bucket.mdx b/src/pages/reference/go/storage/bucket.mdx index 5b43b8fd5..322c39a77 100644 --- a/src/pages/reference/go/storage/bucket.mdx +++ b/src/pages/reference/go/storage/bucket.mdx @@ -7,20 +7,14 @@ Create a new bucket for storing and retrieving files. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - bucket, err := nitric.NewBucket("bucket-name").Allow(nitric.BucketWrite, nitric.BucketRead, nitric.BucketDelete) - if err != nil { - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + bucket := nitric.NewBucket("bucket-name").Allow(storage.BucketWrite, storage.BucketRead, storage.BucketDelete) + + nitric.Run() } ``` diff --git a/src/pages/reference/go/topic/topic-publish.mdx b/src/pages/reference/go/topic/topic-publish.mdx index fd656c515..e73031daa 100644 --- a/src/pages/reference/go/topic/topic-publish.mdx +++ b/src/pages/reference/go/topic/topic-publish.mdx @@ -8,19 +8,13 @@ Publish an event (push based message) to a topic. ```go import ( "context" - "fmt" - "github.com/nitrictech/go-sdk/nitric/topics" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/topics" ) func main() { - updates, err := nitric.NewTopic("updates").Allow(nitric.TopicPublishing) - if err != nil { - fmt.Println(err) - - return - } + updates := nitric.NewTopic("updates").Allow(topics.TopicPublish) updates.Publish(context.TODO(), map[string]interface{}{ @@ -28,9 +22,7 @@ func main() { }, ) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -57,28 +49,21 @@ Publishing messages to a topic will push a copy of the message to each of the to ```go import ( "context" - "fmt" - "github.com/nitrictech/go-sdk/api/events" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/topics" ) func main() { - updates, err := nitric.NewTopic("updates").Allow(nitric.TopicPublishing) - if err != nil { - fmt.Println(err) - - return - } + updates := nitric.NewTopic("updates").Allow(topics.TopicPublish) - err := updates.Publish(context.TODO(), + updates.Publish(context.TODO(), map[string]interface{}{ "something": "amazing happened", }, ) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + + nitric.Run() } ``` @@ -89,27 +74,19 @@ You can delay the delivery of messages sent to a topic. The current maximum dela ```go import ( "context" - "fmt" "time" - "github.com/nitrictech/go-sdk/api/events" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/topics" ) func main() { - updates, err := nitric.NewTopic("updates").Allow(nitric.TopicPublishing) - if err != nil { - fmt.Println(err) - - return - } + updates := nitric.NewTopic("updates").Allow(topics.TopicPublish) updates.Publish(context.TODO(), map[string]interface{}{ - "something": "amazing happened", - }, events.WithDelay(time.Hour)) + "something": "amazing happened", + }, topics.WithDelay(time.Hour)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/topic/topic-subscribe.mdx b/src/pages/reference/go/topic/topic-subscribe.mdx index 2fdf0170d..7cd76565b 100644 --- a/src/pages/reference/go/topic/topic-subscribe.mdx +++ b/src/pages/reference/go/topic/topic-subscribe.mdx @@ -17,17 +17,15 @@ func main() { fmt.Println("received update") }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` ## Parameters - - The middleware (code) to be triggered by the topic. + + The callback to be triggered when new messages are sent to the topic. @@ -39,8 +37,8 @@ func main() { import ( "fmt" - "github.com/nitrictech/go-sdk/nitric/topics" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/topics" ) func main() { @@ -48,40 +46,7 @@ func main() { fmt.Printf("received update %+v", ctx.Request.Message()) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Subscribe to a topic with multiple middleware - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/topcs" - "github.com/nitrictech/go-sdk/nitric" -) - -func validateUpdate(ctx *topic.Ctx, next nitric.Handler[topics.Ctx]) (*topics.Ctx, error) { - // validate update - - return next(ctx) -} - -func handleUpdate(ctx *topic.Ctx, next nitric.Handler[topics.Ctx]) (*topics.Ctx, error) { - // handle update - - return next(ctx) -} - -func main() { - nitric.NewTopic("updates").Subscribe(validateUpdate, handleUpdate) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/topic/topic.mdx b/src/pages/reference/go/topic/topic.mdx index 7973296b4..468f7811c 100644 --- a/src/pages/reference/go/topic/topic.mdx +++ b/src/pages/reference/go/topic/topic.mdx @@ -7,17 +7,13 @@ Creates a new Topic. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" ) func main() { updates := nitric.NewTopic("updates") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -35,17 +31,13 @@ func main() { ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" ) func main() { updates := nitric.NewTopic("updates") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-delete.mdx b/src/pages/reference/go/v0/api/api-delete.mdx index 0dc5e95d8..e5eb26c3f 100644 --- a/src/pages/reference/go/v0/api/api-delete.mdx +++ b/src/pages/reference/go/v0/api/api-delete.mdx @@ -29,9 +29,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -121,9 +119,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -158,9 +154,7 @@ func main() { api.Delete("/hello/:name", faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -190,8 +184,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-details.mdx b/src/pages/reference/go/v0/api/api-details.mdx index e7e8aa9c7..b92c8fe28 100644 --- a/src/pages/reference/go/v0/api/api-details.mdx +++ b/src/pages/reference/go/v0/api/api-details.mdx @@ -29,9 +29,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -68,8 +66,6 @@ func main() { fmt.Println(details.URL) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-get.mdx b/src/pages/reference/go/v0/api/api-get.mdx index dae0c8121..5fa022b1f 100644 --- a/src/pages/reference/go/v0/api/api-get.mdx +++ b/src/pages/reference/go/v0/api/api-get.mdx @@ -29,9 +29,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -121,9 +119,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -158,8 +154,6 @@ func main() { api.Get("/hello/:name", faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-patch.mdx b/src/pages/reference/go/v0/api/api-patch.mdx index 59902a1a9..66236e2f8 100644 --- a/src/pages/reference/go/v0/api/api-patch.mdx +++ b/src/pages/reference/go/v0/api/api-patch.mdx @@ -29,9 +29,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -121,9 +119,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -158,9 +154,7 @@ func main() { api.Patch("/hello/:name", faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -190,8 +184,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-post.mdx b/src/pages/reference/go/v0/api/api-post.mdx index 515f69b04..8f2704d26 100644 --- a/src/pages/reference/go/v0/api/api-post.mdx +++ b/src/pages/reference/go/v0/api/api-post.mdx @@ -29,9 +29,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -121,9 +119,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -158,9 +154,7 @@ func main() { api.Post("/hello/:name", faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -190,8 +184,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-put.mdx b/src/pages/reference/go/v0/api/api-put.mdx index 2e1b63e2d..1e57e1651 100644 --- a/src/pages/reference/go/v0/api/api-put.mdx +++ b/src/pages/reference/go/v0/api/api-put.mdx @@ -29,9 +29,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -121,9 +119,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -158,9 +154,7 @@ func main() { api.Put("/hello/:name", faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -190,8 +184,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-route-all.mdx b/src/pages/reference/go/v0/api/api-route-all.mdx index e8c868c70..1db86ff0d 100644 --- a/src/pages/reference/go/v0/api/api-route-all.mdx +++ b/src/pages/reference/go/v0/api/api-route-all.mdx @@ -24,9 +24,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -85,9 +83,7 @@ func main() { /* this handler won't work */ }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -114,9 +110,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -151,9 +145,7 @@ func main() { customersRoute.All(faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -183,8 +175,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-route-delete.mdx b/src/pages/reference/go/v0/api/api-route-delete.mdx index 979e2425f..dcfdf9ce9 100644 --- a/src/pages/reference/go/v0/api/api-route-delete.mdx +++ b/src/pages/reference/go/v0/api/api-route-delete.mdx @@ -24,9 +24,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -110,9 +108,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -147,9 +143,7 @@ func main() { api.NewRoute("/hello/:name").Delete(faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -179,8 +173,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-route-get.mdx b/src/pages/reference/go/v0/api/api-route-get.mdx index 67e89a9d3..5d1f4b337 100644 --- a/src/pages/reference/go/v0/api/api-route-get.mdx +++ b/src/pages/reference/go/v0/api/api-route-get.mdx @@ -24,9 +24,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -110,9 +108,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -147,8 +143,6 @@ func main() { api.NewRoute("/hello/:name").Get(faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-route-patch.mdx b/src/pages/reference/go/v0/api/api-route-patch.mdx index 184fe9ae2..14b99c08e 100644 --- a/src/pages/reference/go/v0/api/api-route-patch.mdx +++ b/src/pages/reference/go/v0/api/api-route-patch.mdx @@ -24,9 +24,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -110,9 +108,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -147,9 +143,7 @@ func main() { api.NewRoute("/hello/:name").Patch(faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -179,8 +173,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-route-post.mdx b/src/pages/reference/go/v0/api/api-route-post.mdx index a4ff5af76..53629f4ca 100644 --- a/src/pages/reference/go/v0/api/api-route-post.mdx +++ b/src/pages/reference/go/v0/api/api-route-post.mdx @@ -24,9 +24,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -110,9 +108,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -147,9 +143,7 @@ func main() { api.NewRoute("/hello/:name").Post(faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -179,8 +173,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-route-put.mdx b/src/pages/reference/go/v0/api/api-route-put.mdx index 397882340..39957f0ea 100644 --- a/src/pages/reference/go/v0/api/api-route-put.mdx +++ b/src/pages/reference/go/v0/api/api-route-put.mdx @@ -24,9 +24,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -110,9 +108,7 @@ func main() { return next(ctx) }, nitric.WithNoMethodSecurity()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -147,9 +143,7 @@ func main() { api.NewRoute("/hello/:name").Put(faas.ComposeHttpMiddleware(authMiddleware, handleRequest)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -179,8 +173,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api-route.mdx b/src/pages/reference/go/v0/api/api-route.mdx index b2c34bb64..2bf78957c 100644 --- a/src/pages/reference/go/v0/api/api-route.mdx +++ b/src/pages/reference/go/v0/api/api-route.mdx @@ -21,9 +21,7 @@ func main() { route := api.NewRoute("/hello") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -65,9 +63,7 @@ func main() { route := api.NewRoute("/hello") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -94,9 +90,7 @@ func main() { // Define route with customerId param route := api.NewRoute("/customers/:customerId") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -123,8 +117,6 @@ func main() { route := api.NewRoute("/hello", authMiddleware) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/api/api.mdx b/src/pages/reference/go/v0/api/api.mdx index e2071cb5a..1bc5614c9 100644 --- a/src/pages/reference/go/v0/api/api.mdx +++ b/src/pages/reference/go/v0/api/api.mdx @@ -18,9 +18,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -115,9 +113,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -142,9 +138,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -178,9 +172,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -214,8 +206,6 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-collection.mdx b/src/pages/reference/go/v0/collection/collection-collection.mdx index c87e56a6d..a2d6fa5f8 100644 --- a/src/pages/reference/go/v0/collection/collection-collection.mdx +++ b/src/pages/reference/go/v0/collection/collection-collection.mdx @@ -20,9 +20,7 @@ func main() { enemies := profiles.Collection("enemies") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -55,9 +53,7 @@ func main() { enemiesQuery := enemies.Query() - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-doc-collection.mdx b/src/pages/reference/go/v0/collection/collection-doc-collection.mdx index 071b01d5b..2fe65fad8 100644 --- a/src/pages/reference/go/v0/collection/collection-doc-collection.mdx +++ b/src/pages/reference/go/v0/collection/collection-doc-collection.mdx @@ -23,9 +23,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-doc-delete.mdx b/src/pages/reference/go/v0/collection/collection-doc-delete.mdx index 15ca351e4..6a7d45181 100644 --- a/src/pages/reference/go/v0/collection/collection-doc-delete.mdx +++ b/src/pages/reference/go/v0/collection/collection-doc-delete.mdx @@ -26,9 +26,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-doc-get.mdx b/src/pages/reference/go/v0/collection/collection-doc-get.mdx index 642d0d63a..ef5cbf0dd 100644 --- a/src/pages/reference/go/v0/collection/collection-doc-get.mdx +++ b/src/pages/reference/go/v0/collection/collection-doc-get.mdx @@ -28,9 +28,7 @@ func main() { fmt.Println(doc.Content()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-doc-set.mdx b/src/pages/reference/go/v0/collection/collection-doc-set.mdx index bbfb062b2..eafb72a43 100644 --- a/src/pages/reference/go/v0/collection/collection-doc-set.mdx +++ b/src/pages/reference/go/v0/collection/collection-doc-set.mdx @@ -29,9 +29,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -74,9 +72,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -111,9 +107,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-doc.mdx b/src/pages/reference/go/v0/collection/collection-doc.mdx index eafb3dd39..4897dac2e 100644 --- a/src/pages/reference/go/v0/collection/collection-doc.mdx +++ b/src/pages/reference/go/v0/collection/collection-doc.mdx @@ -20,9 +20,7 @@ func main() { drakeProfileRef := profiles.Doc("Drake Mallard") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-query-fetch.mdx b/src/pages/reference/go/v0/collection/collection-query-fetch.mdx index 73e5c0f8f..8b82e57a7 100644 --- a/src/pages/reference/go/v0/collection/collection-query-fetch.mdx +++ b/src/pages/reference/go/v0/collection/collection-query-fetch.mdx @@ -24,9 +24,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -61,9 +59,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -104,9 +100,7 @@ func main() { } } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-query-limit.mdx b/src/pages/reference/go/v0/collection/collection-query-limit.mdx index d70881555..8b9d215e1 100644 --- a/src/pages/reference/go/v0/collection/collection-query-limit.mdx +++ b/src/pages/reference/go/v0/collection/collection-query-limit.mdx @@ -20,9 +20,7 @@ func main() { profilesQuery := profiles.Query().Limit(10) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-query-stream.mdx b/src/pages/reference/go/v0/collection/collection-query-stream.mdx index 736234026..cce906da4 100644 --- a/src/pages/reference/go/v0/collection/collection-query-stream.mdx +++ b/src/pages/reference/go/v0/collection/collection-query-stream.mdx @@ -24,9 +24,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -71,9 +69,7 @@ func main() { fmt.Println(res.Content()) } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-query-where.mdx b/src/pages/reference/go/v0/collection/collection-query-where.mdx index 6aa4b3988..f1be252de 100644 --- a/src/pages/reference/go/v0/collection/collection-query-where.mdx +++ b/src/pages/reference/go/v0/collection/collection-query-where.mdx @@ -23,9 +23,7 @@ func main() { documents.Condition("name").StartsWith(documents.StringValue("T")), ) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -63,9 +61,7 @@ func main() { documents.Condition("firstName").Eq(documents.StringValue("Drake")), ) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -90,9 +86,7 @@ func main() { documents.Condition("age").Gt(documents.DoubleValue(21)), ) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection-query.mdx b/src/pages/reference/go/v0/collection/collection-query.mdx index dfda52e93..90d580561 100644 --- a/src/pages/reference/go/v0/collection/collection-query.mdx +++ b/src/pages/reference/go/v0/collection/collection-query.mdx @@ -20,9 +20,7 @@ func main() { profilesQuery := profiles.Query() - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/collection/collection.mdx b/src/pages/reference/go/v0/collection/collection.mdx index 163915367..b73771184 100644 --- a/src/pages/reference/go/v0/collection/collection.mdx +++ b/src/pages/reference/go/v0/collection/collection.mdx @@ -18,9 +18,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -76,8 +74,6 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/queues/queue-receive.mdx b/src/pages/reference/go/v0/queues/queue-receive.mdx index a1cc9c7df..52e342d8f 100644 --- a/src/pages/reference/go/v0/queues/queue-receive.mdx +++ b/src/pages/reference/go/v0/queues/queue-receive.mdx @@ -33,9 +33,7 @@ func main() { t.Complete(ctx) } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -107,8 +105,6 @@ func main() { t.Complete(ctx) } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/queues/queue-send.mdx b/src/pages/reference/go/v0/queues/queue-send.mdx index c54c6e45c..9f671eec3 100644 --- a/src/pages/reference/go/v0/queues/queue-send.mdx +++ b/src/pages/reference/go/v0/queues/queue-send.mdx @@ -33,9 +33,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -82,9 +80,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/queues/queue.mdx b/src/pages/reference/go/v0/queues/queue.mdx index e10f29c19..75d1f606c 100644 --- a/src/pages/reference/go/v0/queues/queue.mdx +++ b/src/pages/reference/go/v0/queues/queue.mdx @@ -19,9 +19,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -76,9 +74,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -100,9 +96,7 @@ func main() { tasks := queue.Receive(context.TODO(), 10) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/schedule/schedule-cron.mdx b/src/pages/reference/go/v0/schedule/schedule-cron.mdx index 7060607c9..73247bd29 100644 --- a/src/pages/reference/go/v0/schedule/schedule-cron.mdx +++ b/src/pages/reference/go/v0/schedule/schedule-cron.mdx @@ -20,9 +20,7 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -66,9 +64,7 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -97,8 +93,6 @@ func sendNotification(ctx *faas.EventContext, next faas.EventHandler) (*faas.Eve func main() { nitric.NewSchedule("check for updates").Cron("0 1 1 * *", faas.ComposeEventMiddleware(generateReport, sendNotification)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/schedule/schedule-every.mdx b/src/pages/reference/go/v0/schedule/schedule-every.mdx index c1df20c5d..0405a4141 100644 --- a/src/pages/reference/go/v0/schedule/schedule-every.mdx +++ b/src/pages/reference/go/v0/schedule/schedule-every.mdx @@ -21,9 +21,7 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -60,9 +58,7 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -91,8 +87,6 @@ func sendNotification(ctx *faas.EventContext, next faas.EventHandler) (*faas.Eve func main() { nitric.NewSchedule("aggregate data").Every("3 days", faas.ComposeEventMiddleware(generateReport, sendNotification)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/schedule/schedule.mdx b/src/pages/reference/go/v0/schedule/schedule.mdx index 3183980d0..339c77b6e 100644 --- a/src/pages/reference/go/v0/schedule/schedule.mdx +++ b/src/pages/reference/go/v0/schedule/schedule.mdx @@ -20,9 +20,7 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -66,8 +64,6 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/secrets/secret-latest.mdx b/src/pages/reference/go/v0/secrets/secret-latest.mdx index 8265e6f84..a4bd1203a 100644 --- a/src/pages/reference/go/v0/secrets/secret-latest.mdx +++ b/src/pages/reference/go/v0/secrets/secret-latest.mdx @@ -20,9 +20,7 @@ func main() { latest := secret.Latest() - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -51,9 +49,7 @@ func main() { latest := secret.Latest() - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -79,9 +75,7 @@ func main() { fmt.Println(value.AsString()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/secrets/secret-put.mdx b/src/pages/reference/go/v0/secrets/secret-put.mdx index dc54a8af1..6df427cdc 100644 --- a/src/pages/reference/go/v0/secrets/secret-put.mdx +++ b/src/pages/reference/go/v0/secrets/secret-put.mdx @@ -24,9 +24,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -68,9 +66,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -99,8 +95,6 @@ func main() { fmt.Println(versionRef.Version()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/secrets/secret-version-access.mdx b/src/pages/reference/go/v0/secrets/secret-version-access.mdx index ad7286ed8..6068b4010 100644 --- a/src/pages/reference/go/v0/secrets/secret-version-access.mdx +++ b/src/pages/reference/go/v0/secrets/secret-version-access.mdx @@ -25,9 +25,7 @@ func main() { fmt.Println(value.AsString()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -63,9 +61,7 @@ func main() { fmt.Println(value.AsString()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -93,8 +89,6 @@ func main() { fmt.Println(version.AsString()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/secrets/secret-version.mdx b/src/pages/reference/go/v0/secrets/secret-version.mdx index 6b5059d2d..a5d6fbd95 100644 --- a/src/pages/reference/go/v0/secrets/secret-version.mdx +++ b/src/pages/reference/go/v0/secrets/secret-version.mdx @@ -20,9 +20,7 @@ func main() { version := secret.Version("the-version-id") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -53,9 +51,7 @@ func main() { version := secret.Version("the-version-id") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -83,9 +79,7 @@ func main() { fmt.Println(version.AsString()) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/secrets/secret.mdx b/src/pages/reference/go/v0/secrets/secret.mdx index 41f3d5029..3ba9a9585 100644 --- a/src/pages/reference/go/v0/secrets/secret.mdx +++ b/src/pages/reference/go/v0/secrets/secret.mdx @@ -18,9 +18,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -70,9 +68,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/storage/bucket-file-delete.mdx b/src/pages/reference/go/v0/storage/bucket-file-delete.mdx index a593dfa45..d836c9452 100644 --- a/src/pages/reference/go/v0/storage/bucket-file-delete.mdx +++ b/src/pages/reference/go/v0/storage/bucket-file-delete.mdx @@ -24,9 +24,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -61,8 +59,6 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/storage/bucket-file-downloadurl.mdx b/src/pages/reference/go/v0/storage/bucket-file-downloadurl.mdx index 3776167c8..9e793c4df 100644 --- a/src/pages/reference/go/v0/storage/bucket-file-downloadurl.mdx +++ b/src/pages/reference/go/v0/storage/bucket-file-downloadurl.mdx @@ -24,9 +24,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -64,9 +62,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -106,8 +102,6 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/storage/bucket-file-read.mdx b/src/pages/reference/go/v0/storage/bucket-file-read.mdx index 8c4f81a07..091d6f3cd 100644 --- a/src/pages/reference/go/v0/storage/bucket-file-read.mdx +++ b/src/pages/reference/go/v0/storage/bucket-file-read.mdx @@ -26,9 +26,7 @@ func main() { fmt.Println(contents) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -65,8 +63,6 @@ func main() { fmt.Println(contents) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/storage/bucket-file-uploadurl.mdx b/src/pages/reference/go/v0/storage/bucket-file-uploadurl.mdx index e983864c9..a8cda7b19 100644 --- a/src/pages/reference/go/v0/storage/bucket-file-uploadurl.mdx +++ b/src/pages/reference/go/v0/storage/bucket-file-uploadurl.mdx @@ -24,9 +24,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -64,8 +62,6 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/storage/bucket-file-write.mdx b/src/pages/reference/go/v0/storage/bucket-file-write.mdx index 320a6f828..b8a1598a0 100644 --- a/src/pages/reference/go/v0/storage/bucket-file-write.mdx +++ b/src/pages/reference/go/v0/storage/bucket-file-write.mdx @@ -24,9 +24,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -64,8 +62,6 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/storage/bucket-file.mdx b/src/pages/reference/go/v0/storage/bucket-file.mdx index 997461e4d..9dcc1d09d 100644 --- a/src/pages/reference/go/v0/storage/bucket-file.mdx +++ b/src/pages/reference/go/v0/storage/bucket-file.mdx @@ -20,9 +20,7 @@ func main() { file := bucket.File("cat.png") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/storage/bucket-files.mdx b/src/pages/reference/go/v0/storage/bucket-files.mdx index 6806f1535..d05b556b5 100644 --- a/src/pages/reference/go/v0/storage/bucket-files.mdx +++ b/src/pages/reference/go/v0/storage/bucket-files.mdx @@ -24,9 +24,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -68,9 +66,7 @@ func main() { file.Delete(ctx) } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/storage/bucket-on.mdx b/src/pages/reference/go/v0/storage/bucket-on.mdx index 168c067d6..4bdb25ab2 100644 --- a/src/pages/reference/go/v0/storage/bucket-on.mdx +++ b/src/pages/reference/go/v0/storage/bucket-on.mdx @@ -45,9 +45,7 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/storage/bucket.mdx b/src/pages/reference/go/v0/storage/bucket.mdx index d0a121503..27f3d1390 100644 --- a/src/pages/reference/go/v0/storage/bucket.mdx +++ b/src/pages/reference/go/v0/storage/bucket.mdx @@ -18,9 +18,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/topic/topic-publish.mdx b/src/pages/reference/go/v0/topic/topic-publish.mdx index d5a8d9dc4..dd93c0682 100644 --- a/src/pages/reference/go/v0/topic/topic-publish.mdx +++ b/src/pages/reference/go/v0/topic/topic-publish.mdx @@ -28,9 +28,7 @@ func main() { }, }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -87,9 +85,7 @@ func main() { "something": "amazing happened", }, }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -121,9 +117,7 @@ func main() { }, }, events.WithDelay(time.Hour)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/topic/topic-subscribe.mdx b/src/pages/reference/go/v0/topic/topic-subscribe.mdx index 21167d98c..484178f6c 100644 --- a/src/pages/reference/go/v0/topic/topic-subscribe.mdx +++ b/src/pages/reference/go/v0/topic/topic-subscribe.mdx @@ -20,9 +20,7 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -53,9 +51,7 @@ func main() { return ctx, nil }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -84,9 +80,7 @@ func handleUpdate(ctx *faas.EventContext, next faas.EventHandler) (*faas.EventCo func main() { nitric.NewTopic("updates").Subscribe(faas.ComposeEventMiddleware(validateUpdate, handleUpdate)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/topic/topic.mdx b/src/pages/reference/go/v0/topic/topic.mdx index f1ac862cb..4d9736d31 100644 --- a/src/pages/reference/go/v0/topic/topic.mdx +++ b/src/pages/reference/go/v0/topic/topic.mdx @@ -15,9 +15,7 @@ import ( func main() { updates := nitric.NewTopic("updates") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -43,9 +41,7 @@ import ( func main() { updates := nitric.NewTopic("updates") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/websocket/websocket-close.mdx b/src/pages/reference/go/v0/websocket/websocket-close.mdx index e4ea89761..a81ac9b9d 100644 --- a/src/pages/reference/go/v0/websocket/websocket-close.mdx +++ b/src/pages/reference/go/v0/websocket/websocket-close.mdx @@ -21,9 +21,7 @@ func main() { ws.Close(context.TODO(), "D28BA458-BFF4-404A") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -67,8 +65,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/websocket/websocket-details.mdx b/src/pages/reference/go/v0/websocket/websocket-details.mdx index d171e8e33..aae1ad761 100644 --- a/src/pages/reference/go/v0/websocket/websocket-details.mdx +++ b/src/pages/reference/go/v0/websocket/websocket-details.mdx @@ -29,9 +29,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -68,8 +66,6 @@ func main() { fmt.Println(details.URL) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/websocket/websocket-on.mdx b/src/pages/reference/go/v0/websocket/websocket-on.mdx index 42954e474..b5c777f9c 100644 --- a/src/pages/reference/go/v0/websocket/websocket-on.mdx +++ b/src/pages/reference/go/v0/websocket/websocket-on.mdx @@ -34,9 +34,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -113,9 +111,7 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -151,8 +147,6 @@ func main() { ws.On(faas.WebsocketMessage, faas.ComposeWebsocketMiddleware(validateMessage, handleMessage)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/websocket/websocket-send.mdx b/src/pages/reference/go/v0/websocket/websocket-send.mdx index 59d2cb516..fc856a648 100644 --- a/src/pages/reference/go/v0/websocket/websocket-send.mdx +++ b/src/pages/reference/go/v0/websocket/websocket-send.mdx @@ -21,9 +21,7 @@ func main() { ws.Send(context.TODO(), "D28BA458-BFF4-404A", []byte("Hello World")) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -118,8 +116,6 @@ func main() { return next(ctx) }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/v0/websocket/websocket.mdx b/src/pages/reference/go/v0/websocket/websocket.mdx index aace353b7..f373a3017 100644 --- a/src/pages/reference/go/v0/websocket/websocket.mdx +++ b/src/pages/reference/go/v0/websocket/websocket.mdx @@ -18,9 +18,7 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -50,8 +48,6 @@ func main() { return } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/websocket/websocket-close.mdx b/src/pages/reference/go/websocket/websocket-close.mdx index 9820a0f72..faf0f3add 100644 --- a/src/pages/reference/go/websocket/websocket-close.mdx +++ b/src/pages/reference/go/websocket/websocket-close.mdx @@ -8,22 +8,16 @@ Closes a connection to a websocket ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" ) func main() { - ws, err := nitric.NewWebsocket("public") - if err != nil { - return - } + ws := nitric.NewWebsocket("public") ws.Close(context.TODO(), "D28BA458-BFF4-404A") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -44,31 +38,25 @@ func main() { ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric/websockets" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/websockets" ) func main() { - ws, err := nitric.NewWebsocket("public") - if err != nil { - return - } - - // Broadcast message to all the registered websocket connections - ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) (*websockets.Ctx, error) { - if ctx.Request.Message() == "close" { - err := ws.Close(context.Background(), ctx.Request.ConnectionID()) - return ctx, err - } - - return next(ctx) - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + ws := nitric.NewWebsocket("public") + + // Broadcast message to all the registered websocket connections + ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) error { + if ctx.Request.Message() == "close" { + err := ws.Close(context.Background(), ctx.Request.ConnectionID()) + return err + } + + return nil + }) + + nitric.Run() } ``` diff --git a/src/pages/reference/go/websocket/websocket-on.mdx b/src/pages/reference/go/websocket/websocket-on.mdx index 139782dcc..a6660e5ca 100644 --- a/src/pages/reference/go/websocket/websocket-on.mdx +++ b/src/pages/reference/go/websocket/websocket-on.mdx @@ -7,17 +7,12 @@ Register a handler for connections, disconnections, or messages for the websocke ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/websockets" "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/websockets" ) func main() { - ws, err := nitric.NewWebsocket("public") - if err != nil { - return - } + ws := nitric.NewWebsocket("public") ws.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { // handle connections @@ -31,9 +26,7 @@ func main() { // handle messages }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -44,9 +37,8 @@ func main() { The type of websocket event to listen for. Can be `EventType_Connect`, `EventType_Disconnect`, or `EventType_Message`. - - The middleware function to use as the handler for Websocket events. If you - want to compose more than one middleware use `nitric.Compose`. + + The callback function to use as the handler for Websocket events. @@ -66,95 +58,52 @@ To store Websocket connections you can use a Nitric collection. ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric/websockets" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" + "github.com/nitrictech/go-sdk/nitric/websockets" ) func main() { - ws, err := nitric.NewWebsocket("public") - if err != nil { - return - } - - connections, err := nitric.NewKv("connections").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - if err != nil { - return - } - - // Register a new connection on connect - ws.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) error { - return := connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ - "connectionId": ctx.Request.ConnectionID(), - }) - }) - - // Remove a registered connection on disconnect - ws.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) error { - return connections.Delete(context.TODO(), ctx.Request.ConnectionID()) - }) - - // Broadcast message to all the registered websocket connections - ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) error { - connectionStream, err := connections.Keys(context.TODO()) - if err != nil { - return ctx, err - } - - for { - connectionId, err := connectionStream.Recv() - if err != nil { - break // reached the end of the documents - } - - err = ws.Send(context.TODO(), connectionId, []byte(ctx.Request.Message())) - if err != nil { - return err - } - } - - return nil - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } -} -``` - -### Chain functions as a single method handler - -```go -import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/websockets" - "github.com/nitrictech/go-sdk/nitric" -) - -func validateMessage(ctx *websockets.Ctx, next nitric.Handler[websockets.Ctx]) (*websockets.Ctx, error) { - // validate that the message does not contain explicit content - return next(ctx) -} + ws := nitric.NewWebsocket("public") -func handleMessage(ctx *websockets.Ctx, next nitric.Handler[websockets.Ctx]) (*websockets.Ctx, error) { - fmt.Printf("New Message from %s: %s\n", ctx.Request.ConnectionID(), ctx.Request.Message()) + connections := nitric.NewKv("connections").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) - return next(ctx) -} + // Register a new connection on connect + ws.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) error { + return connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ + "connectionId": ctx.Request.ConnectionID(), + }) + }) -func main() { - ws, err := nitric.NewWebsocket("public") - if err != nil { - return - } + // Remove a registered connection on disconnect + ws.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) error { + return connections.Delete(context.TODO(), ctx.Request.ConnectionID()) + }) - ws.On(websockets.EventType_Message, validateMessage, handleMessage) + // Broadcast message to all the registered websocket connections + ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) error { + connectionStream, err := connections.Keys(context.TODO()) + if err != nil { + return err + } + + for { + connectionId, err := connectionStream.Recv() + if err != nil { + break // reached the end of the documents + } + + err = ws.Send(context.TODO(), connectionId, []byte(ctx.Request.Message())) + if err != nil { + return err + } + } + + return nil + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/reference/go/websocket/websocket-send.mdx b/src/pages/reference/go/websocket/websocket-send.mdx index b12d6f14a..1cc34b957 100644 --- a/src/pages/reference/go/websocket/websocket-send.mdx +++ b/src/pages/reference/go/websocket/websocket-send.mdx @@ -8,22 +8,16 @@ Send a message from the websocket to a connection. ```go import ( "context" - "fmt" "github.com/nitrictech/go-sdk/nitric" ) func main() { - ws, err := nitric.NewWebsocket("public") - if err != nil { - return - } + ws := nitric.NewWebsocket("public") ws.Send(context.TODO(), "D28BA458-BFF4-404A", []byte("Hello World")) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -52,61 +46,51 @@ func main() { ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric/websockets" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" + "github.com/nitrictech/go-sdk/nitric/websockets" ) func main() { - ws, err := nitric.NewWebsocket("public") - if err != nil { - return - } - - connections, err := nitric.NewKv("connections").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - if err != nil { - return - } - - // Register a new connection on connect - ws.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) error { - return connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ - "connectionId": ctx.Request.ConnectionID(), - }) - }) - - // Remove a registered connection on disconnect - ws.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) error { - return connections.Delete(context.TODO(), ctx.Request.ConnectionID()) - }) - - // Broadcast message to all the registered websocket connections - ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) error { - connectionStream, err := connections.Keys(context.TODO()) - if err != nil { - return err - } - - for { - connectionId, err := connectionStream.Recv() - if err != nil { - break // reached the end of the documents - } - - err = ws.Send(context.TODO(), connectionId, []byte(ctx.Request.Message())) - if err != nil { - return err - } - } - - return nil - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + ws := nitric.NewWebsocket("public") + connections := nitric.NewKv("connections").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) + + // Register a new connection on connect + ws.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) error { + return connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ + "connectionId": ctx.Request.ConnectionID(), + }) + }) + + // Remove a registered connection on disconnect + ws.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) error { + return connections.Delete(context.TODO(), ctx.Request.ConnectionID()) + }) + + // Broadcast message to all the registered websocket connections + ws.On(websockets.EventType_Message, func(ctx *websockets.Ctx) error { + connectionStream, err := connections.Keys(context.TODO()) + if err != nil { + return err + } + + for { + connectionId, err := connectionStream.Recv() + if err != nil { + break // reached the end of the documents + } + + err = ws.Send(context.TODO(), connectionId, []byte(ctx.Request.Message())) + if err != nil { + return err + } + } + + return nil + }) + + nitric.Run() } - ``` diff --git a/src/pages/reference/go/websocket/websocket.mdx b/src/pages/reference/go/websocket/websocket.mdx index c262c9a9e..22a65a547 100644 --- a/src/pages/reference/go/websocket/websocket.mdx +++ b/src/pages/reference/go/websocket/websocket.mdx @@ -7,20 +7,13 @@ Creates a new Websocket. ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" ) func main() { - ws, err := nitric.NewWebsocket("public") - if err != nil { - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + ws := nitric.NewWebsocket("public") + + nitric.Run() } ``` @@ -39,19 +32,12 @@ func main() { ```go import ( - "fmt" - "github.com/nitrictech/go-sdk/nitric" ) func main() { - ws, err := nitric.NewWebsocket("public") - if err != nil { - return - } - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + ws := nitric.NewWebsocket("public") + + nitric.Run() } ``` diff --git a/src/pages/schedules.mdx b/src/pages/schedules.mdx index 997f3f787..eaef6afcb 100644 --- a/src/pages/schedules.mdx +++ b/src/pages/schedules.mdx @@ -66,26 +66,24 @@ Nitric.run() ```go import ( - "fmt" - "time" + "fmt" + "time" - "github.com/nitrictech/go-sdk/nitric/schedules" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/schedules" ) func main() { - // Run every 5 minutes - nitric.NewSchedule("process-transactions").Every("5 minutues", func(ctx *schedules.Ctx) { - fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) - }) - // Run at 22:00 Monday through Friday. - nitric.NewSchedule("send-reminder").Cron("0 22 * * 1-5", func(ctx *schedules.Ctx) { - fmt.Printf("reminder at %s\n", time.Now().Format(time.RFC3339)) - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + // Run every 5 minutes + nitric.NewSchedule("process-transactions").Every("5 minutues", func(ctx *schedules.Ctx) { + fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) + }) + // Run at 22:00 Monday through Friday. + nitric.NewSchedule("send-reminder").Cron("0 22 * * 1-5", func(ctx *schedules.Ctx) { + fmt.Printf("reminder at %s\n", time.Now().Format(time.RFC3339)) + }) + + nitric.Run() } ``` @@ -154,32 +152,30 @@ async def process_rarely(ctx): ```go import ( - "fmt" - "time" + "fmt" + "time" - "github.com/nitrictech/go-sdk/nitric/schedules" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/schedules" ) func main() { - // Run every 5 minutes - nitric.NewSchedule("process-often").Every("5 minutes", func(ctx *schedules.Ctx) { - fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) - }) - - // Run every 2 hours - nitric.NewSchedule("process-sometimes").Every("2 hours", func(ctx *schedules.Ctx) { - fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) - }) - - // Run every 30 days - nitric.NewSchedule("process-rarely").Every("30 days", func(ctx *schedules.Ctx) { - fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + // Run every 5 minutes + nitric.NewSchedule("process-often").Every("5 minutes", func(ctx *schedules.Ctx) { + fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) + }) + + // Run every 2 hours + nitric.NewSchedule("process-sometimes").Every("2 hours", func(ctx *schedules.Ctx) { + fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) + }) + + // Run every 30 days + nitric.NewSchedule("process-rarely").Every("30 days", func(ctx *schedules.Ctx) { + fmt.Printf("processing at %s\n", time.Now().Format(time.RFC3339)) + }) + + nitric.Run() } ``` @@ -255,26 +251,24 @@ async def clear_data(ctx): package main import ( - "fmt" + "fmt" - "github.com/nitrictech/go-sdk/nitric/schedules" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/schedules" ) func main() { - // every 15 minutes - nitric.NewSchedule("check-for-updates").Cron("0/15 * * * *", func(ctx *schedules.Ctx) { - fmt.Println("checking for updates") - }) - - // at 1:00am on the 1st of every month - nitric.NewSchedule("delete-stale-data").Cron("0 1 1 * *", func(ctx *schedules.Ctx) { - fmt.Println("clearing data") - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + // every 15 minutes + nitric.NewSchedule("check-for-updates").Cron("0/15 * * * *", func(ctx *schedules.Ctx) { + fmt.Println("checking for updates") + }) + + // at 1:00am on the 1st of every month + nitric.NewSchedule("delete-stale-data").Cron("0 1 1 * *", func(ctx *schedules.Ctx) { + fmt.Println("clearing data") + }) + + nitric.Run() } ``` diff --git a/src/pages/secrets.mdx b/src/pages/secrets.mdx index 1de2e0a7a..067984522 100644 --- a/src/pages/secrets.mdx +++ b/src/pages/secrets.mdx @@ -62,17 +62,14 @@ Nitric.run() ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - apiKey, _ := nitric.NewSecret("api-key").Allow(nitric.SecretPut, nitric.SecretAccess) + apiKey := nitric.NewSecret("api-key").Allow(secrets.SecretPut, secrets.SecretAccess) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -121,23 +118,19 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - apiKey, _ := nitric.NewSecret("api-key").Allow(nitric.SecretPut) - - latest, _ := apiKey.Put(context.TODO(), []byte("a new secret value")) + apiKey := nitric.NewSecret("api-key").Allow(secrets.SecretPut) - // We can get the version ID of our newly stored value - latest + // We can get the version ID of our newly stored value + versionId, _ := apiKey.Put(context.TODO(), []byte("a new secret value")) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -238,29 +231,27 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/secrets" ) func main() { - apiKey, _ := nitric.NewSecret("api-key").Allow(nitric.SecretAccess) + apiKey := nitric.NewSecret("api-key").Allow(secrets.SecretAccess) - // Access the details of the latest version of a secret - latest, _ := apiKey.Access(context.TODO()) + // Access the details of the latest version of a secret + latest, _ := apiKey.Access(context.TODO()) - // Retrieve the value of the secret as a string - value := latest.AsString() + // Retrieve the value of the secret as a string + value := latest.AsString() - // Access the details of the latest version of a secret - someVersion, _ := apiKey.AccessVersion(context.TODO(), "known-version-id") + // Access the details of the latest version of a secret + someVersion, _ := apiKey.AccessVersion(context.TODO(), "known-version-id") - otherValue := someVersion.AsString() + otherValue := someVersion.AsString() - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/sql.mdx b/src/pages/sql.mdx index bbaca93c2..1cdd2fa2e 100644 --- a/src/pages/sql.mdx +++ b/src/pages/sql.mdx @@ -60,6 +60,18 @@ import 'package:nitric_sdk/nitric.dart'; final db = Nitric.sql("my-database"); ``` +```go +import ( + "github.com/nitrictech/go-sdk/nitric" +) + +func main() { + db := nitric.NewSqlDatabase("my-database") + + nitric.Run() +} +``` + ## Accessing a SQL database @@ -124,6 +136,24 @@ Nitric.api("example").get("/hello", (ctx) async { }); ``` +```go +import ( + "context" + + "github.com/nitrictech/go-sdk/nitric" +) + +func main() { + db := nitric.NewSqlDatabase("my-database") + + nitric.NewApi("example").Get("/hello", func() { + connStr, _ := db.ConnectionString(context.TODO()) + }) + + nitric.Run() +} +``` + ## Schemas and Migrations @@ -199,6 +229,19 @@ final db = Nitric.sql("my-database", ); ``` +```go +import ( + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/sql" +) + +func main() { + db := nitric.NewSqlDatabase("my-database", sql.WithMigrationsPath("file://migrations/my-database")) + + nitric.Run() +} +``` + When new migration files are added Nitric will automatically apply them when you redeploy your project. @@ -239,6 +282,19 @@ final db = Nitric.sql("my-database", ); ``` +```go +import ( + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/sql" +) + +func main() { + db := nitric.NewSqlDatabase("my-database", sql.WithMigrationsPath("dockerfile://migrations.dockerfile")) + + nitric.Run() +} +``` + diff --git a/src/pages/storage.mdx b/src/pages/storage.mdx index 3ef07123c..357facae1 100644 --- a/src/pages/storage.mdx +++ b/src/pages/storage.mdx @@ -55,17 +55,14 @@ Nitric.run() ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketRead, nitric.BucketWrite, nitric.BucketDelete) + profiles := nitric.NewBucket("profiles").Allow(storage.BucketRead, storage.BucketWrite, storage.BucketDelete) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -113,7 +110,7 @@ Nitric.run() ``` ```go -// Go does not have File references use methods on the Bucket reference +// Go does not have File references use methods on the Bucket reference directly ``` ```dart @@ -162,24 +159,23 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" + "fmt" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketRead, nitric.BucketWrite, nitric.BucketDelete) + profiles := nitric.NewBucket("profiles").Allow(storage.BucketRead, storage.BucketWrite, storage.BucketDelete) - files, _ := profiles.ListFiles(context.TODO()) + files, _ := profiles.ListFiles(context.TODO()) - for _, file := range files { - fmt.Println(file.Name()) - } + for _, file := range files { + fmt.Println(file) + } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -231,20 +227,21 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketRead, nitric.BucketWrite, nitric.BucketDelete) + profiles := nitric.NewBucket("profiles").Allow(storage.BucketRead, storage.BucketWrite, storage.BucketDelete) - image, _ := profiles.Read(context.TODO(), "users/bruce-wayne/profile.png") + image, err := profiles.Read(context.TODO(), "users/bruce-wayne/profile.png") + if err != nil { + // Handle error + } - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -296,22 +293,20 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketWrite) + profiles := nitric.NewBucket("profiles").Allow(storage.BucketWrite) - profileImage := []byte("image data") + profileImage := []byte("image data") - _ = profiles.Write(context.TODO(), "users/bruce-wayne/profile.png", profileImage) + _ = profiles.Write(context.TODO(), "users/bruce-wayne/profile.png", profileImage) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -356,20 +351,18 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketDelete) + profiles := nitric.NewBucket("profiles").Allow(storage.BucketDelete) - _ = profiles.Delete(context.TODO(), "users/bruce-wayne/profile.png") + _ = profiles.Delete(context.TODO(), "users/bruce-wayne/profile.png") - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -429,26 +422,23 @@ Nitric.run() ```go import ( - "context" - "fmt" - "time" + "context" + "time" - "github.com/nitrictech/go-sdk/nitric" - "github.com/nitrictech/go-sdk/nitric/storage" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - profiles, _ := nitric.NewBucket("profiles").Allow(nitric.BucketRead, nitric.BucketWrite) + profiles := nitric.NewBucket("profiles").Allow(storage.BucketRead, storage.BucketWrite) - // Expiry defaults to 600 (10 minutes) - downloadUrl, _ := profiles.DownloadUrl(context.TODO(), "profile.png", storage.WithPresignUrlExpiry(time.Millisecond*3600)) + // Expiry defaults to 600 (10 minutes) + downloadUrl, _ := profiles.DownloadUrl(context.TODO(), "profile.png", storage.WithPresignUrlExpiry(time.Millisecond*3600)) - // Expiry defaults to 600 (10 minutes) - uploadUrl, _ := profiles.UploadUrl(context.TODO(), "profile.png", storage.WithPresignUrlExpiry(time.Millisecond*3600)) + // Expiry defaults to 600 (10 minutes) + uploadUrl, _ := profiles.UploadUrl(context.TODO(), "profile.png", storage.WithPresignUrlExpiry(time.Millisecond*3600)) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -512,23 +502,21 @@ Nitric.run() ```go import ( - "fmt" + "fmt" - "github.com/nitrictech/go-sdk/nitric/storage" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - profiles := nitric.NewBucket("profiles") + profiles := nitric.NewBucket("profiles") - // Filter for 'write' events for files starting with '/users/images' - profiles.On(storage.WriteNotification, "/users/images", func(ctx *storage.Ctx) { - fmt.Printf("new profile image for %s was written", ctx.Request.Key()) - }) + // Filter for 'write' events for files starting with '/users/images' + profiles.On(storage.WriteNotification, "/users/images", func(ctx *storage.Ctx) { + fmt.Printf("new profile image for %s was written", ctx.Request.Key()) + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -578,23 +566,21 @@ Nitric.run() ```go import ( - "fmt" + "fmt" - "github.com/nitrictech/go-sdk/nitric/storage" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/storage" ) func main() { - profiles := nitric.NewBucket("profiles") + profiles := nitric.NewBucket("profiles") - // Filter for 'delete' events for any file - profiles.On(storage.DeleteNotification, "*", func(ctx *storage.Ctx) { - fmt.Printf("%s was deleted", ctx.Request.Key()) - }) + // Filter for 'delete' events for any file + profiles.On(storage.DeleteNotification, "*", func(ctx *storage.Ctx) { + fmt.Printf("%s was deleted", ctx.Request.Key()) + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` diff --git a/src/pages/websockets.mdx b/src/pages/websockets.mdx index c0de0c97a..6341e8c75 100644 --- a/src/pages/websockets.mdx +++ b/src/pages/websockets.mdx @@ -57,30 +57,26 @@ Nitric.run() ```go import ( - "fmt" - - "github.com/nitrictech/go-sdk/nitric/websockets" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/websockets" ) func main() { - socket, _ := nitric.NewWebsocket("socket") + socket := nitric.NewWebsocket("socket") - socket.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { - // handle connections - }) + socket.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { + // handle connections + }) - socket.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) { - // handle disconnections - }) + socket.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) { + // handle disconnections + }) - socket.On(websockets.EventType_Message, func(ctx *websockets.Ctx) { - // handle messages - }) + socket.On(websockets.EventType_Message, func(ctx *websockets.Ctx) { + // handle messages + }) - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + nitric.Run() } ``` @@ -163,33 +159,31 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric/websockets" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" + "github.com/nitrictech/go-sdk/nitric/websockets" ) func main() { - socket, _ := nitric.NewWebsocket("socket") - connections, _ := nitric.NewKv("connections").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - - // Register a new connection on connect - socket.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { - _ = connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ - // Store any metadata related to the connection here - "connectionId": ctx.Request.ConnectionID(), - }) - }) - - // Remove a registered connection on disconnect - socket.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) { - _ = connections.Delete(context.TODO(), ctx.Request.ConnectionID()) - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + socket := nitric.NewWebsocket("socket") + connections := nitric.NewKv("connections").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) + + // Register a new connection on connect + socket.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { + _ = connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ + // Store any metadata related to the connection here + "connectionId": ctx.Request.ConnectionID(), + }) + }) + + // Remove a registered connection on disconnect + socket.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) { + _ = connections.Delete(context.TODO(), ctx.Request.ConnectionID()) + }) + + nitric.Run() } ``` @@ -303,48 +297,46 @@ Nitric.run() ```go import ( - "context" - "fmt" + "context" - "github.com/nitrictech/go-sdk/nitric/websockets" - "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric" + "github.com/nitrictech/go-sdk/nitric/keyvalue" + "github.com/nitrictech/go-sdk/nitric/websockets" ) func main() { - socket, _ := nitric.NewWebsocket("socket") - connections, _ := nitric.NewKv("connections").Allow(nitric.KvStoreGet, nitric.KvStoreSet, nitric.KvStoreDelete) - - // Register a new connection on connect - socket.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { - _ = connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ - // Store any metadata related to the connection here - "connectionId": ctx.Request.ConnectionID(), - }) - }) - - // Remove a registered connection on disconnect - socket.On(websockets.EventType_Disconnnect, func(ctx *websockets.Ctx) { - _ = connections.Delete(context.TODO(), ctx.Request.ConnectionID()) - }) - - // Broadcast message to all the registered websocket connections - socket.On(websockets.EventType_Message, func(ctx *websockets.Ctx) { - connectionStream, _ := connections.Keys(context.TODO()) - - for { - connectionId, err := connectionStream.Recv() - if err != nil { - break // reached the end of the documents - } - - // Send a message to a connection - _ = socket.Send(context.TODO(), connectionId, []byte(ctx.Request.Message())) - } - }) - - if err := nitric.Run(); err != nil { - fmt.Println(err) - } + socket := nitric.NewWebsocket("socket") + connections := nitric.NewKv("connections").Allow(keyvalue.KvStoreGet, keyvalue.KvStoreSet, keyvalue.KvStoreDelete) + + // Register a new connection on connect + socket.On(websockets.EventType_Connect, func(ctx *websockets.Ctx) { + _ = connections.Set(context.TODO(), ctx.Request.ConnectionID(), map[string]interface{}{ + // Store any metadata related to the connection here + "connectionId": ctx.Request.ConnectionID(), + }) + }) + + // Remove a registered connection on disconnect + socket.On(websockets.EventType_Disconnect, func(ctx *websockets.Ctx) { + _ = connections.Delete(context.TODO(), ctx.Request.ConnectionID()) + }) + + // Broadcast message to all the registered websocket connections + socket.On(websockets.EventType_Message, func(ctx *websockets.Ctx) { + connectionStream, _ := connections.Keys(context.TODO()) + + for { + connectionId, err := connectionStream.Recv() + if err != nil { + break // reached the end of the documents + } + + // Send a message to a connection + _ = socket.Send(context.TODO(), connectionId, []byte(ctx.Request.Message())) + } + }) + + nitric.Run() } ```