Skip to content

Commit faa31a4

Browse files
committed
feat: add support for Fiber v3 framework with request and response handling
1 parent 11d1d31 commit faa31a4

6 files changed

Lines changed: 260 additions & 33 deletions

File tree

go.mod

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
module github.com/go-simpl/simplapi
22

3-
go 1.24
3+
go 1.25.0
44

55
require (
66
github.com/getkin/kin-openapi v0.132.0
77
github.com/gin-gonic/gin v1.10.1
88
github.com/gofiber/fiber/v2 v2.52.9
9-
github.com/stretchr/testify v1.10.0
9+
github.com/gofiber/fiber/v3 v3.1.0
10+
github.com/stretchr/testify v1.11.1
1011
)
1112

1213
require (
13-
github.com/andybalholm/brotli v1.1.0 // indirect
14+
github.com/andybalholm/brotli v1.2.0 // indirect
1415
github.com/bytedance/sonic v1.11.6 // indirect
1516
github.com/bytedance/sonic/loader v0.1.1 // indirect
1617
github.com/cloudwego/base64x v0.1.4 // indirect
@@ -24,14 +25,16 @@ require (
2425
github.com/go-playground/universal-translator v0.18.1 // indirect
2526
github.com/go-playground/validator/v10 v10.20.0 // indirect
2627
github.com/goccy/go-json v0.10.2 // indirect
28+
github.com/gofiber/schema v1.7.0 // indirect
29+
github.com/gofiber/utils/v2 v2.0.2 // indirect
2730
github.com/google/uuid v1.6.0 // indirect
2831
github.com/josharian/intern v1.0.0 // indirect
2932
github.com/json-iterator/go v1.1.12 // indirect
30-
github.com/klauspost/compress v1.17.9 // indirect
33+
github.com/klauspost/compress v1.18.4 // indirect
3134
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
3235
github.com/leodido/go-urn v1.4.0 // indirect
3336
github.com/mailru/easyjson v0.7.7 // indirect
34-
github.com/mattn/go-colorable v0.1.13 // indirect
37+
github.com/mattn/go-colorable v0.1.14 // indirect
3538
github.com/mattn/go-isatty v0.0.20 // indirect
3639
github.com/mattn/go-runewidth v0.0.16 // indirect
3740
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
@@ -41,18 +44,19 @@ require (
4144
github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect
4245
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
4346
github.com/perimeterx/marshmallow v1.1.5 // indirect
47+
github.com/philhofer/fwd v1.2.0 // indirect
4448
github.com/pmezard/go-difflib v1.0.0 // indirect
4549
github.com/rivo/uniseg v0.2.0 // indirect
50+
github.com/tinylib/msgp v1.6.3 // indirect
4651
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
4752
github.com/ugorji/go/codec v1.2.12 // indirect
4853
github.com/valyala/bytebufferpool v1.0.0 // indirect
49-
github.com/valyala/fasthttp v1.51.0 // indirect
50-
github.com/valyala/tcplisten v1.0.0 // indirect
54+
github.com/valyala/fasthttp v1.69.0 // indirect
5155
golang.org/x/arch v0.8.0 // indirect
52-
golang.org/x/crypto v0.23.0 // indirect
53-
golang.org/x/net v0.25.0 // indirect
54-
golang.org/x/sys v0.28.0 // indirect
55-
golang.org/x/text v0.15.0 // indirect
56+
golang.org/x/crypto v0.48.0 // indirect
57+
golang.org/x/net v0.50.0 // indirect
58+
golang.org/x/sys v0.41.0 // indirect
59+
golang.org/x/text v0.34.0 // indirect
5660
google.golang.org/protobuf v1.34.1 // indirect
5761
gopkg.in/yaml.v3 v3.0.1 // indirect
5862
)

go.sum

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
2-
github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
1+
github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=
2+
github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
33
github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0=
44
github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=
55
github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=
@@ -11,6 +11,8 @@ github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQ
1111
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1212
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
1313
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
14+
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
15+
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
1416
github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
1517
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
1618
github.com/getkin/kin-openapi v0.132.0 h1:3ISeLMsQzcb5v26yeJrBcdTCEQTag36ZjaGk7MIRUwk=
@@ -37,6 +39,12 @@ github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
3739
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
3840
github.com/gofiber/fiber/v2 v2.52.9 h1:YjKl5DOiyP3j0mO61u3NTmK7or8GzzWzCFzkboyP5cw=
3941
github.com/gofiber/fiber/v2 v2.52.9/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw=
42+
github.com/gofiber/fiber/v3 v3.1.0 h1:1p4I820pIa+FGxfwWuQZ5rAyX0WlGZbGT6Hnuxt6hKY=
43+
github.com/gofiber/fiber/v3 v3.1.0/go.mod h1:n2nYQovvL9z3Too/FGOfgtERjW3GQcAUqgfoezGBZdU=
44+
github.com/gofiber/schema v1.7.0 h1:yNM+FNRZjyYEli9Ey0AXRBrAY9jTnb+kmGs3lJGPvKg=
45+
github.com/gofiber/schema v1.7.0/go.mod h1:A/X5Ffyru4p9eBdp99qu+nzviHzQiZ7odLT+TwxWhbk=
46+
github.com/gofiber/utils/v2 v2.0.2 h1:ShRRssz0F3AhTlAQcuEj54OEDtWF7+HJDwEi/aa6QLI=
47+
github.com/gofiber/utils/v2 v2.0.2/go.mod h1:+9Ub4NqQ+IaJoTliq5LfdmOJAA/Hzwf4pXOxOa3RrJ0=
4048
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
4149
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
4250
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -46,8 +54,8 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
4654
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
4755
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
4856
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
49-
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
50-
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
57+
github.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=
58+
github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=
5159
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
5260
github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
5361
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
@@ -60,9 +68,8 @@ github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
6068
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
6169
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
6270
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
63-
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
64-
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
65-
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
71+
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
72+
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
6673
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
6774
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
6875
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
@@ -82,12 +89,16 @@ github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6
8289
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
8390
github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=
8491
github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw=
92+
github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM=
93+
github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM=
8594
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
8695
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
8796
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
8897
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
8998
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
9099
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
100+
github.com/shamaton/msgpack/v3 v3.1.0 h1:jsk0vEAqVvvS9+fTZ5/EcQ9tz860c9pWxJ4Iwecz8gU=
101+
github.com/shamaton/msgpack/v3 v3.1.0/go.mod h1:DcQG8jrdrQCIxr3HlMYkiXdMhK+KfN2CitkyzsQV4uc=
91102
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
92103
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
93104
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
@@ -99,32 +110,35 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
99110
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
100111
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
101112
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
102-
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
103-
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
113+
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
114+
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
115+
github.com/tinylib/msgp v1.6.3 h1:bCSxiTz386UTgyT1i0MSCvdbWjVW+8sG3PjkGsZQt4s=
116+
github.com/tinylib/msgp v1.6.3/go.mod h1:RSp0LW9oSxFut3KzESt5Voq4GVWyS+PSulT77roAqEA=
104117
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
105118
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
106119
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
107120
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
108121
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
109122
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
110-
github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA=
111-
github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g=
112-
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
113-
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
123+
github.com/valyala/fasthttp v1.69.0 h1:fNLLESD2SooWeh2cidsuFtOcrEi4uB4m1mPrkJMZyVI=
124+
github.com/valyala/fasthttp v1.69.0/go.mod h1:4wA4PfAraPlAsJ5jMSqCE2ug5tqUPwKXxVj8oNECGcw=
125+
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
126+
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
127+
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
128+
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
114129
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
115130
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
116131
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
117-
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
118-
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
119-
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
120-
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
121-
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
132+
golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
133+
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
134+
golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60=
135+
golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM=
122136
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
123137
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
124-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
125-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
126-
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
127-
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
138+
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
139+
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
140+
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
141+
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
128142
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
129143
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
130144
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package fiberv3framework
2+
3+
import (
4+
"net/http"
5+
"net/http/httptest"
6+
"strings"
7+
8+
"github.com/go-simpl/simplapi/pkg/context"
9+
"github.com/go-simpl/simplapi/pkg/framework"
10+
11+
"github.com/gofiber/fiber/v3"
12+
"github.com/gofiber/fiber/v3/middleware/adaptor"
13+
)
14+
15+
type fiberV3Framework struct {
16+
app *fiber.App
17+
}
18+
19+
func New(app *fiber.App) framework.Framework {
20+
return &fiberV3Framework{
21+
app: app,
22+
}
23+
}
24+
25+
func (f *fiberV3Framework) GetNativeApp() interface{} {
26+
return f.app
27+
}
28+
29+
func (f *fiberV3Framework) GetOpenAPICompatiblePathPattern(path string) string {
30+
pathParts := strings.Split(path, "/")
31+
for i, part := range pathParts {
32+
if strings.HasPrefix(part, ":") {
33+
pathParts[i] = "{" + part[1:] + "}"
34+
}
35+
}
36+
return strings.Join(pathParts, "/")
37+
}
38+
39+
func (f *fiberV3Framework) Register(path string, method string, handler framework.FrameworkHandler) {
40+
switch method {
41+
case http.MethodGet:
42+
f.GET(path, handler)
43+
case http.MethodPost:
44+
f.POST(path, handler)
45+
case http.MethodPut:
46+
f.PUT(path, handler)
47+
case http.MethodPatch:
48+
f.PATCH(path, handler)
49+
case http.MethodDelete:
50+
f.DELETE(path, handler)
51+
}
52+
}
53+
54+
func (f *fiberV3Framework) GET(path string, handler framework.FrameworkHandler) {
55+
f.app.Get(path, func(c fiber.Ctx) error {
56+
return handler(NewRequest(c), NewResponse(c), context.New())
57+
})
58+
}
59+
60+
func (f *fiberV3Framework) POST(path string, handler framework.FrameworkHandler) {
61+
f.app.Post(path, func(c fiber.Ctx) error {
62+
return handler(NewRequest(c), NewResponse(c), context.New())
63+
})
64+
}
65+
66+
func (f *fiberV3Framework) PUT(path string, handler framework.FrameworkHandler) {
67+
f.app.Put(path, func(c fiber.Ctx) error {
68+
return handler(NewRequest(c), NewResponse(c), context.New())
69+
})
70+
}
71+
72+
func (f *fiberV3Framework) PATCH(path string, handler framework.FrameworkHandler) {
73+
f.app.Patch(path, func(c fiber.Ctx) error {
74+
return handler(NewRequest(c), NewResponse(c), context.New())
75+
})
76+
}
77+
78+
func (f *fiberV3Framework) DELETE(path string, handler framework.FrameworkHandler) {
79+
f.app.Delete(path, func(c fiber.Ctx) error {
80+
return handler(NewRequest(c), NewResponse(c), context.New())
81+
})
82+
}
83+
84+
func (f *fiberV3Framework) ListenAndServe(addr string) error {
85+
return f.app.Listen(addr)
86+
}
87+
88+
func (f *fiberV3Framework) Shutdown() error {
89+
return f.app.Shutdown()
90+
}
91+
92+
func (f *fiberV3Framework) TestRequest(req *http.Request) (*http.Response, error) {
93+
resp := httptest.NewRecorder()
94+
adaptor.FiberApp(f.app).ServeHTTP(resp, req)
95+
return resp.Result(), nil
96+
}
97+
98+
func init() {
99+
framework.RegisterFramework("fiberv3", func() framework.Framework {
100+
return New(fiber.New())
101+
})
102+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package fiberv3framework
2+
3+
import (
4+
"mime/multipart"
5+
6+
"github.com/go-simpl/simplapi/pkg/framework"
7+
8+
"github.com/gofiber/fiber/v3"
9+
)
10+
11+
type fiberV3Request struct {
12+
c fiber.Ctx
13+
}
14+
15+
func NewRequest(c fiber.Ctx) framework.FrameworkRequest {
16+
return &fiberV3Request{
17+
c: c,
18+
}
19+
}
20+
21+
func (r *fiberV3Request) ParseJSONBody(target interface{}) error {
22+
return r.c.Bind().Body(target)
23+
}
24+
25+
func (r *fiberV3Request) GetHeader(key string) string {
26+
return r.c.Get(key)
27+
}
28+
29+
func (r *fiberV3Request) GetPathParam(key string) string {
30+
return r.c.Params(key)
31+
}
32+
33+
func (r *fiberV3Request) GetQueryParam(key string) string {
34+
return r.c.Query(key)
35+
}
36+
37+
func (r *fiberV3Request) GetFormValue(key string) string {
38+
return r.c.FormValue(key)
39+
}
40+
41+
func (r *fiberV3Request) GetCookieValue(key string) string {
42+
return r.c.Cookies(key)
43+
}
44+
45+
func (r *fiberV3Request) GetFile(key string) (*multipart.FileHeader, error) {
46+
return r.c.FormFile(key)
47+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package fiberv3framework
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/go-simpl/simplapi/pkg/framework"
7+
8+
"github.com/gofiber/fiber/v3"
9+
)
10+
11+
type fiberV3Response struct {
12+
c fiber.Ctx
13+
}
14+
15+
func NewResponse(c fiber.Ctx) framework.FrameworkResponse {
16+
return &fiberV3Response{
17+
c: c,
18+
}
19+
}
20+
21+
func (r *fiberV3Response) SetStatusCode(statusCode int) {
22+
r.c.Status(statusCode)
23+
}
24+
25+
func (r *fiberV3Response) SetHeader(key string, value string) {
26+
r.c.Response().Header.Set(key, value)
27+
}
28+
29+
func (r *fiberV3Response) SetCookie(cookie http.Cookie) {
30+
sameSite := ""
31+
switch cookie.SameSite {
32+
case http.SameSiteLaxMode:
33+
sameSite = "Lax"
34+
case http.SameSiteStrictMode:
35+
sameSite = "Strict"
36+
case http.SameSiteNoneMode:
37+
sameSite = "None"
38+
}
39+
r.c.Cookie(&fiber.Cookie{
40+
Name: cookie.Name,
41+
Value: cookie.Value,
42+
Path: cookie.Path,
43+
Domain: cookie.Domain,
44+
MaxAge: cookie.MaxAge,
45+
Expires: cookie.Expires,
46+
Secure: cookie.Secure,
47+
HTTPOnly: cookie.HttpOnly,
48+
SameSite: sameSite,
49+
})
50+
}
51+
52+
func (r *fiberV3Response) SendJSON(data interface{}) error {
53+
return r.c.JSON(data)
54+
}
55+
56+
func (r *fiberV3Response) SendString(data string) error {
57+
return r.c.SendString(data)
58+
}

0 commit comments

Comments
 (0)