Releases: zio/zio-http
Releases · zio/zio-http
v1.0.0.0-RC24
Highlights
-
Websocket Client Support
val url = "ws://localhost:8090/subscriptions" val app = Socket .collect[WebSocketFrame] { case WebSocketFrame.Text("BAZ") => ZStream.succeed(WebSocketFrame.close(1000)) case frame => ZStream.succeed(frame) } .toSocketApp .connect(url) // creates a socket connection on the provided URL
💥 Breaking Changes
-
Drop
toZIO
andwrapZIO
APIsprivate val app = Http.collectZIO[Request] { case Method.GET -> !! / "greet" / name => UIO(Response.text(s"Greetings ${name}!")) }
-
Rename
asString
toencode
inScheme
sealed trait Scheme { self => def encode: String = Scheme.asString(self) }
-
Rename
getHeaders
toheaders
inClientRequest
final case class ClientRequest( method: Method, url: URL, headers: Headers = Headers.empty, data: HttpData = HttpData.empty, private val channelContext: ChannelHandlerContext = null, )
-
Remove
get
prefix from Public APIsPrevious Current getBodyAsByteBuf
bodyAsByteBuf
getBodyAsString
bodyAsString
getBody
body
getHeaders
headers
getStatus
status
getStatus
status
-
Rename
asString
toencode
inURL
def encode: String = ...
-
silent
is removed fromHttp
andHttpApp
Changes
🚀 Features
- Feature: WebSocket Client Support @tusharmath (#933)
- Feature: Url add
isAbsolute
andisRelative
operators @tusharmath (#946) - Feature: Add
Http.apply
@tusharmath (#949) - Feature: Add builder pattern for URL @beem812 (#930)
- Feature: Add
toHttp
to Response @tusharmath (#903) - Feature: Add
toHttp
to Socket.scala @tusharmath (#902) - Feature: Add
Socket.empty
@tusharmath (#901) - Feature: Add
echo
operator toSocket
@tusharmath (#900) - Feature: Add
collectManaged
to Http @beem812 (#909) - Feature: Add
Version
@tusharmath (#965)
🐛 Bug Fixes
- Fix: Add host and port hint in client ssl context @amitksingh1490 (#952)
- Fix: Server KeepAlive true by default and enable client to set Http version on requests @sumawa (#792)
- Fix: EncodeClientParams @ShrutiVerma97 (#868)
- Fix: Add host in client from absolute URL @kaushik143 (#847)
🧰 Maintenance
- Refactor: Remove sealed modifier from Middleware trait @tusharmath (#984)
- Refactor: Remove declarative API from Middlewares @tusharmath (#957)
- Refactor: Drop
toZIO
andwrapZIO
APIs @tusharmath (#950) - Refactor: HttpRunnableSpec clean up @tusharmath (#857)
- Refactor: Rename
getHeaders
toheaders
inClientRequest
@tusharmath (#928) - Refactor: Use declarative encoding for http.middleware @brendo-m (#869)
- Refactor: Rename
asString
toencode
inURI
@tusharmath (#898) - Refactor: Rename
asString
toencode
inPath
@tusharmath (#927) - Refactor: Rename
asString
toencode
inScheme
@tusharmath (#905) - Remove
get
prefix from Public APIs @tusharmath (#958) - Refactor: Drop
CanBeSilent
type-constraint from Http @tusharmath (#964) - Website: Cookie @ShrutiVerma97 (#974)
- Website: Readme @ShrutiVerma97 (#970)
- Website: Request @ShrutiVerma97 (#926)
- Website: Added <> operator in getting started @ShrutiVerma97 (#910)
- Website: Http @dinojohn (#888)
- Website: Server @sumawa (#885)
- Website: Getting started @ShrutiVerma97 (#887)
- Website:
Headers
documentation @gciuloaica (#817) - Performance: Improve performance server performance when closing connections @tusharmath (#882)
- Test: Added Integration tests for
HExit.Success
@zsfVishnu-d11 (#852) - Update scalafmt-core to 3.4.2 @amitksingh1490 (#961)
- Update scala3-library to 3.1.1 @amitksingh1490 (#873)
- Update netty-all to 4.1.74.Final @scala-steward (#982)
- Update sbt-updates to 0.6.2 @scala-steward (#966)
- Update netty-incubator-transport-native-io_uring to 0.0.12.Final @scala-steward (#908)
- Update sbt to 1.6.2 @scala-steward (#931)
New Contributors
Full Changelog: v1.0.0.0-RC23...v1.0.0.0-RC24
v1.0.0.0-RC23
Highlights
- Support middlewares on Http
val middlewares: HttpMiddleware[Console with Clock, IOException] =
// print debug info about request and response
Middleware.debug ++
// close connection if request takes more than 3 seconds
Middleware.timeout(3 seconds) ++
// add static header
Middleware.addHeader("X-Environment", "Dev")
💥 Breaking Changes
- Rename
ClientParams
toClientRequest
final case class ClientRequest(
method: Method,
url: URL,
getHeaders: Headers = Headers.empty,
data: HttpData = HttpData.empty,
private val channelContext: ChannelHandlerContext = null,
) extends HeaderExtension[ClientRequest]
- Constructor names updated as per ZIO 2
def fromZIO[R, E, A](z: ZIO[R, E, A]): HExit[R, E, A] = Effect(z.mapError(Option(_)))
def toZIO: ZIO[R, Option[E], A] = self match {
case HExit.Success(a) => ZIO.succeed(a)
case HExit.Failure(e) => ZIO.fail(Option(e))
case HExit.Empty => ZIO.fail(None)
case HExit.Effect(zio) => zio
}
Changes
🚀 Features
- Feature: Signed Cookie by @ShrutiVerma97 (#751)
- Feature: API to modify headers by @ShrutiVerma97 (#824)
- Feature: Add builder methods for
Server
by @jgoday (#768) - Feature: Add host in client from absolute URL @kaushik143 (#847)
🐛 Bug Fixes
- Fix: EncodeClientParams @ShrutiVerma97 (#868)
- Fix: HasHeader bug by @gciuloaica (#835)
- Fix: Echo streaming by @amitksingh1490 (#828)
🧰 Maintenance
- Performance: Improve benchmarking code by @tusharmath (#731)
- Test: Added Integration tests for
HExit.Success
@zsfVishnu-d11 (#852) - Refactor: HttpRunnableSpec clean up @tusharmath (#857)
- Refactor: Support middlewares on Http by @tusharmath (#773)
- Refactor: Rename
ClientParams
toClientRequest
@tusharmath (#856) - Refactor: update constructor names as per ZIO 2 by @tusharmath (#839)
- Refactor: use declarative encoding for http.middleware @brendo-m (#869)
- Refactor: Html template for internal server error string by @girdharshubham (#851)
- Docs: Fix Documentation @tusharmath (#897)
- Docs:
Headers
documentation @gciuloaica (#817) - Docs: Update Basic Examples by @ShrutiVerma97 (#814)
- Docs: Update advanced examples by @ShrutiVerma97 (#816)
- Docs: Move docs to v1.x directory @amitksingh1490 (#861)
- Update scalafmt-core to 3.3.3 @amitksingh1490 (#884)
- Update sbt-bloop to 1.4.12 by @amitksingh1490 (#810)
- Update scala3-library to 3.1.1 @amitksingh1490 (#873)
- Update sbt-scalafix to 0.9.34 by @amitksingh1490 (#805)
- Update scala-library to 2.13.8 by @amitksingh1490 (#801)
- Update netty-all to 4.1.73.Final by @amitksingh1490 (#811)
New Contributors
- @zsfVishnu-d11 made their first contribution (#852)
Full Changelog: v1.0.0.0-RC22...v1.0.0.0-RC23
v2.0.0-RC2 - ZIO 2 Support
Changes
🚀 Features
- Refactor: Support middlewares on Http @tusharmath (#773)
- Feature: Add builder methods for
Server
@jgoday (#768)
Improvements
- Refactor: update constructor names as per ZIO 2 @tusharmath (#839)
- Performance: Improve benchmarking code @tusharmath (#731)
🐛 Bug Fixes
- Fix: HasHeader bug @gciuloaica (#835)
- Fix: Echo streaming @amitksingh1490 (#828)
🧰 Maintenance
- Maintenance: html template for internal server error string @girdharshubham (#851)
- Update scala-library to 2.13.8 @amitksingh1490 (#801)
- Update sbt-bloop to 1.4.12 @amitksingh1490 (#810)
- Maintenance: workflow scala version @girdharshubham (#833)
- Maintenance: semanticdb revision usage @girdharshubham (#832)
- Enable snapshot versioning for ZIO-2/series by @amitksingh1490 in #844
- ZIO 2: Latest changes from main by @jdegoes in #858
Full Changelog: v2.0.0-RC1...v2.0.0-RC2
v2.0.0-RC1 - ZIO 2 Support
This release supports ZIO 2.0.0-RC1.
Note: For some time, releases targeting ZIO 1 will be using the version 1.0.0.0-RCx, whereas releases targeting ZIO 2 will be using the version 2.0.0-RCx
Highlights
💥 Breaking Changes
- Follow ZIO 2.0 naming conventions Example:
CollectM
=>CollectZIO
private val app = Http.collectZIO[Request] {
case Method.GET -> !! / "random" => random.nextString(10).map(Response.text(_))
case Method.GET -> !! / "utc" => clock.currentDateTime.map(s => Response.text(s.toString))
}
- Removed Type Params from Response
- Removed Type Params from SocketApp
- Removed Type Params from HttpData
- Renamed
socket
tofromSocket
in Response - Removed @@ composition from cookie
private val app = Http.collect[Request] { case Method.GET -> !! / "cookie" => Response.ok.addCookie(cookie.withPath(!! / "cookie").withHttpOnly) }
- Builder pattern for SocketApp
private val fooBar = Socket.collect[WebSocketFrame] { case WebSocketFrame.Text("FOO") => ZStream.succeed(WebSocketFrame.text("BAR")) } private val socketApp = { SocketApp(fooBar) // Called after each message being received on the channel // Called after the request is successfully upgraded to websocket .onOpen(open) // Called after the connection is closed .onClose(_ => console.putStrLn("Closed!").ignore) }
✨ New APIs
- Added
wrapZIO
operator on Responseprivate val app = Http.collectZIO[Request] { case Method.GET -> !! / "greet" / name => Response.text(s"Greetings ${name}!").wrapZIO }
- Added
toSocketApp
andtoResponse
on Socketprivate val app = Http.collectZIO[Request] { case Method.GET -> !! / "subscriptions" => socketApp.toResponse }
- Added
collectHttp
on Httpval app = Http.collectHttp[Request] { // Read the file as ZStream // Uses the blocking version of ZStream.fromFile case Method.GET -> !! / "blocking" => Http.fromStream(ZStream.fromFile(Paths.get("README.md"))) }
- Added
provide
on SocketApp
Changes
🚀 Features
- ZIO 2 support by @jdegoes in #809
- Feature: Added
updateHeader
toPatch
@ShrutiVerma97 (#779) - Feature: Return
Start
on server start @girdharshubham (#682) - Feature: CSRF Middleware @smehta91 (#761)
- Feature: Add
provide
operator on SocketApp @tusharmath (#763) - Feature: add middleware for CSRF handling @smehta91 (#542)
- Feature: Serve static files Asynchronously @ashprakasan (#706)
- Feature: add
setHeaders
toHeaderModifiers.scala
@tusharmath (#745)
Improvements
- Remove @@ feature for cookies @ShrutiVerma97 (#760)
🐛 Bug Fixes
- Fix: getSetCookieDecoded Method @ShrutiVerma97 (#777)
- Fix: Endpoint fix in
to
operator @sumawa (#749) - Response Json headers @amitksingh1490 (#750)
🧰 Maintenance
- Refactor: Use builder pattern for SocketApp @tusharmath (#762)
- Refactor: follow ZIO 2.0 naming conventions @tusharmath (#739)
- Refactor: Remove type params from HttpData @tusharmath (#766)
- Refactor: Add Response Handler @gciuloaica (#727)
- Update sbt-scala3-migrate to 0.5.0 @amitksingh1490 (#785)
- Refactor: Remove type params from Response @tusharmath (#772)
- Refactor: Remove error type from SocketApp @tusharmath (#769)
- Maintenance: remove twirl settings and examples @girdharshubham (#774)
- Scala doc generation CI step @girdharshubham (#771)
- Refactor: Remove type params from HttpData @tusharmath (#766)
- Refactor: follow ZIO 2.0 naming conventions @tusharmath (#739)
- Update scalafmt-core to 3.3.1 @amitksingh1490 (#744)
- Doc : update Readme.md with steps to start example server @ashprakasan (#748)
- Performance: Cookie decoder improvements @jgoday (#576)
- Update jwt-core to 9.0.3 @amitksingh1490 (#743)
Thanks to @adamfraser, @kitlangton and @jdegoes for the work on ZIO 2 support!
New Contributors
Full Changelog: v1.0.0.0-RC21...v2.0.0-RC1
v1.0.0.0-RC22
Highlights
💥 Breaking Changes
- Follow ZIO 2.0 naming conventions Example:
CollectM
=>CollectZIO
private val app = Http.collectZIO[Request] {
case Method.GET -> !! / "random" => random.nextString(10).map(Response.text(_))
case Method.GET -> !! / "utc" => clock.currentDateTime.map(s => Response.text(s.toString))
}
- Removed Type Params from Response
- Removed Type Params from SocketApp
- Removed Type Params from HttpData
- Renamed
socket
tofromSocket
in Response - Removed @@ composition from cookie
private val app = Http.collect[Request] { case Method.GET -> !! / "cookie" => Response.ok.addCookie(cookie.withPath(!! / "cookie").withHttpOnly) }
- Builder pattern for SocketApp
private val fooBar = Socket.collect[WebSocketFrame] { case WebSocketFrame.Text("FOO") => ZStream.succeed(WebSocketFrame.text("BAR")) } private val socketApp = { SocketApp(fooBar) // Called after each message being received on the channel // Called after the request is successfully upgraded to websocket .onOpen(open) // Called after the connection is closed .onClose(_ => console.putStrLn("Closed!").ignore) }
✨ New APIs
- Added
wrapZIO
operator on Responseprivate val app = Http.collectZIO[Request] { case Method.GET -> !! / "greet" / name => Response.text(s"Greetings ${name}!").wrapZIO }
- Added
toSocketApp
andtoResponse
on Socketprivate val app = Http.collectZIO[Request] { case Method.GET -> !! / "subscriptions" => socketApp.toResponse }
- Added
collectHttp
on Httpval app = Http.collectHttp[Request] { // Read the file as ZStream // Uses the blocking version of ZStream.fromFile case Method.GET -> !! / "blocking" => Http.fromStream(ZStream.fromFile(Paths.get("README.md"))) }
- Added
provide
on SocketAppprivate val echo = Socket.collect[WebSocketFrame] { case WebSocketFrame.Text(text) => ZStream.repeat(WebSocketFrame.text(s"Received: $text")).schedule(Schedule.spaced(1 second)).take(3) } val env = Has.apply(Clock.Service.live) private val socketApp: SocketApp[Any] = SocketApp(echo).provide(env)
Changes
🚀 Features
- Feature: Added
updateHeader
toPatch
@ShrutiVerma97 (#779) - Feature: Return
Start
on server start @girdharshubham (#682) - Feature: CSRF Middleware @smehta91 (#761)
- Feature: Add
provide
operator on SocketApp @tusharmath (#763) - Feature: add middleware for CSRF handling @smehta91 (#542)
- Feature: Serve static files Asynchronously @ashprakasan (#706)
- Feature: add
setHeaders
toHeaderModifiers.scala
@tusharmath (#745)
Improvements
- Remove @@ feature for cookies @ShrutiVerma97 (#760)
🐛 Bug Fixes
- Fix: getSetCookieDecoded Method @ShrutiVerma97 (#777)
- Fix: Endpoint fix in
to
operator @sumawa (#749) - Response Json headers @amitksingh1490 (#750)
🧰 Maintenance
- Refactor: Use builder pattern for SocketApp @tusharmath (#762)
- Refactor: follow ZIO 2.0 naming conventions @tusharmath (#739)
- Refactor: Remove type params from HttpData @tusharmath (#766)
- Refactor: Add Response Handler @gciuloaica (#727)
- Update sbt-scala3-migrate to 0.5.0 @amitksingh1490 (#785)
- Refactor: Remove type params from Response @tusharmath (#772)
- Refactor: Remove error type from SocketApp @tusharmath (#769)
- Maintenance: remove twirl settings and examples @girdharshubham (#774)
- Scala doc generation CI step @girdharshubham (#771)
- Refactor: Remove type params from HttpData @tusharmath (#766)
- Refactor: follow ZIO 2.0 naming conventions @tusharmath (#739)
- Update scalafmt-core to 3.3.1 @amitksingh1490 (#744)
- Doc : update Readme.md with steps to start example server @ashprakasan (#748)
- Performance: Cookie decoder improvements @jgoday (#576)
- Update jwt-core to 9.0.3 @amitksingh1490 (#743)
v1.0.0.0-RC21
Changes
✨ Features
- Support for Html Template @tusharmath (#692)
- Headers composition @tusharmath (#667)
HttpApp
extendsHeaderModifiers
@tusharmath (#711)freeze
operator added toResponse
@tusharmath (#711)
🚀 Improvements
- Performance: add FlushConsolidationHandler @amitksingh1490 (#535)
- Use FullHttpResponse when possible @tusharmath (#689)
🐛 Bug Fixes
- Failing doc generation @girdharshubham (#728)
- Escaping self closing tags @girdharshubham (#721)
- Content-Length issues @tusharmath (#711)
- Encoding problem when using HttpData.fromText and multi byte characters @tusharmath (#641)
🧰 Maintenance
- Rename HttpData.fromText to HttpData.fromString @rajcspsg (#704)
- Ignore errors on Performance Server @gciuloaica (#722)
- Remove Endpoint from Client.request @brendo-m (#714)
build.sbt
clean up @girdharshubham (#661)- Ignore ClientHttpsSpec @dinojohn (#716)
- Ignore flaky tests @dinojohn (#698)
- Client Response Handler Refactor @gciuloaica (#636)
- Improve benchmark comment @amitksingh1490 (#681)
- Move TechEmpowerBenchmark Server to this repo @amitksingh1490 (#670)
- Refactor: add HeaderNames and HeaderValues @tusharmath (#730)
📓 Documentation and Examples
HExit
@ashprakasan (#707)Headers
@tusharmath (#684)
⬆️ Version Bumps
- Update sbt to 1.6.1 @amitksingh1490 (#723)
- Update scalafmt-core to 3.3.0 @amitksingh1490 (#710)
- Update sbt-scalafmt to 2.4.6 @amitksingh1490 (#690)
- Update scoverage to 1.9.2 @girdharshubham (#699)
- Update sbt-updates to 0.6.1 @amitksingh1490 (#678)
v1.0.0.0-RC19
Changes
✨ Features
- Add method for creating text/html response @jczuchnowski (#543)
- Add
provide
operator onSocket
@girdharshubham (#523)
🚀 Improvements
- Remove stack safety from Http.execute @tusharmath (#618)
🐛 Bug Fixes
- Websocket upgrade when used with Http.collectM @amitksingh1490 (#649)
- UnsupportedOperationException when calling request.getBody on no… @sumawa (#651)
- Handle SSL failures @dinojohn (#654)
- Client memory leak @gciuloaica (#630)
- CollectM failing scala 3 jdk 11 @amitksingh1490 (#608)
🧰 Maintenance
- Fix sbt warning for shell syntax deprecation @girdharshubham (#662)
- Improve server spec @amitksingh1490 (#628)
- Update release drafter @tusharmath (#627)
📓 Documentation and Examples
- Documentation fix for
defaultWith
@yuk1ty (#632) - Fix example links in readme @sushengloong (#663)
⬆️ Version Bumps
- Update netty-all to 4.1.72.Final @amitksingh1490 (#631)
- Update zio, zio-streams, zio-test, ... to 1.0.13 @amitksingh1490 (#637)
- Update netty-incubator-transport-native-io_uring to 0.0.11.Final @amitksingh1490 (#638)
- Update sbt to 1.5.8 @amitksingh1490 (#671)
- Update automerge-action to 0.14.3 @amitksingh1490 (#664)
- Update scalafix to 0.9.33 @girdharshubham (#611)
- Update sbt-github-actions to 0.14.2 @amitksingh1490 (#601)
v1.0.0.0-RC18
Changes
Highlights
This release packs server-side cookie support, middleware support and endpoints to make your apis typesafe.
Server Side Cookie Support
private val cookie = Cookie("org", "d11") @@ maxAge(5 seconds)
val res = Response.ok.addCookie(cookie)
private val app = Http.collect[Request] {
case Method.GET -> !! / "cookie" =>
Response.ok.addCookie(cookie @@ path(!! / "cookie") @@ httpOnly)
case Method.GET -> !! / "secure-cookie" =>
Response.ok.addCookie(cookie @@ secure @@ path(!! / "secure-cookie"))
case Method.GET -> !! / "cookie" / "remove" =>
res.addCookie(cookie.clear)
}
Middleware Support
val app: HttpApp[Clock, Nothing] = Http.collectM[Request] {
// this will return result instantly
case Method.GET -> !! / "text" => ZIO.succeed(Response.text("Hello World!"))
// this will return result after 5 seconds, so with 3 seconds timeout it will fail
case Method.GET -> !! / "long-running" => ZIO.succeed(Response.text("Hello World!")).delay(5 seconds)
}
val serverTime: Middleware[Clock, Nothing] = patchM((_, _) =>
for {
currentMilliseconds <- currentTime(TimeUnit.MILLISECONDS)
withHeader = Patch.addHeaders(List(Header("X-Time", currentMilliseconds.toString)))
} yield withHeader,
)
val middlewares: Middleware[Console with Clock, IOException] =
// print debug info about request and response
debug ++
// close connection if request takes more than 3 seconds
timeout(3 seconds) ++
// add static header
addHeader("X-Environment", "Dev") ++
// add dynamic header
serverTime
Server.start(8090, (app @@ middlewares).silent).exitCode
Typesafe Endpoint Support
def app = GET / "a" / *[Int] / "b" / *[Boolean] to { a =>
Response.text(a.params.toString)
}
🚀 Features
finalFragment
flag for WebSocketFrame @morozov11 (#393)ifThenElse
method in HttpMiddleware @dinojohn (#485)fromFunctionM
in HttpApp @dinojohn (#486)- Cookie Support @ShrutiVerma97 (#277)
- Http Middleware @tusharmath (#403)
- Add IOUring support @madper (#382)
- Typesafe Endpoints @kaushik143 (#367)
- Authentication middleware @dinojohn (#506)
- URL fragment @soujiro32167 (#397)
- Http 100 continue @ShrutiVerma97 (#489)
- Websocket Enhancements @tusharmath (#433)
- Added APIs from main @ShrutiVerma97 (#406)
- Decode content @dinojohn (#381)
- Make path extraction right associative @tusharmath (#337)
- Charset handling in request @ShrutiVerma97 (#287)
- Add start overloads @smehta91 (#329)
- Added helper for text/html and text/yaml @tdrozdowski (#327)
- Add basic request testing util @whiskeylips (#308)
- Add helpers for redirect methods. @whiskeylips (#305)
- Http Enhancements @tusharmath (#301)
- Add optional remoteAddress to Request @jakubjanecek (#264)
- SSL: Server & Client @dinojohn (#256)
- Use implicit class for HttpApp syntax @frekw (#266)
- Add request meta Info in ContentDecoder @amitksingh1490 (#505)
- Add tap* combinators @frekw (#273)
- Merge HttpEndPoint and HttpApp @amitksingh1490 (#363)
- Added provideLayer methods @ShrutiVerma97 (#364)
- Added methods from Http in HttpApp @ShrutiVerma97 (#371)
- Add endpoint method @kaushik143 (#396)
Improvements
- Use Option instead of Either in Cookies @jgoday (#541)
- Add toApp, toResponse methods to status @jgoday (#577)
- Dependencies moved to Dependencies.scala @girdharshubham (#388)
- Fixed https client tests @ShrutiVerma97 (#278)
- Constructor for FromStream @dinojohn (#297)
- Wrap HttpApp around Http @dinojohn (#254)
- And type param to ContentDecoder for input type @tusharmath (#375)
- Remove AliasModule @dinojohn (#316)
- Sticky Threads @tusharmath (#303)
- URL builder performance @tusharmath (#302)
- Clean up @tusharmath (#591)
- Decoder Cleanup @tusharmath (#536)
- Making HttpApp a type-alias to Http @tusharmath (#531)\
- Restructure Handler @tusharmath (#530)
- Add operators to HttpApp to modify Requests and Response @tusharmath (#516)
- Rewrite CORS to use new middleware API @rpiotrow (#452)
- Replaced comma with plus @ShrutiVerma97 (#368)
- Move compile in HttpApp to separate module @amitksingh1490 (#374)
- Added comment for converting CompositeByteBuf to array @ShrutiVerma97 (#395)
🐛 Bug Fixes
- HttpApp write response only once @tusharmath (#387)
- Route matching with encoded paths @ShrutiVerma97 (#323)
- Added timeout and flaky in test @ShrutiVerma97 (#314)
- Allow multiple headers same type @amitksingh1490 (#285)
- Basic auth header fixed @ShrutiVerma97 (#271)
- Query parameters being ignored in client requests @Adriani-Furtado (#268)
- AuthMiddleware @dinojohn (#597)
- Build @amitksingh1490 (#372)
- HttpApp write response only once @tusharmath (#387)
- Link to WebSocket Server @sheldonjms (#335)
- Scaladoc Doc generation failing @amitksingh1490 (#596)
- Backpressure Example @ShrutiVerma97 (#548)
- Do not ignore query params when url path is empty @kaushik143 (#529)
- MultipleDecode method in cookie @ShrutiVerma97 (#459)
- Fix for self signed certificate in SSLSpec @dinojohn (#432)
🧰 Maintenance
- Release Fixes @tusharmath (#522)
- Update #470 @tusharmath (#482)
- Scoverage with Codecov @girdharshubham (#487)
- Revert deleted methods in HttpApp @ShrutiVerma97 (#377)
- Documentation website and CI @smehta91 (#465)
- Dependencies moved to Dependencies.scala @girdharshubham (#388)
- Remove content-decoder @tusharmath (#575)
- Benchmarking Workflow @amitksingh1490 (#532)
- Order for clean up changed @girdharshubham (#561)
- Release/next @tusharmath (#357)
- Scala 2.12 type error @amitksingh1490 (#389)
- Sticky Threads @tusharmath (#303)
- Marked test as flaky @ShrutiVerma97 (#296)
- Provide removed from HttpApp @girdharshubham (#429)
📓 Documentation and Examples
- Fix examples @ayakovlenko (#320)
- Backpressure example fixed @ShrutiVerma97 (#514)
- Https server example @dinojohn (#481)
- Update README.md @tusharmath (#289)
- Example of middleware usage @rpiotrow (#444)
- Add example package @kaushik143 (#507)
- Add documentation for requests @whiskeylips (#309)
- Fixed endpoint example (#603)
📈 Version Bumps
- Update netty-all to 4.1.70.Final @amitksingh1490 (#469)
- Update sbt-scalafmt to 2.4.5 @amitksingh1490 (#590)
- Update scalafmt-core to 3.2.1 @amitksingh1490 (#587)
- Update scala-library to 2.13.7 @amitksingh1490 (#463)
- Update scala-library to 2.12.15 @scala-steward (#352)
- Update sbt-scalafix to 0.9.32 @amitksingh1490 (#520)
- Update scala3-library to 3.1.0 @scala-steward (#404)
- Update sbt-bloop to 1.4.11 @amitksingh1490 (#466)
- Update jwt-core to 9.0.2 @amitksingh1490 (#439)
- Update sbt-scala3-migrate to 0.4.6 @amitksingh1490 (#400)
- Update scala-collection-compat to 2.6.0 @amitksingh1490 (#478)
- Update sbt-ci-release to 1.5.10 @amitksingh1490 (#401)
- Update sbt to 1.5.5 @scala-steward (#293)
- Update sbt-github-actions to 0.13.0 @scala-steward (#324)
- Update sbt-updates to 0.6.0 @scala-steward (#318)
- Update zio, zio-streams, zio-test, ... to 1.0.12 @scala-steward (#356)
- Update netty-incubator-transport-native-io_uring to 0.0.10.Final @amitksingh1490 (#472)
v1.0.0.0-RC17
Changes
🚀 Features
- Refactor(request): change structure of Request @tusharmath (#221)
- Feat: Http Error handler @dinojohn (#197)
🐛 Bug Fixes
- Fix: CORS middleware to handle OPTIONS requests completely on its own @SvenW (#196)
- Feature: Enhance operators for client request. @ShrutiVerma97 (#234)
- Fix: Client Request URL @jlcanela (#239)
- Fix(server): close the connection on failure without cause @amitksingh1490 (#205)
🧰 Maintenance
- Update scala-library to 2.13.6 @amitksingh1490 (#225)
- Update netty-all to 4.1.65.Final @scala-steward (#220)
- General Cleanup @tusharmath (#202)
- Upgrade Scala 3 to final release @ghostdogpr (#215)
- Add commas to benchmarks for readability ;) @kitlangton (#214)
- Update sbt-scala3-migrate to 0.4.2 @amitksingh1490 (#210)
- Update sbt to 1.5.2 @amitksingh1490 (#195)
- Update zio, zio-streams, zio-test, ... to 1.0.9 @scala-steward (#248)
- Example: Fix the generic path issue. @jayachandra27 (#247)
- Update sbt-github-actions to 0.12.0 @scala-steward (#246)
- Update sbt-jmh to 0.4.3 @scala-steward (#245)
- Update sbt to 1.5.3 @scala-steward (#244)
- Update scala-library to 2.12.14 @scala-steward (#241)
- Update sbt-scala3-migrate to 0.4.3 @scala-steward (#242)
- Update sbt-scalafix to 0.9.29 @scala-steward (#243)
- Update jwt-core to 8.0.1 @scala-steward (#240)
- Update sbt-github-actions to 0.11.0 @scala-steward (#231)
- Example: Fix add comments in concrete entity example @ShrutiVerma97 (#226)
- Update sbt-scalafix to 0.9.28 @scala-steward (#223)
- Added Example for concrete entity @ShrutiVerma97 (#222)
- Update scala-collection-compat to 2.4.4 @scala-steward (#203)
- Update sbt-jmh to 0.4.2 @scala-steward (#201)
v1.0.0.0-RC16
Changes
🚀 Features
- Feature: Add CORS support for HttpApp @SvenW (#180)
- Authorization header helpers @declspec-cdecl (#174)
- Feature: Add Http.route @frekw (#181)
- Header helpers to extract common headers values @declspec-cdecl (#133)
- Add query string parsing @Fristi (#156)
- Extend Http API @tusharmath (#158)
- Extend expressivity of web socket API @tusharmath (#157)
- Add file streaming example @tusharmath (#152)
- Streaming Response @amitksingh1490 (#143)
- Example: Update advanced example @tusharmath (#151)
- Extend support for various content encodings @amitksingh1490 (#144)
- Rename socket's compose operator @amitksingh1490 (#145)
- Feature: Extend WebSocket Configuration @tusharmath (#135)
- Feature: Socket API Redesign @tusharmath (#123)
- Add Http Errors + Update default messages error messages @declspec-cdecl (#126)
- Add
Collect
constructor in Http @tusharmath (#166) - Make SocketConfiguration fields optional @amitksingh1490 (#140)
Improvements
- Refactor
HttpData.fromByteBuf
to useByteBuf.Utils
@amitksingh1490 (#155)
🐛 Bug Fixes
- Fix: collectM unable to create more than 1 socket connection @tusharmath (#183)
- Fix HttpResult compositional semantics @tusharmath (#169)
- Fix netty exception: java.lang.IllegalStateException: unexpected message type: DefaultHttpResponse, state: 1 @amitksingh1490 (#154)
🧰 Maintenance
- Support Scala 2.12 @amitksingh1490 (#190)
- Example: Add authentication middleware example @tusharmath (#175)
- doc: update website @tusharmath (#172)
- Update ClientSpec @amitksingh1490 (#164)
- Chore: Update scala 3 version with zio 1.0.7 version @tusharmath (#159)
- Add file streaming example @tusharmath (#152)
- Streaming Response @amitksingh1490 (#143)
- Update ZIO version @amitksingh1490 (#149)
- Update sbt-updates to 0.5.3 @amitksingh1490 (#141)
- Fix builds not getting triggered via automerge @amitksingh1490 (#134)
- Remove sbt-dotty plugin @amitksingh1490 (#127)
- Update sbt-scala3-migrate to 0.3.3 @scala-steward (#125)
- Build: Update build.sbt @amitksingh1490 (#122)
- Update sbt-scala3-migrate to 0.4.0 @scala-steward (#171)
- Update sbt to 1.5.1 @amitksingh1490 (#162)
- Update sbt-scala3-migrate to 0.4.1 @amitksingh1490 (#192)