diff --git a/tapir/js/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala b/tapir/js/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala new file mode 100644 index 0000000..9534d20 --- /dev/null +++ b/tapir/js/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala @@ -0,0 +1,22 @@ +package works.iterative.tapir + +import zio.* + +trait BaseUriPlatformSpecific: + def fromLocation: BaseUri = BaseUri( + org.scalajs.dom.window.location.href + .split("/") + .dropRight(1) + .mkString("/") + ) + + def fromLocation(upTo: String): BaseUri = BaseUri( + org.scalajs.dom.window.location.href + .split("/") + .takeWhile(_ != upTo) + .mkString("/") + ) + + val layer: ULayer[BaseUri] = ZLayer.succeed(fromLocation) + def layer(upTo: String): ULayer[BaseUri] = + ZLayer.succeed(fromLocation(upTo)) diff --git a/tapir/js/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala b/tapir/js/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala new file mode 100644 index 0000000..9534d20 --- /dev/null +++ b/tapir/js/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala @@ -0,0 +1,22 @@ +package works.iterative.tapir + +import zio.* + +trait BaseUriPlatformSpecific: + def fromLocation: BaseUri = BaseUri( + org.scalajs.dom.window.location.href + .split("/") + .dropRight(1) + .mkString("/") + ) + + def fromLocation(upTo: String): BaseUri = BaseUri( + org.scalajs.dom.window.location.href + .split("/") + .takeWhile(_ != upTo) + .mkString("/") + ) + + val layer: ULayer[BaseUri] = ZLayer.succeed(fromLocation) + def layer(upTo: String): ULayer[BaseUri] = + ZLayer.succeed(fromLocation(upTo)) diff --git a/tapir/jvm/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala b/tapir/jvm/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala new file mode 100644 index 0000000..4834683 --- /dev/null +++ b/tapir/jvm/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala @@ -0,0 +1,3 @@ +package works.iterative.tapir + +trait BaseUriPlatformSpecific diff --git a/tapir/js/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala b/tapir/js/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala new file mode 100644 index 0000000..9534d20 --- /dev/null +++ b/tapir/js/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala @@ -0,0 +1,22 @@ +package works.iterative.tapir + +import zio.* + +trait BaseUriPlatformSpecific: + def fromLocation: BaseUri = BaseUri( + org.scalajs.dom.window.location.href + .split("/") + .dropRight(1) + .mkString("/") + ) + + def fromLocation(upTo: String): BaseUri = BaseUri( + org.scalajs.dom.window.location.href + .split("/") + .takeWhile(_ != upTo) + .mkString("/") + ) + + val layer: ULayer[BaseUri] = ZLayer.succeed(fromLocation) + def layer(upTo: String): ULayer[BaseUri] = + ZLayer.succeed(fromLocation(upTo)) diff --git a/tapir/jvm/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala b/tapir/jvm/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala new file mode 100644 index 0000000..4834683 --- /dev/null +++ b/tapir/jvm/src/main/scala/works/iterative/tapir/BaseUriPlatformSpecific.scala @@ -0,0 +1,3 @@ +package works.iterative.tapir + +trait BaseUriPlatformSpecific diff --git a/tapir/shared/src/main/scala/works/iterative/tapir/BaseUri.scala b/tapir/shared/src/main/scala/works/iterative/tapir/BaseUri.scala index a8d4d4d..278bfde 100644 --- a/tapir/shared/src/main/scala/works/iterative/tapir/BaseUri.scala +++ b/tapir/shared/src/main/scala/works/iterative/tapir/BaseUri.scala @@ -5,7 +5,8 @@ case class BaseUri(value: Option[Uri]) -object BaseUri: +object BaseUri extends BaseUriPlatformSpecific: + def apply(s: String): BaseUri = BaseUri(Some(uri"$s")) def apply(u: Uri): BaseUri = BaseUri(Some(u)) extension (v: BaseUri) def toUri: Option[Uri] = v.value