diff --git a/build.sbt b/build.sbt index 74134b7c..33c51ecb 100644 --- a/build.sbt +++ b/build.sbt @@ -21,7 +21,6 @@ val commonSettings = commonSmlBuildSettings ++ ossPublishSettings ++ Seq( ) val commonJvmSettings = commonSettings ++ Seq( - scalacOptions ++= Seq("-target:jvm-1.8"), ideSkipProject := (scalaVersion.value != scala2_13), libraryDependencies ++= Seq( "org.scalatest" %% "scalatest" % scalaTestVersion % Test diff --git a/core/src/main/scalanative/sttp/model/internal/idn/IdnApi.scala b/core/src/main/scalanative-2.12/sttp/model/internal/idn/IdnApi.scala similarity index 100% rename from core/src/main/scalanative/sttp/model/internal/idn/IdnApi.scala rename to core/src/main/scalanative-2.12/sttp/model/internal/idn/IdnApi.scala diff --git a/core/src/main/scalanative-2.13/sttp/model/internal/idn/IdnApi.scala b/core/src/main/scalanative-2.13/sttp/model/internal/idn/IdnApi.scala new file mode 100644 index 00000000..8bb72d7a --- /dev/null +++ b/core/src/main/scalanative-2.13/sttp/model/internal/idn/IdnApi.scala @@ -0,0 +1,21 @@ +package sttp.model.internal.idn + +import scala.scalanative.libc.stdlib.{malloc, free} +import scala.scalanative.unsafe.{CString, Ptr, Zone, fromCString, sizeof, toCString} + +private[model] object IdnApi { + def toAscii(input: String): String = + Zone { implicit z => + val output: Ptr[CString] = malloc(sizeof[CString]).asInstanceOf[Ptr[CString]] + val rc = CIdn.toAscii(toCString(input), output, 0) + if (rc != 0) { + val errMsg = CIdn.errorMsg(rc) + throw new RuntimeException(fromCString(errMsg)) + } else { + val out = fromCString(!output) + CIdn.free(!output) + free(output.asInstanceOf[Ptr[Byte]]) + out + } + } +} diff --git a/core/src/main/scalanative-3/sttp/model/internal/idn/IdnApi.scala b/core/src/main/scalanative-3/sttp/model/internal/idn/IdnApi.scala new file mode 100644 index 00000000..d1db1836 --- /dev/null +++ b/core/src/main/scalanative-3/sttp/model/internal/idn/IdnApi.scala @@ -0,0 +1,21 @@ +package sttp.model.internal.idn + +import scala.scalanative.libc.stdlib.{malloc, free} +import scala.scalanative.unsafe.{CString, Ptr, Zone, fromCString, sizeof, toCString} + +private[model] object IdnApi { + def toAscii(input: String): String = + Zone { + val output: Ptr[CString] = malloc(sizeof[CString]).asInstanceOf[Ptr[CString]] + val rc = CIdn.toAscii(toCString(input), output, 0) + if (rc != 0) { + val errMsg = CIdn.errorMsg(rc) + throw new RuntimeException(fromCString(errMsg)) + } else { + val out = fromCString(!output) + CIdn.free(!output) + free(output.asInstanceOf[Ptr[Byte]]) + out + } + } +} diff --git a/project/plugins.sbt b/project/plugins.sbt index c05dd569..21b50e42 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,6 +1,6 @@ libraryDependencies += "org.scala-js" %% "scalajs-env-selenium" % "1.1.1" addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0") -addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.17") +addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.1") addSbtPlugin("com.eed3si9n" % "sbt-projectmatrix" % "0.10.0") val sbtSoftwareMillVersion = "2.0.20"