All Downloads are FREE. Search and download functionalities are using the official Maven repository.

rxscalajs.dom.Ajax.scala Maven / Gradle / Ivy

package rxscalajs.dom

import org.scalajs.dom.XMLHttpRequest

import scala.scalajs.js
import scala.scalajs.js.JSON


final case class Request(url: String,
                         data: String = "",
                         timeout: Int = 0,
                         headers: Map[String, String] = Map.empty,
                         crossDomain: Boolean = false,
                         responseType: String = "",
                         method: String = "GET")

final case class Response(body: String, status: Int, responseType: String, xhr: XMLHttpRequest, response: js.Dynamic)

object Ajax {
  import scala.scalajs.js.JSConverters._
  def toJsRequest(request: Request): AjaxRequest = {
    js.Dynamic.literal(
      url = request.url,
      body = request.data,
      timeout = request.timeout,
      headers = request.headers.toJSDictionary,
      crossDomain = request.crossDomain,
      responseType = request.responseType,
      method = request.method
    ).asInstanceOf[AjaxRequest]
  }

  def fromJsResponse(response: AjaxResponse): Response = {
    val body = response.responseText.getOrElse{
      if (response.responseType == "json") JSON.stringify(response.response)
      else response.response.toString
    }
    Response(
      body,
      response.status.toInt,
      response.responseType,
      response.xhr,
      response.response.asInstanceOf[js.Dynamic]
    )
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy