finch
finch copied to clipboard
Scala combinator library for building Finagle HTTP services
Also add `Endpoint.output` constructor and reuse it. Convert some instances to SAM syntax.
Closes #808 - I didn't add the `validated` method, because it's nothing more than `mapAsync(validator(_).liftTo[F])` now that we have removed `RequestItem`
Related to #1078 `Observable` doesn't have the right kind but I think I managed to find decent workaround using ```scala type ObservableF[F[_], A] = Observable[A] // coproducts were inferring `Observable[A]`...
Done: - Get rid of `HList` in favor of new `Tuple` - Get rid of `Witness.T` in favor of native literal types & `ValueOf` - Get rid of magnet pattern...
Controlled by a flag in `Bootstrap` similar to other response codes. Returns 406 when enabled and no matching Accept header is found. Refactors `ToResponse.Negotiable` to achieve this effect: - Value...
- Replace deprecated `sonatypeRepo` resolver with `sonatypeOssRepos` - Ensure file source and writer are closed - Exclude `siteSubdirName` from lint keys to suppress warning - Update `joda-time` dependency
Updates [org.scoverage:sbt-scoverage](https://github.com/scoverage/sbt-scoverage) from 1.9.3 to 2.0.2. [GitHub Release Notes](https://github.com/scoverage/sbt-scoverage/releases/tag/v2.0.2) - [Version Diff](https://github.com/scoverage/sbt-scoverage/compare/v1.9.3...v2.0.2) I'll automatically update this PR to resolve conflicts as long as you don't change it yourself. If you'd...
Updates * [org.scala-lang:scala-library](https://github.com/scala/scala) * [org.scala-lang:scala-reflect](https://github.com/scala/scala) from 2.12.15 to 2.12.16. [GitHub Release Notes](https://github.com/scala/scala/releases/tag/v2.12.16) - [Version Diff](https://github.com/scala/scala/compare/v2.12.15...v2.12.16) I'll automatically update this PR to resolve conflicts as long as you don't change it...
A common pattern to initiate listening server from service: ```scala def serve(service: Service[Request, Response]): Resource[IO, ListeningServer] = Resource.make(IO(Http.server.serve(":8081", service))) { server => IO.defer(implicitly[ToAsync[Future, IO]].apply(server.close())) } ``` We may add an...