3769 Commits

Author SHA1 Message Date
dependabot[bot]
755f133ac1
build(deps): bump github.com/google/uuid from 1.5.0 to 1.6.0 (#2810)
Bumps [github.com/google/uuid](https://github.com/google/uuid) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/google/uuid/releases)
- [Changelog](https://github.com/google/uuid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/uuid/compare/v1.5.0...v1.6.0)

---
updated-dependencies:
- dependency-name: github.com/google/uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-24 15:18:56 +03:00
Leo
eb0c55cd8b
📚: Fix a misspelled comment (#2809)
Fix a misspelled comment
2024-01-24 11:42:18 +01:00
nickajacks1
3c4509f054
chore: Fix remaining testifylint errors (#2806) 2024-01-22 08:34:15 +01:00
nickajacks1
827013d789
chore: Fix testifylint errors in middleware (#2805) 2024-01-21 08:32:23 +01:00
ACHMAD IRIANTO EKA PUTRA
9a56a1bf6d
v3: Add QueryParser for get query using generic (#2776)
* Add QueryParser method and tests

Introduced a new method, QueryParser, to parse query parameters from a given context into specified types: integer, boolean, float, and string. The method provides default values for empty or invalid keys. Corresponding tests for each type have also been added to validate the functionality.

* Refactor QueryParser and add string support

Refactored the existing QueryParser method in the code to simplify its structure. Instead of reflecting on types, it now uses explicit type checking. In addition to the existing support for integers, booleans, and floats, the QueryParser method now also supports string parsing. Corresponding tests for the updated method and new feature were added as well.

* Update example call in method comment

Updated the method call example in the comment for the Query function in the ctx.go file. Previously, it was incorrectly demonstrating a call to "QueryParser("wanna_cake", 1)", but this has been updated to correctly represent the method it is commenting, resulting in "Query("wanna_cake", 1)".

* Refactor Query function in ctx.go

The update introduces better type assertion handling in the Query function. A switch statement is now employed to determine the type of the value as opposed to the previous if clauses. In addition, a validation step has been added to ensure the context passed into the function is of the correct type.

* Refactor type handling in Query function

The Query function in ctx.go has been refactored for better and clearer type handling. The code now uses a 'QueryType' interface, replacing explicit string, bool, float, and int declarations. This change also improves the error message when a type assertion fails, making it more descriptive about the specific failure.

* Add type assertion check in ctx.go

Updated the code in ctx.go to add a type assertion check for all case statements. The function now checks if the returned value is of the expected type, and if not, it throws a panic with a description of the failed type assertion.

* Refactor Query function to support more data types

The Query function has been expanded to support a broader range of data types. This includes support for extracting query parameters as different types of integers (both signed and unsigned), strings, floats, and booleans from the request's URI. The function now includes comprehensive parsing capabilities that allow for improved handling of different data types.

* Refactor Query function documentation

The documentation for the Query function has been updated to emphasize its versatility in handling various data types. The changes also clarify how the function operates and demonstrates the usage and benefits of providing a defaultValue. The different variations of QueryBool, QueryFloat, and QueryInt were removed, as they are now encompassed by the enhanced Query function.

* Add benchmark tests for Query function

Benchmark tests have been added to evaluate the performance of the Query function for different data types. These tests will help in assessing the efficiency of the function when processing various queries. The addition of these benchmarks will aid in future optimizations and enhancements of the function.

* Update generic Query function signature

The signature of the generic Query function has been updated to accept different types of data as arguments. The change improves flexibility of the function by allowing it to handle different data types, effectively making it a versatile tool in processing various queries.

* Modify `ctx.Query()` calls in documentation

`ctx.Query()` calls in the ctx.md documentation file were updated to remove the `ctx.` prefix. This is consistent with the typical use cases and makes the code examples more clear and easy to understand.

* Refactored assertValueType function and improved query parameter documentation

Updated the assertValueType function to utilize the utils.UnsafeBytes method for byte conversion. Enhanced the documentation for query parameter types to offer clearer, more comprehensive explanations and examples, including QueryTypeInteger, QueryTypeFloat, and subcategories.

* Update Query method calls to use new fiber.Query syntax

In this commit, the conventional `c.Query()` calls across multiple middleware and document files are updated to use the new `fiber.Query` syntax. The changes align with the updated function signatures in Fiber library that provides type-specific querying. These enhancements contribute to the project's overall robustness and consistency.

* Add Query method to get query string parameters

* Replace 'utils.UnsafeBytes' with 'ctx.app.getBytes'

In the query method, the utils.UnsafeBytes function was replaced with the ctx.app.getBytes method. This change enhances the extraction of query string parameters by making it safer and more context-specific.

* Refactor parsing functions in query handlers

The parsing functions in query handlers have been refactored to simplify the process. Parsing code has been extracted into dedicated functions like 'parseIntWithDefault' and 'parseFloatWithDefault', and they now reside in a new utils file. This modularization improves readability and maintainability of the code. Additionally, documentation is updated to reflect the changes.

* Refactor parsing functions in ctx.go

The parsing functions have been restructured to enhance readability and reduce repetition in the ctx.go file. This was achieved by creating generalised parsing functions that handle defaults and ensure the correct value type is returned. As a result, various single-use parsing functions in the utils.go file have been removed.

* Refactor code to centralize parsing functions
2024-01-19 14:43:44 +01:00
dependabot[bot]
603fbde9b6
build(deps): bump actions/cache from 3 to 4 (#2803)
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-19 01:48:40 +03:00
Skillers3
c5cd468671
docs: fix typo in documentation (#2802)
Typo fix
2024-01-18 15:49:16 +03:00
nickajacks1
a776d2933e
ci: re-enable tparallel linter (#2801)
In some cases, loop variables had to be reassigned to a local variable
to avoid concurrent access. This will no longer be needed when fiber's
minimum go version is bumped to 1.22, where each loop iteration gets its
own variable.
2024-01-17 09:47:26 +01:00
nickajacks1
f2e9c1f21d
🚨 Test: Speed up addon/retry tests (#2800)
There was a test that used the default exponential backoff
configuration, causing the test to run for over 3 minutes. This test
does not increase coverage in a way that warrants the slowdown of CI,
and the default backoff time values are already verified by a separate
test.
2024-01-15 11:18:39 +01:00
nickajacks1
59410278f1
chore: change interface{} to any (#2796) 2024-01-14 23:04:54 +03:00
dependabot[bot]
38b8e741c1
build(deps): bump github/codeql-action from 2 to 3 (#2788)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-14 23:02:51 +03:00
dependabot[bot]
6bd046bbc2
build(deps): bump actions/setup-go from 4 to 5 (#2789)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-14 23:02:19 +03:00
Muhammed Efe Cetin
1588b6b602
Merge remote-tracking branch 'origin/master' 2024-01-13 18:26:07 +03:00
Diego Parisi
2143492223
📚 Doc: Undocumented function in session.md (#2795)
SetExpiry was not listed in the Session functions.
2024-01-12 10:31:27 +01:00
René Werner
96344abbd8 change golang pkg for docs 2024-01-08 16:42:07 +01:00
René Werner
9178bf753e configure workflows for main (v3-beta) branch 2024-01-08 16:39:59 +01:00
René Werner
b2c9ccdeef configure workflows for main (v3-beta) branch 2024-01-08 16:38:37 +01:00
René Werner
6eb48fea8b configure workflows for main (v3-beta) branch 2024-01-08 16:37:35 +01:00
nickajacks1
956b66d95f
📚 Doc: Update handler signature for v3 (#2794)
📚 Doc: fix handler signature for v3
2024-01-08 16:31:15 +01:00
René Werner
960b652587 configure workflows for main (v3-beta) branch 2024-01-06 17:49:14 +01:00
nickajacks1
408fa20a91
🔥 v3: update Ctx.Format to match Express's res.format (#2766)
* 🔥 v3: update Ctx.Format to match Express's res.format

While the existing Ctx.Format provides a concise convenience method for
basic content negotiation on simple structures, res.format allows
developers to set their own custom handlers for each content type.

The existing Ctx.Format is renamed to Ctx.AutoFormat.

* doc: add docs for Ctx.Format

* refactor: update based on code review feedback

- Rename Fmt to ResFmt
- Add comments in several places
- Return errors instead of panicking in Format
- Add 'Accept' to the Vary header in Format to match res.format

* chore: improve docs and tests for AutoFormat and Format
2024-01-04 09:50:36 +01:00
Jason McNeil
2954e3bbae
♻️ v3: fix!: ContextKey collisions (#2781)
* fix: ContextKey collisions

* fix(logger): lint error

* docs(csrf): fix potential range error in example
2024-01-04 09:44:45 +01:00
dependabot[bot]
fa30b4e9d0
build(deps): bump golang.org/x/sys from 0.14.0 to 0.15.0 (#2744)
Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.14.0 to 0.15.0.
- [Commits](https://github.com/golang/sys/compare/v0.14.0...v0.15.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-28 22:42:05 +03:00
nickajacks1
8d5248bee6
🚨 Test: race in session middleware tests (#2740)
A Session must not be accessed after Save() is called, but a unit test
calls Session.ID() after Session.Save(), sometimes causing the test to
fail when -race is enabled. The assertions that ID() was being used in
were redundant with the previous two assertions (checking that the
session name header is empty), so we can just remove the offending code.
2023-11-27 14:38:31 +01:00
RW
28be17f929
Revert "🐛 requestid.Config.ContextKey is interface{} (#2369)" (#2742)
This reverts commit d7b36cde
2023-11-27 14:35:49 +01:00
nickajacks1
6b9630b5f7
🚨 Test: improve benchmarks for getOffer (#2739) 2023-11-23 09:36:22 +01:00
dependabot[bot]
93c5f2830f
build(deps): bump github.com/valyala/fasthttp from 1.50.0 to 1.51.0 (#2721)
Bumps [github.com/valyala/fasthttp](https://github.com/valyala/fasthttp) from 1.50.0 to 1.51.0.
- [Release notes](https://github.com/valyala/fasthttp/releases)
- [Commits](https://github.com/valyala/fasthttp/compare/v1.50.0...v1.51.0)

---
updated-dependencies:
- dependency-name: github.com/valyala/fasthttp
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-22 20:12:15 +01:00
nickajacks1
eeced206ed
test: Fix failing CSRF tests (#2720)
 test: fix failing csrf test

A test validating that expired tokens fail was hitting a race condition
with garbage collection. Sometimes, an assertion that expects memory
storage GC to have triggered happens too quickly, causing the assertion
to fail. Give the GC a little bit more time to process before asserting.
2023-11-22 19:21:30 +01:00
nickajacks1
12e0e487ce
🚨 Test: fix race condition in parallel tests (#2734)
Tests that call SetParserDecoder were causing a race condition with
other tests that read from decoderPoolMap. Fix by making the offending
tests not run in parallel.
2023-11-22 18:38:49 +01:00
Jmper
2c5d883a69
[Bug]: utils.IsIPv4 and net.ParseIP have inconsistent results #2735 (#2736) 2023-11-21 10:48:37 +01:00
Jason McNeil
2374cad3cd
📄 docs: improve csrf docs (#2726)
* docs: improve csrf docs

- fix issues with `X-Csrf-Token` capitalization inconsistency.
- reduce redundancy and repetition.
- improve grammar.

* docs: update middleware description

* docs: within vs in

* docs: deleting tokens

* docs: MUST

* docs: add colon

* docs: all modern browsers

* docs: patterns

* docs: improve phrasing of pattern options
2023-11-16 12:34:31 +01:00
René Werner
3ab3d151c7 refresh docs for
🔥 Add support for application/problem+json #2704
2023-11-15 09:23:08 +01:00
RW
239e36e0f6
Update sync_docs.sh 2023-11-15 08:50:26 +01:00
RW
dceb0b4c45
Update app.go
prepare release v2.51.0
v2.51.0
2023-11-14 08:18:46 +01:00
Reid Hurlburt
9f082af045
🔥 Add support for application/problem+json (#2704)
🔥 Add support for custom JSON content headers
2023-11-13 15:18:05 +01:00
nickajacks1
1e55045a30
test(limiter): fix intermittent failures (#2716)
The limiter middleware unit tests are failing due to a race between the
storage garbage collector and the unit test itself. The sliding window
limiter tracks requests using memory storage. In several of the unit
tests, this storage expiry ends up being 4 seconds. The test waits for 4
seconds, then sends a request, expecting it to succeed. However, the
unit test occasionally wakes up before the storage GC kicks in. As an
effect of the very coarse timer (using seconds as units), the middleware
correctly rejects the request, causing the test to fail.

Update the sleep to 4.5 seconds. This will not slow down the execution
of the test suite, as these tests run in parallel with a separate 9
second long test.

I'm not 100% sure this solves the issue, and ideally we'd be able to
run tests without time.Sleep.
2023-11-10 11:33:10 +01:00
nickajacks1
5d888cee3d
️ perf(ctx.Range): reduce allocations (#2705)
* perf(ctx.Range): reduce allocations

strings.Split was causing extra allocations where using
strings.IndexByte can suffice. ALso switch from strconv.Atoi because it
causes an allocation when parsing a non-integer, which is common for
Ranges.

* chore: fix lint
2023-11-10 11:32:25 +01:00
database64128
b99712f13e
middleware/pprof: improve performance (#2709)
*  middleware/pprof: improve performance

Concatenate the custom and fixed prefixes beforehand, so the trimmed path can be switched on against constant strings.

goos: linux
goarch: amd64
pkg: github.com/gofiber/fiber/v2/middleware/pprof
cpu: 13th Gen Intel(R) Core(TM) i9-13900K
BenchmarkPprof/Slow-32         	 4912642	       246.3 ns/op	     480 B/op	      10 allocs/op
BenchmarkPprof/Fast-32         	411908472	         2.913 ns/op	       0 B/op	       0 allocs/op
PASS

* 🌂 middleware/pprof: disable nonamedreturns linter on cutPrefix
2023-11-09 08:05:54 +01:00
René Werner
862ea7dbf6 add v3 pr templates info 2023-11-08 13:23:46 +01:00
René Werner
efdd0093b3 add v3 issue/pr templates 2023-11-07 19:09:23 +01:00
René Werner
781f71a0d1 add v3 issue/pr templates 2023-11-07 19:04:00 +01:00
Muhammed Efe Cetin
f37238e494
v3: fix CSRF tests and linter warnings 2023-11-07 20:37:57 +03:00
Muhammed Efe Cetin
6ea4d81331
Merge branch 'master' into v3-beta 2023-11-07 20:22:31 +03:00
nickajacks1
cbcb1aec0a
feat: add support for parameters in content negotiation (#2678)
*  feat: add support for parameters in content negotiation

Attempts to approach the level of support offered by express,
but behavior may differ in unusual corner cases.
Some key behaviors from Express that are implemented:
 - If an offer does not have every parameter listed in the given Accept,
   it is rejected.
 - Parameters do not affect specificity.
 - In a given specificity, more parameters gives greater precedence
 - Parameters are unordered
 - Matching is case-insensitive
 - Surrounding quotes for parameter values are stripped
 - If an Accept type specifies a parameter more than once, the last
   value provided is taken.
 - Parameters after q are not processed.

https://www.rfc-editor.org/rfc/rfc9110#name-parameters

* doc: properly attribute reader.go for validHeaderFieldByte

* fix: remove underscores from fuzz test name

* test(forEachParameter): improve coverage

* doc: add comment clarifying RFC 9110 non-compliance for corner case
2023-11-07 08:25:23 +01:00
dependabot[bot]
426dd3aff9
build(deps): bump golang.org/x/sys from 0.13.0 to 0.14.0 (#2707)
Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.13.0 to 0.14.0.
- [Commits](https://github.com/golang/sys/compare/v0.13.0...v0.14.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-06 16:27:04 +03:00
Moritz
fe395b9850
📚 Doc: Add additional information as to why GetReqHeaders returns a map where the values are slices of strings (#2698)
* Update ctx.md

Added additional information to why GetReqHeaders returns a map where the values are slices of strings (instead of a single string as one might expect)

* Update ctx.md

added the same explanation to GetRespHeaders too
2023-11-01 21:42:57 +01:00
HardikBandhiya
0104e59e9f
fix: changed "Twitter" to "X (Twitter)" in README.md Contribute Section (#2696)
* Update README.md

in README.md contribute section the name of twitter was old i changed it to 𝕏

* Update README.md

updated domain as per suggested

* Update CONTRIBUTING.md

* Update README_az.md

* Update README_ckb.md

in this i changed domain only.

* Update README_de.md

* Update README_eg.md

in this i changed domain

* Update README_es.md

* Update README_fa.md

* Update README_fr.md

* Update README_he.md

* Update README_id.md

* Update README_it.md

* Update README_ja.md

* Update README_ko.md

* Update README_nl.md

* Update README_pl.md

* Update README_pt.md

* Update README_ru.md

* Update README_sa.md

* Update README_tr.md

* Update README_uk.md

* Update README_zh-CN.md

* Update README_zh-TW.md
2023-11-01 09:24:14 +01:00
RW
4099ef87bb
Update routing.md
fix invalid regex constraint
2023-11-01 08:22:10 +01:00
dependabot[bot]
7bbffab19f
build(deps): bump github.com/google/uuid from 1.3.1 to 1.4.0 (#2693)
Bumps [github.com/google/uuid](https://github.com/google/uuid) from 1.3.1 to 1.4.0.
- [Release notes](https://github.com/google/uuid/releases)
- [Changelog](https://github.com/google/uuid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/uuid/compare/v1.3.1...v1.4.0)

---
updated-dependencies:
- dependency-name: github.com/google/uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-29 20:36:01 +03:00
Jason McNeil
4bf3695125
📄 docs: enhance csrf.md (#2692)
* docs: enhance csrf.md

* docs: simplify language

* docs: update csrf.md

* docs: delete token/session reminders

* docs: and ! or
2023-10-27 13:45:30 +02:00