From 6bed62d44ad9cc48dcb56ccc6f91c064dad4fd3e Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Thu, 14 Apr 2022 01:14:30 -0400 Subject: [PATCH] Merge main into zio-series/2.x (#1189) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Doc: Add outline (#815) * doc: add categories * refactor: doc structure refactored * fix: package-lock.json removed * refactor: create outline sub-directories * refactor: rename test to testing * Update netty-all to 4.1.73.Final (#811) * Disable benchmarks comment on fork pull request (#820) * Disable benchmarks on fork PR * run benchmarks on fork PR but disbable PR comment * Feature: API to modify headers (#824) * feat(Headers):added new api to update headers * renamed api * Feature: Signed Cookie (#751) * feat(cookie): added secret in cookie * feat(cookie): added signcookie middleware * feat(cookie): scalafmt * fix(cookie): sign cookie while encoding * scalafmt * fix(Cookie): added unsign method for cookie * fix(cookie): minor changes * fix(signCookieMiddleware: simplified signCookies * fix(cookie): removed try catch from signContent * cookie: throw error in verify * cookie: throw error in verify * verify method changes * fixed test cases * fix: removed decodeResponseSignedCookie * fix: middlewareSpec * added modifyheaders in middleware * removed unwanted changes * scalafmt * refactoring * refactoring * build fix * build fix * fix: decodeResponseCookie * added modify * Update sbt-scalafix to 0.9.34 (#805) * Fix: Echo streaming (#828) * Failing test * Fix echo streaming * Pr Comments * Docs: Update Basic Examples (#814) * doc(Getting started): updated examples * docs: updated basic examples * docs: update advanced examples (#816) * maintenance: semanticdb revision usage (#832) * maintenance: workflow scala version (#833) * Fix: HasHeader bug (#835) * #834 - fix and test for the bug. * applied suggested change * refactor: fix naming for Http operators (#839) * Update sbt-bloop to 1.4.12 (#810) * Update sbt-bloop to 1.4.12 * Update sbt-bloop to 1.4.12 * Update scala-library to 2.13.8 (#801) * Update scala-library to 2.13.8 * Regenerate workflow with sbt-github-actions * Add configuration builder methods to zhttp.service.Server (#768) * Add configuration builder methods to zhttp.service.Server * Update zio-http/src/main/scala/zhttp/service/Server.scala Co-authored-by: Tushar Mathur * Update zio-http/src/main/scala/zhttp/service/Server.scala Co-authored-by: Tushar Mathur * Update zio-http/src/main/scala/zhttp/service/Server.scala Co-authored-by: Tushar Mathur * Change some server with* builder methods (enable parameter) * Server withAcceptContinue(enabled) Co-authored-by: Tushar Mathur * maintenance: html template for internal server error string (#851) Closes #842 * Performance: Improve benchmarking code (#731) * wip: try server codec without validation * wip: remove flush consolidator * wip: use wrapped buffer * wip: add flush consolidator * perf: make response encoding checks faster * use encoder and decoder (#733) * wip: remove Request creation * use encoder and decoder Co-authored-by: Tushar Mathur * disable object aggregator * disable object aggregator * revert disable object aggregator * doc: update scala doc * perf: freeze the HttpResponse Co-authored-by: Amit Kumar Singh Co-authored-by: amitsingh * Refactor: Support middlewares on Http (#773) * refactor: remove type-params from Response * chore: self review * refactor: rename Middleware to HttpMiddleware * refactor: add `@@@` to Http as an alternative to `@@`. * feature: add new Middleware API * feature: add `flatten` and `ifThenElse` * feature: add `ifThenElseZIO` * refactor: fix type params for `identity` * feature: add `when` * feature: add `make` constructor * refactor: make middleware methods final * refactor: git remains * refactor: implement HttpMiddleware as Middleware * scala3 fix * Refactor CORS middleware (#788) * Refactor/merge middleware and http middleware (#790) * Refactor move cors and timeout * move some httpMiddlewares to Middleware * move some AuthMiddleware to Middleware * move remaining AuthMiddleware to Middleware * move Middlewares to middleware package * scaladoc * codec example * move Middleware to http package * named alias for `@@` * rename Auth to AuthMiddlewares * rename CORSMiddleware to CorsMiddlewares * rename CSRF to CsrfMiddlewares * make primitives private * rename MiddlewareExtensions to HttpMiddlewares * rename operators in HttpMiddlewares * scalaDoc * arg rename * doc update and general refactor * simplify cors middleware * rename CorsConfig * renames * Make middlewares package private MiddlewareRequest * Introduce MiddlewareRequest (#798) * Introduce MiddlewareRequest * PR review comments * Refactor move runAfter to Middleware * refactor: add `UMiddleware` * feature: add `contramapZIO` * refactor: move cors config to Cors file * refactor: rename files * refactor: remove AuthSpec from WebSpec * refactor: fix naming for Http operators * refactor: add partial type suport for contraMapZIO * Refactor: Codec (#841) * Add Run Before (#840) * Add Run Before * Add Run Before and After * use renamed operator * refactor: add partial type suport for contraMap * Implement missing operators in Middleware (#807) * Implement missing operators in Middleware * fix as operator * headers Middleware changes * sign cookie * extend with HeaderExtensions * rename suite * PR comments * refactor: use `Request` instead of `MiddlewareRequest` * refactor: rename methods * refactor: resolve fix me issue Co-authored-by: amitsingh Co-authored-by: Amit Kumar Singh * refactor: rename ClientParams to ClientRequest (#856) * refactor: use declarative encoding for http.middleware (#869) * Move docs to v1.x directory (#861) * Bug Add host in client from absolute URL (#847) * feat(Client): Add host in client from absolute URL * feat(Client): Refactor and add spec for host value * feat(Client): fmt formatting * feat(Client): fmt formatting * feat(Client): use setHeaders from netty * feat(Client): Add spec for host * feat(Client): Add spec for host * feat(Client): Rename clientParams to clientRequest * Doc website fix (#871) * Update scala3-library to 3.1.1 (#873) * Update scala3-library to 3.1.1 * Regenerate workflow with sbt-github-actions * Doc: Fix getting started link (#874) * Update scalafmt-core to 3.3.2 (#864) * Doc: `Headers` documentation (#817) * doc: add categories * refactor: doc structure refactored * fix: package-lock.json removed * refactor: create outline sub-directories * initial draft on Headers documentaiton * refactor: rename test to testing * migrated Headers doc in the right structure * re-organized the section. added more examples on the service, client and middleware side. * updated documentation * updated based on review * more updates * more updates * minor changes * minor changes * Update docs/website/docs/v1.x/dsl/headers/index.md * Update docs/website/docs/v1.x/dsl/headers/index.md Co-authored-by: Shubham Girdhar Co-authored-by: amitsingh Co-authored-by: Amit Kumar Singh * Fix collapsible Headers Doc (#876) * Test: Added Integration tests for `HExit.Success` (#852) * feat: added validation app for HExit without zio * feat: removed type from validationAppSpec * test: Iterating using HttpGen.Method * test: rearranged status method params * test: name fixes * Update scalafmt-core to 3.3.3 (#881) * Update scalafmt-core to 3.3.3 (#884) * Fix: EncodeClientParams (#868) * fix: encodeClientParams * test(client): added test for req url string * test(client): variable name changed * test: added test in encodeClientSpec * simplifies test case * doc: add comment on why relative path needs to be used. Co-authored-by: Tushar Mathur * Refactor: HttpRunnableSpec clean up (#857) * refactor: reduce HttpRunnableSpec boilerplate * refactor: remove all helpers from HttpRunnableSpec and inline the method * doc: update documentation for test module * refactor: add type-constraints to Http for specialized methods * refactor: use IsResponse type constraint * style(*): apply scala fmt * doc: update documentation * update doc (#897) * Docs: Getting started (#887) * fix: added more content * fixed comments * fix: getting started * modifications * added more * minor changes * minor changes * changes * refactor: rename asString to encode in URI (#898) * refactor: rename asString to encode in Scheme (#904) * fix: example links (#906) * Update getting-started.md (#907) * refactor: rename asString to encode in Scheme (#905) * Doc: setup (#886) * doc: setup * resolve: PR comments * Update netty-incubator-transport-native-io_uring to 0.0.12.Final (#908) * Documentation for Server (#885) * removed config.md and make configurations part of Server page * added server configurations * markdwon appearing fine in docusaurus generated page * added one missing configuration * Server documentation changed according to PR comments * change note to tip Co-authored-by: Sumant Awasthi Co-authored-by: amitsingh * Performance: Improve performance of `collectM` (#882) * Use ZIO response * fix: improve cancellation performance * refactor: use sticky server * refactor: reduce allocations * revert example * Doc: Added <> operator in getting started (#910) * fix: ++ operator doc * fix: composition * feature: Add `collectManaged` to Http (#909) * Add collectManaged * comment typo * feature: add `echo` operator to `Socket` (#900) * feature: add `Socket.empty` (#901) * feature: add `Socket.empty` * test: add unit test case for Socket#empty Co-authored-by: Shubham Girdhar * feature: add `toHttp` to Socket.scala (#902) * feature: add `toHttp` to Socket.scala * test: add unit test for `toApp` to Socket.scala Co-authored-by: Shubham Girdhar * refactor: merge Request for Client and Server (#894) * Revert "refactor: merge Request for Client and Server (#894)" (#915) This reverts commit fc8b9b5a155e7c59b548d191265d30e0e6b61d8b. * Feature: add `toHttp` to Response (#903) * feature: add `wrapHttp` to Response * test: add unit test for wrapHttp in Response.scala * refactor: operator name changed to `toHttp` Co-authored-by: Shubham Girdhar * Update scalafmt-core to 3.4.0 (#920) * Update sbt to 1.6.2 (#931) * Remove outdated benchmark.md (#940) * removed benchmark file * removed benchmark hyperlink from readme * refactor: rename `getHeaders` to `headers` in `ClientRequest` (#928) * refactor: rename `getHeaders` to `headers` in `ClientRequest` * fix: compiler errors * fix: compiler errors * Refactor: rename `asString` to `encode` in `Path` (#927) * refactor: rename `asString` to `encode` in Path * fix: compiler errors * Disable flow Control (#854) * Add builder pattern for URL (#930) * Add builder pattern for URL * Compare encoded value to string literal * Documentation: Http (#888) * initial commit for http documentation * refactor: adding bold formatting for HTTP and resolving review comments * refactor: Chnage app to application in http documentation * refactor:fixed review comments * added combinators section * style: formatting the code blocks * added getBodyAsString to http documentation * added HttpApp section * fixing typos * added mapZIO and contamapZIO documentation for http * provide layer documentation for http * doc: added a secion- Running an HttpApp Co-authored-by: Dino John * feature: add `Http.apply` (#949) * Refactor: Drop `toZIO` and `wrapZIO` APIs (#950) * feature: add `Http.apply` * refactor: remove ZIO wrapping APIs * Fix: Server KeepAlive true by default and enable client to set Http version on requests (#792) * IT cases for KeepAlive included in ServerConfigSpec * Allow possibility of modifying server conf in HttpRunnableSpec * reverted Header.scala * reverted Header.scala * reverted Header.scala * struggling with fmt * pull latest from main * reverting changes in ci files * included review recommendations * Concise test description * removed extra comments * readjusted ServerConfigSpec * enable keep alive by default; added more test cases for Http 1.0; tweaked test cases and description * removed configurableServe * removed unnecessary lines; shorter tests * reverted Server disabled and some spec changes * Test/keepalive httpversion (#800) * make httpVersion first param in request methods * tweaked test cases even further using requestHeaderValueByName * changed names * resolved comments, and more tweaking of test * deleted extra line Co-authored-by: Sumant Awasthi * Renamed ServerConfigSpec to KeepAliveSpec * made httpVersion first param in ClientParams, made relevant changes * in EncodeClientParams use http version from ClientParams * a minor change * changed server keepAlive = true by default, also rebased with main Co-authored-by: Sumant Awasthi * feat: url add `isAbsolute` and `isRelative` operators (#946) * refactor: add type-params * feat: url add `isAbsolute` and `isRelative` operators # Conflicts: # zio-http/src/main/scala/zhttp/http/URL.scala * WebSocket Client Support (#933) * wip: websocket client support * test: add unit test for WebSocket using native websocket client * fix: fromZIO in websocket client spec * refactor: queue usage simplified * feat: websocket client support * refactor: imports optimized * doc: for ClientSocketHandler * refactor: bootstrap method * websocket client with response support * feat: wss support * refactor: SocketProtocol * refactor: add SocketClient example: add WebSocketSimpleClient * refactor: SocketProtocol with type evidence refactor: general clean up * test: for Scheme * refactor: rename asString to encode in URI * refactor: remove example of SecureClient * refactor: url doesn't need to be part of the protocol. Url can be passed as an additional parameter for now. This simplifies the overall design. * refactor: socket client for now will take the complete url * refactor: update client example * refactor: add `connect` operator to SocketApp * refactor: use `url` as a string instead of URL type * refactor: re-order methods * style(*): apply scala fmt * revert: unnecessary changes * feature: add `echo` operator to `Socket` * refactor: update type info * feature: add `Socket.empty` * feature: add `wrapHttp` to Response * feature: add `toHttp` to Socket.scala * style(*): apply scala fmt * refactor: rename asString to encode in Scheme * refactor: cleanup Scheme changes * test: update test assertion * refactor: combine server and client handlers * refactor: add hint in touch for ClientSocketUpgradeHandler * refactor: change package for SocketAppHandler * refactor: rename methods in SocketProtocol * fix: add host header and port in Request automatically * fix: example links (#906) * Update getting-started.md (#907) * refactor: rename asString to encode in Scheme (#905) * Doc: setup (#886) * doc: setup * resolve: PR comments * Update netty-incubator-transport-native-io_uring to 0.0.12.Final (#908) * Documentation for Server (#885) * removed config.md and make configurations part of Server page * added server configurations * markdwon appearing fine in docusaurus generated page * added one missing configuration * Server documentation changed according to PR comments * change note to tip Co-authored-by: Sumant Awasthi Co-authored-by: amitsingh * Performance: Improve performance of `collectM` (#882) * Use ZIO response * fix: improve cancellation performance * refactor: use sticky server * refactor: reduce allocations * revert example * Doc: Added <> operator in getting started (#910) * fix: ++ operator doc * fix: composition * feature: Add `collectManaged` to Http (#909) * Add collectManaged * comment typo * feature: add `echo` operator to `Socket` (#900) * feature: add `Socket.empty` (#901) * feature: add `Socket.empty` * test: add unit test case for Socket#empty Co-authored-by: Shubham Girdhar * refactor: add attribute to Request created by Handler * refactor: remove "case" from ClientInboundHandler * refactor: rename to WebSocketAppHandler * feature: add `toHttp` to Socket.scala (#902) * feature: add `toHttp` to Socket.scala * test: add unit test for `toApp` to Socket.scala Co-authored-by: Shubham Girdhar * cleaning up residue files * refactor: rename `asString` to `encode` in Path * refactor: rename `getHeaders` to `headers` in `ClientRequest` * refactor: simplify client API * refactor: update client params encoder * style: ordering methods in URL.scala * refactor: ClientRequest will throw if the url is invalid * refactor: pass URL instead of String in ClientRequest * test: fix `GetBodyAsStringSpec` * style(*): apply scala fmt * refactor: fix invalid url being passed in HttpRunnableSpec * refactor: Move SSL requirements to ClientAttirbute * feature: add `scheme` operator on URL * feature: add `IsWebSocket` and `isSecure` operators on Scheme * refactor: use named imports in WebSocketAppHandler * test: fix base url for websockets * refactor: update how flags are set inside client * test: add non-zio spec to the spec list * refactor: fix client test * style: scalafmt error and remove TODO * refactor: remove unused handler * refactor: remove host header changes and RequestSpec (#945) * refactor: move java scheme generators to SchemeSpec (#944) * refactor: move java scheme generators to SchemeSpec * refactor: resolve PR comments * feat: url add `isAbsolute` and `isRelative` operators * refactor: rename EncodeClientParams.scala to EncodeClientRequest * fix: handle errors on client connection * style(*): apply scala fmt * refactor: simplify multiple websocket upgrades test (#948) * refactor: resolve PR comments style: fmt fix * refactor: general refactor and style changes Co-authored-by: Shubham Girdhar Co-authored-by: Shruti Verma <62893271+ShrutiVerma97@users.noreply.github.com> Co-authored-by: Amit Kumar Singh Co-authored-by: Scala Steward <43047562+scala-steward@users.noreply.github.com> Co-authored-by: sumawa Co-authored-by: Sumant Awasthi Co-authored-by: amitsingh Co-authored-by: James Beem * Documentation: Request (#926) * docs: request * doc: added client request docs * added query param section * doc: refactoring * WIP * fix: doc * fix: doc * request * request * example fixed * Fix ssl issue due to missing peer host port hint (#952) * feature: add connect operator on Socket (#955) * Style: Update scala doc wrapping (#959) * chore: update scalafmt config * style(*): apply scala fmt * remove get prefix (#958) * Update scalafmt-core to 3.4.1 (#960) * Update scalafmt-core to 3.4.2 (#962) * Update scalafmt-core to 3.4.2 (#961) * remove declarative API (#957) * Update sbt-updates to 0.6.2 (#966) * Doc: Readme (#970) * fix: readme * changed note * style: rearrange methods in files (#963) * Doc: Cookie (#974) * doc: cookie * doc: cookie * cookie: changes * refactor: drop `CanBeSilent` type-constraint from Http (#964) * refactor: drop `CanBeSilent` type-constraint from Http * update usage of `silent` operator * Feature: add `Version` (#965) * refactor: rename `asHttpMethod` to `toJava` * refactor: add `Version` domain * style(*): apply scala fmt * Fix: Fire response instead of error in HExit.Failure() (#980) * Bug fix: fixes #979 * Made changes to nonZIOSpec in ServerSpec to include tests for HExit.Failure() * fix: typo in bug_report.md (#981) * Update netty-all to 4.1.74.Final (#982) * refactor: remove sealed modifier from Middleware trait (#984) * refactor: rename method on Client (#985) * fix: request doc (#989) * Use a Gen of methods without HEAD for Responses with content (#992) * doc: setup g8 (#988) * doc: setup g8 * refactor: bump zhttp version * Doc: for WebSocketFrame (#953) * doc: for WebSocketFrame * resolve: PR comments * resolve: PR comments * Documentation for HttpData (#987) * Documentation for HttpData * added server and client side usage of HttpData * Update docs/website/docs/v1.x/dsl/http-data/index.md Co-authored-by: Amit Kumar Singh * refactor: rename `provide` and `provideSome` (#996) * Fix: `Content-Type` header gets incorrect values. (#899) * initial work * Fix tests * Perf enhancements * compilation error fix * rename getContentType * Update zio-http/src/main/scala/zhttp/http/MediaType.scala Co-authored-by: Tushar Mathur * Make MediaType private, and final. Co-authored-by: Tushar Mathur * Feat: Http from HExit (#986) * added 2 operators to create http from HExit * added tests for collectHExit and fromFunctionHExit * rewrote nonZIO app in serverSpec using collectHExit * Refactor: Remove Collect and FromFunctionZIO (#1002) * Refactor: Implemented FromFunctionZIO using FromFunctionHExit * Refactor: Implement Collect using FromFunctionHExit * Fix: Binary WebSocketFrame (#1005) * fix: change binary websocket frame arg to Chunk[Byte] from ByteBuf Closes #1004 * test: add unit test for binary websocketframe * style: fix formatting * feature: add `fromFileZIO` (#1010) * refactor: `fromFile` uses `fromFileZIO` * feature: add `Http.fromResource` (#1009) * Refactor: Content Type Fixes (#1008) * style: scalafmt fixes * style: sorting alphabetically * fix: set conten-type only if not set already * refactor: make internal fields private * doc: add todo * refactor: make caching optional * refactor: use `Http.fromResource` in test * refactor: fix test * doc: fix binary constructor usage (#1014) * Add data in `Request` trait (#1017) * maintenance: run scalafmt once (#1027) * Build(deps): Bump follow-redirects in /docs/website (#1029) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update scalafmt-core to 3.4.3 (#1022) * Remove tuple from ResponseHandler (#1033) * Remove tuple from ResponseHandler * cleanup * restructuring (#1040) * added more examples (#1038) * Doc: Response (#967) * updated with main * added operators * revert * setstatus change * renaming (#1047) * Fix: Releasing request twice (#1046) * refactor: not releasing request * Added failing test * optimize path encode method (#1035) * Feature: Static Server (#1024) * WIP : static server from file path * fix CI errrors * format * Basic functionalities work without options * Fix errors on java8 * Fix errors on java8 * Fix refactoring error * clean up * Fixig tests * working around file type detection bug * Method not allowed. * Better comments. * Update zio-http/src/main/scala/zhttp/http/Http.scala Co-authored-by: Tushar Mathur * Refactor * More tests. * Fix PR comments * Moved headers to fromPath * Update zio-http/src/main/scala/zhttp/http/Http.scala Co-authored-by: Tushar Mathur * Update zio-http/src/main/scala/zhttp/http/Http.scala Co-authored-by: Tushar Mathur * Fixes. * Fixing tests * Update zio-http/src/main/scala/zhttp/http/HttpData.scala Co-authored-by: Tushar Mathur * Update zio-http/src/main/scala/zhttp/http/HttpData.scala Co-authored-by: Tushar Mathur * Update zio-http/src/main/scala/zhttp/http/Http.scala Co-authored-by: Tushar Mathur * PR is closed * Used Http.fromFile in implementation * Remove unwanted commits * Fixing compile issues. * feature: add `withMediaType` operator in HeaderModifier * refactor: drop `setMediaType` from Response * refactor: inline file creation * refactor: simplify implementation for fromFile and fromFileZIO * doc: add todo comments * refactor: update listFilesHtml implementation * refactor: update scaladoc * test: fix refactored misses * test: use `+` instead of `,` * style: scalafmt * feature: add `mediaType` to HeaderGetters * feature: add Http.attempt` operator * refactor: MediaType works on extensions directly * refactor: add tests for fromResource * test: StaticFileServerSpec add tests for directory * refactor: make `fromPath` use `fromFile` internally * refactor: simplify `fromPath` * refactor: update scala docs for Http operators * refactor: fix type info of `Http.response` * feature: add `listDirectory` operator * feature: add StyledContainerHtml * refactor: drop `Util` * refactor: inline util HTML constructors * test: add test for invalid file size * doc: update comments * style: reorder methods in Http Co-authored-by: ashprakasan * Revert "Feature: Static Server (#1024)" (#1060) This reverts commit 33ac08d1a528143dfbcfcbee2d3202b31abbbd30. * Performance: Use `CharSequence` for ServerTime (#1064) * feature: use CharSequence in for ServerTime * style: scalafmt * Feature: add `dropLast` to Path (#1065) * feature: add `dropLast` to Path * style: scalafmt * feature: Response.html now supports taking in Status also (#1067) * feature: add `code` method on Status (#1068) * refactor: fix type info of `Http.response` (#1073) * feature: add `foldCause` to HttpError (#1066) * feature: add `withMediaType` operator in HeaderModifier (#1071) * Feature: add `Http.attempt` operator (#1070) * feature: add Http.attempt` operator * test: add tests for Http.attempt * feature: add `getResource` and `getResourceAsFile` operators on Http (#1074) * Update jwt-core to 9.0.4 (#1056) * Update sbt-bloop to 1.4.13 (#1055) * Build(deps): Bump url-parse from 1.5.4 to 1.5.7 in /docs/website (#1062) Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.4 to 1.5.7. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.4...1.5.7) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feature: add `ifModifiedSinceDecoded` (#1075) * Feature: Static Server (#1061) * WIP : static server from file path * fix CI errrors * format * Basic functionalities work without options * Fix errors on java8 * Fix errors on java8 * Fix refactoring error * clean up * Fixig tests * working around file type detection bug * Method not allowed. * Better comments. * Update zio-http/src/main/scala/zhttp/http/Http.scala Co-authored-by: Tushar Mathur * Refactor * More tests. * Fix PR comments * Moved headers to fromPath * Update zio-http/src/main/scala/zhttp/http/Http.scala Co-authored-by: Tushar Mathur * Update zio-http/src/main/scala/zhttp/http/Http.scala Co-authored-by: Tushar Mathur * Fixes. * Fixing tests * Update zio-http/src/main/scala/zhttp/http/HttpData.scala Co-authored-by: Tushar Mathur * Update zio-http/src/main/scala/zhttp/http/HttpData.scala Co-authored-by: Tushar Mathur * Update zio-http/src/main/scala/zhttp/http/Http.scala Co-authored-by: Tushar Mathur * PR is closed * Used Http.fromFile in implementation * Remove unwanted commits * Fixing compile issues. * feature: add `withMediaType` operator in HeaderModifier * refactor: drop `setMediaType` from Response * refactor: inline file creation * refactor: simplify implementation for fromFile and fromFileZIO * doc: add todo comments * refactor: update listFilesHtml implementation * refactor: update scaladoc * test: fix refactored misses * test: use `+` instead of `,` * style: scalafmt * feature: add `mediaType` to HeaderGetters * feature: add Http.attempt` operator * refactor: MediaType works on extensions directly * refactor: add tests for fromResource * test: StaticFileServerSpec add tests for directory * refactor: make `fromPath` use `fromFile` internally * refactor: simplify `fromPath` * refactor: update scala docs for Http operators * refactor: fix type info of `Http.response` * feature: add `listDirectory` operator * feature: add StyledContainerHtml * refactor: drop `Util` * refactor: inline util HTML constructors * test: add test for invalid file size * doc: update comments * style: reorder methods in Http * refactor: improve style of StyledContainerHtml * refactor: drop directory support * refactor: drop directory listing * refactor: add a color to background * feature: add `getResource` and `getResourceAsFile` operators on Http * feature: add `foldCause` to HttpError * feature: add `code` method on Status * feature: StyleContainerHtml max-width updated * feature: Handler uses `HttpError` for empty responses * feature: Response.html now supports taking in Status also * feature: beautify Response.fromHttpError * refactor: rename file to Template * feature: add `dropLast` to Path * feature: add `Http.template` operator * example: update static server example * style: scalafmt updates * feature: use CharSequence in for ServerTime * feature: add `ifModifiedSinceDecoded` * feature: add `ifModifiedSinceDecoded` * feature: add `ifModifiedSinceDecoded` Co-authored-by: ashprakasan * issue 715 Support custom ChannelInitializer (#932) * doc: socket (#1036) * doc: socket * refactor: clean up * refactor: resolve PR comment * fix: resolve PR comment and fix typo in `merge` * feat: added new constructor in http (#1077) * Feature: Add `when` operator in `Http` (#1078) * perf: added when operator in http * build fix * removed jrequest from constructor * fmt * unsafeEncode: HttpRequest * added when primitive * refactor: rename `whenPath` to `whenPathEq` Co-authored-by: Tushar Mathur * Feature: Effectful Auth Middleware (#1079) * added effectful athu middlewares * added tests * refactor: stopped calling tuple of credentials as Header * added credentials * Test: Server Settings Support in `HttpRunnableSpec#serve` (#1053) * feat: server settings support in HttpRunnableSpec#serve * resolve: PR comments * refactor: website docs sidebar pages repositioned (#1049) * Feat: Server Request Decompression (#1095) * feat: server request decompression * test: add test for deflate * Feature: Added helper checkers to `Status` class (#1058) * Added helper checkers to Status class * For status, formatted, removed and made them def Co-authored-by: Roberto Leibman * Build(deps): Bump prismjs from 1.26.0 to 1.27.0 in /docs/website (#1100) Bumps [prismjs](https://github.com/PrismJS/prism) from 1.26.0 to 1.27.0. - [Release notes](https://github.com/PrismJS/prism/releases) - [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md) - [Commits](https://github.com/PrismJS/prism/compare/v1.26.0...v1.27.0) --- updated-dependencies: - dependency-name: prismjs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): Bump url-parse from 1.5.7 to 1.5.10 in /docs/website (#1103) Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.7 to 1.5.10. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.7...1.5.10) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * added try catch in handler to catch throwable apps (#1099) * removed flatten from test (#1109) * Feature: Request Streaming (#1048) * introduce `Incoming` and `Outgoing` inHttpData * streaming support * benchmark disable objectAggregator * cleanup * refactor * cleanup + PR comments * cleanup + PR comments * cleanup + PR comments * refactor: rename variable * memory leak * refactor: Handler now extends ChannelInboundHandlerAdapter * refactor: remove unused methods from UnsafeChannel * remove bodyAsCharSequenceStream operator * refactor: remove unnecessary methods on HttpData * refactor: re-implement `bodyAsStream` * refactor: remove unsafe modification of pipeline from HttpData * refactor: rename HttpData types * fix 2.12 build * refactor: remove type param * PR comment * PR comment * refaector: simplify releaseRequest * refactor: reorder methods in ServerResponseHandler * refactor: make methods final * refactor: rename HttpData traits * add `bodyAsByteArray` and derive `body` and `bodyAsString` from it. * add test: should throw error for HttpData.Incoming * Introduce `useAggregator` method on settings and use it everywhere * remove sharable from `ServerResponseHandler` * Update zio-http/src/main/scala/zhttp/http/Request.scala * refactor: remove unnecessary pattern matching * throw exception on unknown message type * simplify test * refactor: change order of ContentHandler. Move it before the RequestHandler * test: update test structure * refactor: move pattern match logic to WebSocketUpgrade * revert addBefore Change because of degrade in performance (#1089) * fix static server issue with streaming * take case of auto read if body is not used * autoRead when needed * Update zio-http/src/main/scala/zhttp/service/RequestBodyHandler.scala * Update zio-http/src/main/scala/zhttp/http/Response.scala * Update zio-http/src/main/scala/zhttp/http/Response.scala * remove test which is not used * Update zio-http/src/main/scala/zhttp/service/Handler.scala Co-authored-by: Shrey Mehta <36622672+smehta91@users.noreply.github.com> * Update zio-http/src/main/scala/zhttp/service/Handler.scala Co-authored-by: Shrey Mehta <36622672+smehta91@users.noreply.github.com> * style: fmt * exclude Head in 404 check Co-authored-by: Tushar Mathur Co-authored-by: Shrey Mehta <36622672+smehta91@users.noreply.github.com> * Fix toByteBuf for streamed HttpData (#1118) * Fix toByteBuf for streamed HttpData * example: more secure string compare for login (#1120) * Feature: Introduced defect channel for `Http` (#1083) * Introduced defect channel for Http and added helpful combinators for error handling * Reformat code * Removed doubtful combinator Http.run * Simplified implementation of catchNonFatalOrDie * Simplified implementation of catchSome * Guarded Http.execute() with try-catch block in order to convert unexpectable exceptions to defects * Added test to check Http.catchSomeDefect catches throws defects * Fixed warnings about shadowing type parameters * Fix: fold over defect cause * Formatted HttpSpec.scala * Perf: catch defects only where they may occur * Fmt Co-authored-by: Nikolay Artamonov * Enhancement: Merge server and client Responses (#1111) * Merge client and server Request * Remove IsResponse * rename getBodyAsString => bodyAsString in doc (#1124) * removed links from scaladoc (#1127) * Feature: Add `version` to `Request` (#1094) * introduce `Incoming` and `Outgoing` inHttpData * streaming support * benchmark disable objectAggregator * cleanup * refactor * cleanup + PR comments * cleanup + PR comments * cleanup + PR comments * refactor: rename variable * memory leak * refactor: Handler now extends ChannelInboundHandlerAdapter * refactor: remove unused methods from UnsafeChannel * remove bodyAsCharSequenceStream operator * refactor: remove unnecessary methods on HttpData * refactor: re-implement `bodyAsStream` * refactor: remove unsafe modification of pipeline from HttpData * refactor: rename HttpData types * fix 2.12 build * refactor: remove type param * PR comment * PR comment * refaector: simplify releaseRequest * refactor: reorder methods in ServerResponseHandler * refactor: make methods final * refactor: rename HttpData traits * add `bodyAsByteArray` and derive `body` and `bodyAsString` from it. * add test: should throw error for HttpData.Incoming * Introduce `useAggregator` method on settings and use it everywhere * remove sharable from `ServerResponseHandler` * Update zio-http/src/main/scala/zhttp/http/Request.scala * refactor: remove unnecessary pattern matching * throw exception on unknown message type * simplify test * refactor: change order of ContentHandler. Move it before the RequestHandler * test: update test structure * refactor: move pattern match logic to WebSocketUpgrade * revert addBefore Change because of degrade in performance (#1089) * fix static server issue with streaming * Introduce version in Request * Delete `Request.make` * add missing scaladoc Co-authored-by: Tushar Mathur * Refactor: Merge client and server `Request` (#1125) * introduce `Incoming` and `Outgoing` inHttpData * streaming support * benchmark disable objectAggregator * cleanup * refactor * cleanup + PR comments * cleanup + PR comments * cleanup + PR comments * refactor: rename variable * memory leak * refactor: Handler now extends ChannelInboundHandlerAdapter * refactor: remove unused methods from UnsafeChannel * remove bodyAsCharSequenceStream operator * refactor: remove unnecessary methods on HttpData * refactor: re-implement `bodyAsStream` * refactor: remove unsafe modification of pipeline from HttpData * refactor: rename HttpData types * fix 2.12 build * refactor: remove type param * PR comment * PR comment * refaector: simplify releaseRequest * refactor: reorder methods in ServerResponseHandler * refactor: make methods final * refactor: rename HttpData traits * add `bodyAsByteArray` and derive `body` and `bodyAsString` from it. * add test: should throw error for HttpData.Incoming * Introduce `useAggregator` method on settings and use it everywhere * remove sharable from `ServerResponseHandler` * Update zio-http/src/main/scala/zhttp/http/Request.scala * refactor: remove unnecessary pattern matching * throw exception on unknown message type * simplify test * refactor: change order of ContentHandler. Move it before the RequestHandler * test: update test structure * refactor: move pattern match logic to WebSocketUpgrade * revert addBefore Change because of degrade in performance (#1089) * fix static server issue with streaming * Introduce version in Request * Merge Client and Server Request * Delete `Request.make` * Gen refactor * rename files * make function private * rename attribute * rename attribute Co-authored-by: Tushar Mathur * Refactor: Http.Status names to Camel Case (#1129) * support custom Status for HtppError * support custom Status for HttpError * updated code based on review. * fixed tests * changed from Capitalized Status names to Camel Case * proper camel case usage Co-authored-by: Gabriel Ciuloaica * Feature: Support Custom statuses code (#1121) * support custom Status for HtppError * support custom Status for HttpError * updated code based on review. * fixed tests * Refactor: Http.Status names to Camel Case (#1128) * changed from Capitalized Status names to Camel Case * proper camel case usage * Update zio-http/src/main/scala/zhttp/http/HttpError.scala Co-authored-by: Tushar Mathur * fixed after conflict * updated tests Co-authored-by: Tushar Mathur * Enhancement: Added combine operator (#1106) * enhancement: added combine operator * added test cases with three apps * refactor: plaintextBenchmarkServer * test case updated * removed flatten from test * test case updated * added test for collectHttp * simplified tests * added failing test * fixed test * refactor: cleaning up the execute method in Http Co-authored-by: Tushar Mathur * Refactor: Added lift in PartialCollect (#1105) * refactor: added lift in partialCollect * added text in path * refactor: reduce iterations of benchmarks Co-authored-by: Tushar Mathur * Feature: Bearer auth middleware (#1097) * added header constructor for bearer authorization * added jwt auth middlewares * updated the Auth examples * added tests * renamed the auth middleware from jwt to barer * refactor: example AuthenticationClient * added scala doc for examples, renamed variables in tests Co-authored-by: Shubham Girdhar Co-authored-by: amitsingh * Update netty-all to 4.1.75.Final (#1130) * Refactor: `Request` and `Response` to extend `HttpDataExtension` (#1112) * Request Streaming Example * refactor: add HttpDataExtension * doc: add documentation * fix: compiler errors Co-authored-by: Tushar Mathur * Refactor: Make `Http.getResource` consistent with `ZStream.fromResource` (#1113) * Fix `Http.getResource` Code based on https://github.com/zio/zio/blob/v1.0.13/streams/jvm/src/main/scala/zio/stream/platform.scala#L385-L398 * Improve `File` creation lazyness: The `File` instance will be created much later in the pipe * Fix tests * Fix tests * Update zio-http/src/main/scala/zhttp/http/Http.scala Co-authored-by: Tushar Mathur * Remove `Blocking` from the type signature as requested Co-authored-by: Tushar Mathur * Update netty-incubator-transport-native-io_uring to 0.0.13.Final (#1133) * Add more useful toString method for Request (#995) * Add more useful toString method for Request * Fmt * Moved toString to Request trait * Added a few tests of Request.toString * Fmt * Improved tests for Request.toString * Added Scala doc for Request.toString * Added protocol version to a string representation of Request * Fmt * fix(request): fix scala doc (#1138) * Performance: Improve HttpData toByteBuf (#1137) * refactor: add blocking layer for file based constructors * refactor: use JavaFile instead of RandomAccessFile * doc: fix StaticServer example * style: scalafmt * refactor: clean up HttpData * refactor: remove blocking * refactor: remove unnecessary overload in ResponseHandler * test: add timeout and use ByteBufConfig to control encoding * refactor: add ByteBufConfig * refactor: rename types internally * style: fmt Co-authored-by: amitsingh * Fix: Handle HttpClient Interruption on connection close (#1039) * the promise has to be uninteruptible to avoid loosing the response message in case the netty chanel is getting closed due to a unhandled exception * added a note about reasons why the promise is made uninterruptible. * New chapter: efficient development process (#1145) The dream11 gitter template already contains the most important sbt plugins to setup an efficient development process. To guide newcomers to zio-http, the newely added chapter gives an introduction on their purpose and how to use them. * do not watch reStop (#1146) Removed the tilde (~) before reStop, as it is not helpful to run this in watch-mode * Feature: add `Middleware.codecHttp` (#1141) * feature: add codecHttp * feature: add `codecMiddleware` to Http * added tests Co-authored-by: shrutiverma97 * Performance: Use `CharSequence` internally wherever possible (#1142) * refactor: add blocking layer for file based constructors * refactor: use JavaFile instead of RandomAccessFile * doc: fix StaticServer example * style: scalafmt * refactor: clean up HttpData * refactor: remove blocking * refactor: remove unnecessary overload in ResponseHandler * test: add timeout and use ByteBufConfig to control encoding * refactor: add ByteBufConfig * performance: use `AsciiString` inside of HttpData * performance: use CharSequence in `Http.template` and `Http.text` * performance: use `CharSequence` in Response.json, Response.text and Response.redirect * performance: use `CharSequence` in Html templates * refactor: add `bodyAsCharSequence` to HttpDataExtension * Update scala-collection-compat to 2.7.0 (#1154) * Update jwt-core to 9.0.5 (#1150) * feature: add `narrow` operator to Http (#1161) * feature: add `toHttp` method to `Response` (#1160) * refactor: DynamicServer is not bound to HttpEnv only (#1159) * fix: Socket.end implementation (#1158) * Update sbt-scala3-migrate to 0.5.1 (#1163) * Fix: update implementation of `FromAsciiString.encode` (#1175) * fix: update implementation of `FromAsciiString.encode` * Add test for toHttp FromASCIIString Co-authored-by: amitsingh * Build(deps): Bump minimist from 1.2.5 to 1.2.6 in /docs/website (#1172) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Added missing period (#1186) Co-authored-by: Shubham Girdhar Co-authored-by: Amit Kumar Singh Co-authored-by: Shruti Verma <62893271+ShrutiVerma97@users.noreply.github.com> Co-authored-by: Gabriel Ciuloaica <95849448+gciuloaica@users.noreply.github.com> Co-authored-by: Tushar Mathur Co-authored-by: Javier Goday Co-authored-by: Tushar Mathur Co-authored-by: amitsingh Co-authored-by: Brendan McKee Co-authored-by: kaushik143 Co-authored-by: zsfVishnu-d11 <66246684+zsfVishnu-d11@users.noreply.github.com> Co-authored-by: Scala Steward <43047562+scala-steward@users.noreply.github.com> Co-authored-by: sumawa Co-authored-by: Sumant Awasthi Co-authored-by: James Beem Co-authored-by: Dino Babu John <66246799+dinojohn@users.noreply.github.com> Co-authored-by: Dino John Co-authored-by: AshPrakasan Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: RAJKUMAR NATARAJAN Co-authored-by: Roberto Leibman Co-authored-by: Roberto Leibman Co-authored-by: Shrey Mehta <36622672+smehta91@users.noreply.github.com> Co-authored-by: ex0ns Co-authored-by: Guillaume Massé Co-authored-by: Nikolay Artamonov Co-authored-by: Nikolay Artamonov Co-authored-by: Gabriel Ciuloaica Co-authored-by: Jules Ivanic Co-authored-by: Dani Rey Co-authored-by: shrutiverma97 Co-authored-by: Olive Iosello <67493878+oliveiosello@users.noreply.github.com> --- docs/website/docs/v1.x/dsl/headers.md | 2 +- .../advanced-examples/middleware_basic_auth.md | 6 +++--- .../examples/advanced-examples/middleware_cors.md | 6 +++--- .../examples/advanced-examples/middleware_csrf.md | 4 ++-- .../examples/advanced-examples/stream-file.md | 6 +++--- .../examples/advanced-examples/stream-response.md | 8 +++----- docs/website/docs/v1.x/getting-started.md | 10 +++++----- docs/website/yarn.lock | 6 +++--- .../main/scala/example/AuthenticationClient.scala | 6 +++--- .../main/scala/example/AuthenticationServer.scala | 6 +++--- example/src/main/scala/example/StaticServer.scala | 2 +- project/Dependencies.scala | 2 +- zio-http/src/main/scala/zhttp/http/HttpData.scala | 2 +- .../main/scala/zhttp/http/middleware/Auth.scala | 2 +- zio-http/src/main/scala/zhttp/socket/Socket.scala | 2 +- .../test/scala/zhttp/http/ContentTypeSpec.scala | 2 +- .../src/test/scala/zhttp/service/ServerSpec.scala | 15 +++++++++++++++ 17 files changed, 50 insertions(+), 37 deletions(-) diff --git a/docs/website/docs/v1.x/dsl/headers.md b/docs/website/docs/v1.x/dsl/headers.md index f74b1fbab5..2cd797830d 100644 --- a/docs/website/docs/v1.x/dsl/headers.md +++ b/docs/website/docs/v1.x/dsl/headers.md @@ -155,7 +155,7 @@ val responseHeaders: Task[Headers] = Client.request(url).map(_.headers) _ <- Console.printLine { data } } yield () - override def run(args: List[String]): URIO[Any, ExitCode] = program.exitCode.provideLayer(env) + override def run(args: List[String]): UIO[ExitCode] = program.exitCode.provideLayer(env) } ``` diff --git a/docs/website/docs/v1.x/examples/advanced-examples/middleware_basic_auth.md b/docs/website/docs/v1.x/examples/advanced-examples/middleware_basic_auth.md index df18efb16e..c3b6a9b787 100644 --- a/docs/website/docs/v1.x/examples/advanced-examples/middleware_basic_auth.md +++ b/docs/website/docs/v1.x/examples/advanced-examples/middleware_basic_auth.md @@ -8,7 +8,7 @@ import zhttp.http._ import zhttp.service.Server import zio.{App, ExitCode, URIO} -object BasicAuth extends App { +object BasicAuth extends ZIOAppDefault { // Http app that requires a JWT claim val user: UHttpApp = Http.collect[Request] { case Method.GET -> !! / "user" / name / "greet" => @@ -19,8 +19,8 @@ object BasicAuth extends App { val app: UHttpApp = user @@ basicAuth("admin", "admin") // Run it like any simple app - override def run(args: List[String]): UIO[ExitCode] = - Server.start(8090, app).exitCode + override val run = + Server.start(8090, app) } ``` \ No newline at end of file diff --git a/docs/website/docs/v1.x/examples/advanced-examples/middleware_cors.md b/docs/website/docs/v1.x/examples/advanced-examples/middleware_cors.md index 5b6cce6fa8..5ad5057f91 100644 --- a/docs/website/docs/v1.x/examples/advanced-examples/middleware_cors.md +++ b/docs/website/docs/v1.x/examples/advanced-examples/middleware_cors.md @@ -5,7 +5,7 @@ import zhttp.http._ import zhttp.service.Server import zio._ -object HelloWorldWithCORS extends App { +object HelloWorldWithCORS extends ZIOAppDefault { // Create CORS configuration val config: CORSConfig = CORSConfig(allowedOrigins = _ == "dev", allowedMethods = Some(Set(Method.PUT, Method.DELETE))) @@ -18,7 +18,7 @@ object HelloWorldWithCORS extends App { } @@ cors(config) // Run it like any simple app - override def run(args: List[String]): UIO[ExitCode] = - Server.start(8090, app.silent).exitCode + override val run = + Server.start(8090, app.silent) } ``` \ No newline at end of file diff --git a/docs/website/docs/v1.x/examples/advanced-examples/middleware_csrf.md b/docs/website/docs/v1.x/examples/advanced-examples/middleware_csrf.md index d9bc79ead9..35244c4579 100644 --- a/docs/website/docs/v1.x/examples/advanced-examples/middleware_csrf.md +++ b/docs/website/docs/v1.x/examples/advanced-examples/middleware_csrf.md @@ -18,8 +18,8 @@ object CSRF extends App { } @@ csrfGenerate() // set x-csrf token cookie val app = publicApp ++ privateApp - override def run(args: List[String]): UIO[ExitCode] = - Server.start(8090, app).exitCode + override val run = + Server.start(8090, app) } ``` \ No newline at end of file diff --git a/docs/website/docs/v1.x/examples/advanced-examples/stream-file.md b/docs/website/docs/v1.x/examples/advanced-examples/stream-file.md index e96a387637..03cefe5039 100644 --- a/docs/website/docs/v1.x/examples/advanced-examples/stream-file.md +++ b/docs/website/docs/v1.x/examples/advanced-examples/stream-file.md @@ -8,7 +8,7 @@ import zio._ import java.io.File import java.nio.file.Paths -object FileStreaming extends App { +object FileStreaming extends ZIOAppDefault { // Create HTTP route val app = Http.collectHttp[Request] { @@ -26,8 +26,8 @@ object FileStreaming extends App { } // Run it like any simple app - override def run(args: List[String]): UIO[ExitCode] = - Server.start(8090, app.silent).exitCode + override val run = + Server.start(8090, app.silent) } ``` \ No newline at end of file diff --git a/docs/website/docs/v1.x/examples/advanced-examples/stream-response.md b/docs/website/docs/v1.x/examples/advanced-examples/stream-response.md index 5ef4516d83..2e45142173 100644 --- a/docs/website/docs/v1.x/examples/advanced-examples/stream-response.md +++ b/docs/website/docs/v1.x/examples/advanced-examples/stream-response.md @@ -9,12 +9,10 @@ import zio._ /** * Example to encode content using a ZStream */ -object StreamingResponse extends App { - override def run(args: List[String]): UIO[ExitCode] = { - +object StreamingResponse extends ZIOAppDefault { + override val run = // Starting the server (for more advanced startup configuration checkout `HelloWorldAdvanced`) - Server.start(8090, app.silent).exitCode - } + Server.start(8090, app.silent) // Create a message as a Chunk[Byte] val message = Chunk.fromArray("Hello world !\r\n".getBytes(HTTP_CHARSET)) diff --git a/docs/website/docs/v1.x/getting-started.md b/docs/website/docs/v1.x/getting-started.md index 061011de99..3188787f6d 100644 --- a/docs/website/docs/v1.x/getting-started.md +++ b/docs/website/docs/v1.x/getting-started.md @@ -25,7 +25,7 @@ An app can be made using any of the available constructors on `zhttp.Http`. ### Routing - For handling routes, Http Domain has a `collect` method that, accepts different requests and produces responses. Pattern matching on the route is supported by the framework + For handling routes, Http Domain has a `collect` method that, accepts different requests and produces responses. Pattern matching on the route is supported by the framework. The example below shows how to create routes: ```scala @@ -108,7 +108,7 @@ import zhttp.http._ object Spec extends ZIOSpecDefault { def spec = suite("http")( - testM("should be ok") { + test("should be ok") { val app = Http.ok val req = Request() assertM(app(req))(equalTo(Response.ok)) @@ -156,11 +156,11 @@ import zhttp.http._ import zhttp.service.Server import zio._ -object HelloWorld extends App { +object HelloWorld extends ZIOAppDefault { val app = Http.ok - override def run(args: List[String]): URIO[Any, ExitCode] = - Server.start(8090, app).exitCode + override val run = + Server.start(8090, app) } ``` diff --git a/docs/website/yarn.lock b/docs/website/yarn.lock index 493e7e51b6..b190a4a8ba 100644 --- a/docs/website/yarn.lock +++ b/docs/website/yarn.lock @@ -5731,9 +5731,9 @@ minimatch@3.0.4, minimatch@^3.0.4: brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== mixin-deep@^1.2.0: version "1.3.2" diff --git a/example/src/main/scala/example/AuthenticationClient.scala b/example/src/main/scala/example/AuthenticationClient.scala index 42e01bd733..113aa5ed40 100644 --- a/example/src/main/scala/example/AuthenticationClient.scala +++ b/example/src/main/scala/example/AuthenticationClient.scala @@ -2,7 +2,7 @@ package example import zhttp.http.Headers import zhttp.service.{ChannelFactory, Client, EventLoopGroup} -import zio.{ExitCode, UIO, ZIOAppDefault} +import zio._ object AuthenticationClient extends ZIOAppDefault { @@ -20,9 +20,9 @@ object AuthenticationClient extends ZIOAppDefault { // Once the jwt token is procured, adding it as a Barer token in Authorization header while accessing a protected route. response <- Client.request(s"${url}/user/userName/greet", headers = Headers.bearerAuthorizationHeader(token)) body <- response.bodyAsString - _ <- zio.Console.printLine(body) + _ <- Console.printLine(body) } yield () - val run: UIO[ExitCode] = program.exitCode.provideLayer(env) + override val run = program.provideLayer(env) } diff --git a/example/src/main/scala/example/AuthenticationServer.scala b/example/src/main/scala/example/AuthenticationServer.scala index e70ea343e3..28f42ee631 100644 --- a/example/src/main/scala/example/AuthenticationServer.scala +++ b/example/src/main/scala/example/AuthenticationServer.scala @@ -4,7 +4,7 @@ import pdi.jwt.{Jwt, JwtAlgorithm, JwtClaim} import zhttp.http.Middleware.bearerAuth import zhttp.http._ import zhttp.service.Server -import zio.{ExitCode, UIO, ZIOAppDefault} +import zio.{Clock => _, _} import java.time.Clock @@ -52,6 +52,6 @@ object AuthenticationServer extends ZIOAppDefault { val app: UHttpApp = login ++ user // Run it like any simple app - val run: UIO[ExitCode] = - Server.start(8090, app).exitCode + override val run = + Server.start(8090, app) } diff --git a/example/src/main/scala/example/StaticServer.scala b/example/src/main/scala/example/StaticServer.scala index 8d37c08b75..e901f1a105 100644 --- a/example/src/main/scala/example/StaticServer.scala +++ b/example/src/main/scala/example/StaticServer.scala @@ -10,7 +10,7 @@ object StaticServer extends ZIOAppDefault { // A simple app to serve static resource files from a local directory. val app = Http.collectHttp[Request] { case Method.GET -> "static" /: path => for { - file <- Http.getResourceAsFile(path.encode) + file <- Http.getResourceAsFile(path.encode.tail) http <- // Rendering a custom UI to list all the files in the directory if (file.isDirectory) { diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 63c999da96..17472e2939 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -1,7 +1,7 @@ import sbt._ object Dependencies { - val JwtCoreVersion = "9.0.4" + val JwtCoreVersion = "9.0.5" val NettyVersion = "4.1.75.Final" val NettyIncubatorVersion = "0.0.13.Final" val ScalaCompactCollectionVersion = "2.7.0" diff --git a/zio-http/src/main/scala/zhttp/http/HttpData.scala b/zio-http/src/main/scala/zhttp/http/HttpData.scala index ba945b18a3..66e3c3255b 100644 --- a/zio-http/src/main/scala/zhttp/http/HttpData.scala +++ b/zio-http/src/main/scala/zhttp/http/HttpData.scala @@ -200,7 +200,7 @@ object HttpData { private[zhttp] final case class BinaryChunk(data: Chunk[Byte]) extends Complete { - private def encode = Unpooled.wrappedBuffer(data.toArray) + private def encode: ByteBuf = Unpooled.wrappedBuffer(data.toArray) /** * Encodes the HttpData into a ByteBuf. diff --git a/zio-http/src/main/scala/zhttp/http/middleware/Auth.scala b/zio-http/src/main/scala/zhttp/http/middleware/Auth.scala index ff3d889da6..f9237b4728 100644 --- a/zio-http/src/main/scala/zhttp/http/middleware/Auth.scala +++ b/zio-http/src/main/scala/zhttp/http/middleware/Auth.scala @@ -4,7 +4,7 @@ import io.netty.handler.codec.http.HttpHeaderNames import zhttp.http.Headers.{BasicSchemeName, BearerSchemeName} import zhttp.http._ import zhttp.http.middleware.Auth.Credentials -import zio.ZIO +import zio._ private[zhttp] trait Auth { diff --git a/zio-http/src/main/scala/zhttp/socket/Socket.scala b/zio-http/src/main/scala/zhttp/socket/Socket.scala index 8c7396a9cb..f442b6d68a 100644 --- a/zio-http/src/main/scala/zhttp/socket/Socket.scala +++ b/zio-http/src/main/scala/zhttp/socket/Socket.scala @@ -85,7 +85,7 @@ object Socket { */ def empty: Socket[Any, Nothing, Any, Nothing] = Socket.Empty - def end: ZStream[Any, Nothing, Nothing] = ZStream.failCause(Cause.empty) + def end: Socket[Any, Nothing, Any, Nothing] = Socket.End def fromFunction[A]: PartialFromFunction[A] = new PartialFromFunction[A](()) diff --git a/zio-http/src/test/scala/zhttp/http/ContentTypeSpec.scala b/zio-http/src/test/scala/zhttp/http/ContentTypeSpec.scala index e4c83f127f..8a4bdbc3d6 100644 --- a/zio-http/src/test/scala/zhttp/http/ContentTypeSpec.scala +++ b/zio-http/src/test/scala/zhttp/http/ContentTypeSpec.scala @@ -3,10 +3,10 @@ package zhttp.http import zhttp.internal.{DynamicServer, HttpRunnableSpec} import zhttp.service.server.ServerChannelFactory import zhttp.service.{ChannelFactory, EventLoopGroup} +import zio._ import zio.test.Assertion.{equalTo, isNone, isSome} import zio.test.TestAspect.timeout import zio.test.assertM -import zio.{Scope, durationInt} object ContentTypeSpec extends HttpRunnableSpec { diff --git a/zio-http/src/test/scala/zhttp/service/ServerSpec.scala b/zio-http/src/test/scala/zhttp/service/ServerSpec.scala index 20e05b1ba6..2d9d41599f 100644 --- a/zio-http/src/test/scala/zhttp/service/ServerSpec.scala +++ b/zio-http/src/test/scala/zhttp/service/ServerSpec.scala @@ -83,6 +83,21 @@ object ServerSpec extends HttpRunnableSpec { assertM(res)(isSome(anything)) } } + + suite("die") { + val app = Http.die(new Error("SERVER_ERROR")) + test("status is 500") { + val res = app.deploy.status.run() + assertM(res)(equalTo(Status.InternalServerError)) + } + + test("content is set") { + val res = app.deploy.bodyAsString.run() + assertM(res)(containsString("SERVER_ERROR")) + } + + test("header is set") { + val res = app.deploy.headerValue(HeaderNames.contentLength).run() + assertM(res)(isSome(anything)) + } + } + suite("echo content") { val app = Http.collectZIO[Request] { case req => req.bodyAsString.map(text => Response.text(text))