Skip to content

Instantly share code, notes, and snippets.

View adamw's full-sized avatar

Adam Warski adamw

View GitHub Profile
import monix.reactive.Observable
import sttp.capabilities.monix.MonixStreams
object Test extends App {
import sttp.client3._
import monix.execution.Scheduler.Implicits.global
val b = AsyncHttpClientMonixBackend().runSyncUnsafe()
basicRequest.post(uri"http://198.51.100.0").streamBody(MonixStreams)(Observable.empty).send(b).runSyncUnsafe()
package sttp.tapir.server.http4s.ztapir
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers
import sttp.monad.MonadError
import zio.{Has, RIO, Runtime, ZIO}
import zio.interop.catz._
import zio.interop.catz.implicits._
import sttp.tapir._
import sttp.tapir.server.ServerEndpoint
@adamw
adamw / workshop.md
Last active October 11, 2020 07:57

Functional Scala CRUD

We'll be adding a feature to Bootzooka, a skeleton Scala microservice/web application project.

This will involve using doobie, monix, tapir, http4s, circe and compile-time dependency injection.

If you'd like to follow along:

  1. make sure you have Java & sbt installed. You can use sdkman for Java and popular package manages for sbt (e.g. brew)
  2. git clone https://github.com/softwaremill/bootzooka.git
@adamw
adamw / ws.scala
Last active September 16, 2020 16:59
package sttp.client3.examples
import monix.eval.Task
import sttp.capabilities.WebSockets
import sttp.capabilities.monix.MonixStreams
import sttp.client3._
import sttp.client3.asynchttpclient.monix.AsyncHttpClientMonixBackend
import sttp.client3.testing.SttpBackendStub
import sttp.model.StatusCode
import sttp.ws.{WebSocket, WebSocketFrame}
@adamw
adamw / json.scala
Last active September 16, 2020 16:59
package sttp.client3.examples
import io.circe.generic.auto._
import sttp.client3._
import sttp.client3.asynchttpclient.monix.AsyncHttpClientMonixBackend
import sttp.client3.circe._
object GetAndParseJsonGetRightMonixCirce extends App {
import monix.execution.Scheduler.Implicits.global
@adamw
adamw / raw.scala
Last active September 16, 2020 16:59
package sttp.client3.examples
import io.circe
import io.circe.generic.auto._
import sttp.client3._
import sttp.client3.circe._
object GetRawRequestBodySynchronous extends App {
case class HttpBinResponse(origin: String, headers: Map[String, String])
@adamw
adamw / streams.scala
Last active September 16, 2020 16:59
package sttp.client3.examples
import sttp.capabilities.zio.ZioStreams
import sttp.client3._
import sttp.client3.asynchttpclient.zio.{AsyncHttpClientZioBackend, SttpClient}
import zio._
import zio.console._
import zio.stream._
object StreamZio extends App {
@adamw
adamw / ws.scala
Last active September 16, 2020 16:59
package sttp.client3.examples
import cats.effect.{ContextShift, IO}
import fs2._
import sttp.capabilities.fs2.Fs2Streams
import sttp.client3._
import sttp.client3.asynchttpclient.fs2.AsyncHttpClientFs2Backend
import sttp.ws.WebSocketFrame
object WebSocketStreamFs2 extends App {
@adamw
adamw / ws.scala
Last active September 16, 2020 16:58
package sttp.client3.examples
import sttp.client3._
import sttp.client3.akkahttp.AkkaHttpBackend
import sttp.ws.WebSocket
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
object WebSocketAkka extends App {
package sttp.client.examples
import sttp.client._
import sttp.client.asynchttpclient.fs2.AsyncHttpClientFs2Backend
import cats.effect.{ContextShift, IO}
import cats.instances.string._
import fs2.{Stream, text}
import sttp.capabilities.fs2.Fs2Streams
object StreamFs2 extends App {