Skip to content
Open
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions jsdomClient/src/main/scala/HttpRpcTransport.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import cats.implicits._
import sloth.{Request, RequestTransport}
import org.scalajs.dom

import scala.scalajs.js
import scala.scalajs.js.JSConverters._

case class HttpRequestConfig(
Expand All @@ -18,10 +17,12 @@ object HttpRpcTransport {

def apply[F[_]: Async](config: F[HttpRequestConfig]): RequestTransport[String, F] = new RequestTransport[String, F] {
override def apply(request: Request[String]): F[String] = for {
config <- config
url = s"${config.baseUri}/${request.method.traitName}/${request.method.methodName}"
config <- config
url = s"${config.baseUri}/${request.method.traitName}/${request.method.methodName}"
requestArgs = new dom.RequestInit { headers = config.headers.toJSDictionary; method = dom.HttpMethod.POST; body = request.payload }
result <- Async[F].fromThenable(Async[F].delay[js.Thenable[String]](dom.fetch(url, requestArgs).`then`[String](_.text())))
response <- Async[F].fromPromise(Async[F].delay(dom.fetch(url, requestArgs)))
_ <- Async[F].raiseWhen(!response.ok)(new Exception(s"HTTP error ${response.status}"))
Comment thread
fdietze marked this conversation as resolved.
Outdated
result <- Async[F].fromPromise(Async[F].delay(response.text()))
} yield result
}
}