diff --git a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/README.md b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/README.md index da02e963bfb..9608633168e 100644 --- a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/README.md +++ b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/README.md @@ -25,8 +25,9 @@ Repository for third party middlewares with dependencies. * [Fibersentry](./fibersentry/README.md) * [Fiberzap](./fiberzap/README.md) * [Fiberzerolog](./fiberzerolog/README.md) +* [HCaptcha](./hcaptcha/README.md) * [JWT](./jwt/README.md) -* [Loadshed](./loadshed/README.md) +* [Loadshed](./loadshed/README.md) * [NewRelic](./fibernewrelic/README.md) * [Open Policy Agent](./opafiber/README.md) * [Otelfiber (OpenTelemetry)](./otelfiber/README.md) diff --git a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/casbin/README.md b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/casbin/README.md index 6462cc0294a..c461235c702 100644 --- a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/casbin/README.md +++ b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/casbin/README.md @@ -19,7 +19,7 @@ Casbin middleware for Fiber. go get -u github.com/gofiber/fiber/v2 go get -u github.com/gofiber/contrib/casbin ``` -choose an adapter from [here](https://casbin.org/docs/en/adapters) +choose an adapter from [here](https://casbin.org/docs/adapters) ``` go get -u github.com/casbin/xorm-adapter ``` diff --git a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/fibernewrelic/README.md b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/fibernewrelic/README.md index 28f954ce983..c6636fe179c 100644 --- a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/fibernewrelic/README.md +++ b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/fibernewrelic/README.md @@ -29,14 +29,16 @@ fibernewrelic.New(config fibernewrelic.Config) fiber.Handler ## Config -| Property | Type | Description | Default | -|:------------------|:-----------------|:---------------------------------------|:---------------| -| License | `string` | Required - New Relic License Key | `""` | -| AppName | `string` | New Relic Application Name | `fiber-api` | -| Enabled | `bool` | Enable/Disable New Relic | `false` | -| ~~TransportType~~ | ~~`string`~~ | ~~Can be HTTP or HTTPS~~ (Deprecated) | ~~`"HTTP"`~~ | -| Application | `Application` | Existing New Relic App | `nil` | -| ErrorStatusCodeHandler | `func(c *fiber.Ctx, err error) int` | If you want to change newrelic status code, you can use it. | `DefaultErrorStatusCodeHandler` | +| Property | Type | Description | Default | +|:-----------------------|:-----------------|:------------------------------------------------------------|:--------------------------------| +| License | `string` | Required - New Relic License Key | `""` | +| AppName | `string` | New Relic Application Name | `fiber-api` | +| Enabled | `bool` | Enable/Disable New Relic | `false` | +| ~~TransportType~~ | ~~`string`~~ | ~~Can be HTTP or HTTPS~~ (Deprecated) | ~~`"HTTP"`~~ | +| Application | `Application` | Existing New Relic App | `nil` | +| ErrorStatusCodeHandler | `func(c *fiber.Ctx, err error) int` | If you want to change newrelic status code, you can use it. | `DefaultErrorStatusCodeHandler` | +| Next | `func(c *fiber.Ctx) bool` | Next defines a function to skip this middleware when returned true. | `nil` | + ## Usage diff --git a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/fibersentry/README.md b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/fibersentry/README.md index 6291441d9e3..56fd37ea570 100644 --- a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/fibersentry/README.md +++ b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/fibersentry/README.md @@ -33,7 +33,7 @@ fibersentry.New(config ...fibersentry.Config) fiber.Handler ## Config | Property | Type | Description | Default | -|:----------------|:----------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------------------| +| :-------------- | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------- | | Repanic | `bool` | Repanic configures whether Sentry should repanic after recovery. Set to true, if [Recover](https://github.com/gofiber/fiber/tree/master/middleware/recover) middleware is used. | `false` | | WaitForDelivery | `bool` | WaitForDelivery configures whether you want to block the request before moving forward with the response. If [Recover](https://github.com/gofiber/fiber/tree/master/middleware/recover) middleware is used, it's safe to either skip this option or set it to false. | `false` | | Timeout | `time.Duration` | Timeout for the event delivery requests. | `time.Second * 2` | @@ -41,10 +41,10 @@ fibersentry.New(config ...fibersentry.Config) fiber.Handler ## Usage `fibersentry` attaches an instance of `*sentry.Hub` (https://godoc.org/github.com/getsentry/sentry-go#Hub) to the request's context, which makes it available throughout the rest of the request's lifetime. -You can access it by using the `fibersentry.GetHubFromContext()` method on the context itself in any of your proceeding middleware and routes. -And it should be used instead of the global `sentry.CaptureMessage`, `sentry.CaptureException`, or any other calls, as it keeps the separation of data between the requests. +You can access it by using the `fibersentry.GetHubFromContext()` or `fibersentry.MustGetHubFromContext()` method on the context itself in any of your proceeding middleware and routes. +Keep in mind that `*sentry.Hub` should be used instead of the global `sentry.CaptureMessage`, `sentry.CaptureException`, or any other calls, as it keeps the separation of data between the requests. -**Keep in mind that `*sentry.Hub` won't be available in middleware attached before to `fibersentry`!** +- **Keep in mind that `*sentry.Hub` won't be available in middleware attached before `fibersentry`. In this case, `GetHubFromContext()` returns nil, and `MustGetHubFromContext()` will panic.** ```go package main diff --git a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/hcaptcha/README.md b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/hcaptcha/README.md new file mode 100644 index 00000000000..952956e0168 --- /dev/null +++ b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/hcaptcha/README.md @@ -0,0 +1,83 @@ +--- +id: hcaptcha +--- + +# HCaptcha + +![Release](https://img.shields.io/github/v/tag/gofiber/contrib?filter=hcaptcha*) +[![Discord](https://img.shields.io/discord/704680098577514527?style=flat&label=%F0%9F%92%AC%20discord&color=00ACD7)](https://gofiber.io/discord) +![Test](https://github.com/gofiber/contrib/workflows/Tests/badge.svg) +![Security](https://github.com/gofiber/contrib/workflows/Security/badge.svg) +![Linter](https://github.com/gofiber/contrib/workflows/Linter/badge.svg) + +A simple [HCaptcha](https://hcaptcha.com) middleware to prevent bot attacks. + +:::note + +Requires Go **1.21** and above + +::: + +## Install + +:::caution + +This middleware only supports Fiber **v3**. + +::: + +```shell +go get -u github.com/gofiber/fiber/v3 +go get -u github.com/gofiber/contrib/hcaptcha +``` + +## Signature + +```go +hcaptcha.New(config hcaptcha.Config) fiber.Handler +``` + +## Config + +| Property | Type | Description | Default | +|:----------------|:----------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------| +| SecretKey | `string` | The secret key you obtained from the HCaptcha admin panel. This field must not be empty. | `""` | +| ResponseKeyFunc | `func(fiber.Ctx) (string, error)` | ResponseKeyFunc should return the token that captcha provides upon successful solving. By default, it gets the token from the body by parsing a JSON request and returns the `hcaptcha_token` field. | `hcaptcha.DefaultResponseKeyFunc` | +| SiteVerifyURL | `string` | This property specifies the API resource used for token authentication. | `https://api.hcaptcha.com/siteverify` | + +## Example + +```go +package main + +import ( + "github.com/gofiber/contrib/hcaptcha" + "github.com/gofiber/fiber/v3" + "log" +) + +const ( + TestSecretKey = "0x0000000000000000000000000000000000000000" + TestSiteKey = "20000000-ffff-ffff-ffff-000000000002" +) + +func main() { + app := fiber.New() + captcha := hcaptcha.New(hcaptcha.Config{ + // Must set the secret key + SecretKey: TestSecretKey, + }) + + app.Get("/api/", func(c fiber.Ctx) error { + return c.JSON(fiber.Map{ + "hcaptcha_site_key": TestSiteKey, + }) + }) + + app.Post("/api/robots-excluded", func(c fiber.Ctx) error { + return c.SendString("You are not a robot") + }, captcha) + + log.Fatal(app.Listen(":3000")) +} +``` diff --git a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/socketio/README.md b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/socketio/README.md index 976495c19d9..6e64c79cb34 100644 --- a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/socketio/README.md +++ b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/socketio/README.md @@ -24,7 +24,8 @@ go get -u github.com/gofiber/contrib/socketio ```go // Initialize new socketio in the callback this will // execute a callback that expects kws *Websocket Object -func New(callback func(kws *Websocket)) func(*fiber.Ctx) error +// and optional config websocket.Config +func New(callback func(kws *Websocket), config ...websocket.Config) func(*fiber.Ctx) error ``` ```go @@ -98,12 +99,12 @@ func main() { // Multiple event handling supported socketio.On(socketio.EventConnect, func(ep *socketio.EventPayload) { - fmt.Println(fmt.Sprintf("Connection event 1 - User: %s", ep.Kws.GetStringAttribute("user_id"))) + fmt.Printf("Connection event 1 - User: %s", ep.Kws.GetStringAttribute("user_id")) }) // Custom event handling supported socketio.On("CUSTOM_EVENT", func(ep *socketio.EventPayload) { - fmt.Println(fmt.Sprintf("Custom event - User: %s", ep.Kws.GetStringAttribute("user_id"))) + fmt.Printf("Custom event - User: %s", ep.Kws.GetStringAttribute("user_id")) // ---> // DO YOUR BUSINESS HERE @@ -114,7 +115,7 @@ func main() { // On message event socketio.On(socketio.EventMessage, func(ep *socketio.EventPayload) { - fmt.Println(fmt.Sprintf("Message event - User: %s - Message: %s", ep.Kws.GetStringAttribute("user_id"), string(ep.Data))) + fmt.Printf("Message event - User: %s - Message: %s", ep.Kws.GetStringAttribute("user_id"), string(ep.Data)) message := MessageObject{} @@ -148,7 +149,7 @@ func main() { socketio.On(socketio.EventDisconnect, func(ep *socketio.EventPayload) { // Remove the user from the local clients delete(clients, ep.Kws.GetStringAttribute("user_id")) - fmt.Println(fmt.Sprintf("Disconnection event - User: %s", ep.Kws.GetStringAttribute("user_id"))) + fmt.Printf("Disconnection event - User: %s", ep.Kws.GetStringAttribute("user_id")) }) // On close event @@ -156,12 +157,12 @@ func main() { socketio.On(socketio.EventClose, func(ep *socketio.EventPayload) { // Remove the user from the local clients delete(clients, ep.Kws.GetStringAttribute("user_id")) - fmt.Println(fmt.Sprintf("Close event - User: %s", ep.Kws.GetStringAttribute("user_id"))) + fmt.Printf("Close event - User: %s", ep.Kws.GetStringAttribute("user_id")) }) // On error event socketio.On(socketio.EventError, func(ep *socketio.EventPayload) { - fmt.Println(fmt.Sprintf("Error event - User: %s", ep.Kws.GetStringAttribute("user_id"))) + fmt.Printf("Error event - User: %s", ep.Kws.GetStringAttribute("user_id")) }) app.Get("/ws/:id", socketio.New(func(kws *socketio.Websocket) { diff --git a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/swagger/README.md b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/swagger/README.md index b928f4f555e..18d619f3153 100644 --- a/contrib_versioned_docs/version-fiberzerolog_v1.x.x/swagger/README.md +++ b/contrib_versioned_docs/version-fiberzerolog_v1.x.x/swagger/README.md @@ -11,7 +11,7 @@ title: Swagger ![Security](https://github.com/gofiber/contrib/workflows/Security/badge.svg) ![Linter](https://github.com/gofiber/contrib/workflows/Linter/badge.svg) -Swagger middleware for [Fiber](https://github.com/gofiber/fiber). The middleware handles Swagger UI. +Swagger middleware for [Fiber](https://github.com/gofiber/fiber). The middleware handles Swagger UI. **Note: Requires Go 1.18 and above** @@ -63,6 +63,19 @@ cfg := swagger.Config{ app.Use(swagger.New(cfg)) ``` +Use program data for Swagger content: +```go +cfg := swagger.Config{ + BasePath: "/", + FilePath: "./docs/swagger.json", + FileContent: mySwaggerByteSlice, + Path: "swagger", + Title: "Swagger API Docs", +} + +app.Use(swagger.New(cfg)) +``` + Using multiple instances of Swagger: ```go // Create Swagger middleware for v1 @@ -102,6 +115,12 @@ type Config struct { // Optional. Default: ./swagger.json FilePath string + // FileContent for the content of the swagger.json or swagger.yaml file. + // If provided, FilePath will not be read. + // + // Optional. Default: nil + FileContent []byte + // Path combines with BasePath for the full UI path // // Optional. Default: docs