Skip to content

Instantly share code, notes, and snippets.

@abdheshkumar
Last active August 22, 2017 13:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abdheshkumar/f1e7f0f61daaebebfdbcab6a129aa9b2 to your computer and use it in GitHub Desktop.
Save abdheshkumar/f1e7f0f61daaebebfdbcab6a129aa9b2 to your computer and use it in GitHub Desktop.
ScalaJs facades
@js.native
trait Auth extends js.Object {
val byToken: js.UndefOr[LoginWithSSOToken] = js.undefined
val byCredentials: js.UndefOr[LoginWithPlainText] = js.undefined
}
object Auth {
def apply(authType: AuthType): Auth = authType match {
case byToken: LoginWithSSOToken => js.Dynamic.literal(byToken = byToken).asInstanceOf[Auth]
case byCredentials: LoginWithPlainText => js.Dynamic.literal(byCredentials = byCredentials).asInstanceOf[Auth]
}
}
@ScalaJSDefined
sealed trait AuthType extends js.Object
@js.native
trait LoginWithPlainText extends AuthType {
val name: String = js.native
val password: String = js.native
val organization: js.UndefOr[String] = js.undefined
val timezone: js.UndefOr[String] = js.undefined
}
object LoginWithPlainText {
def apply(name: String,
password: String,
organization: js.UndefOr[String] = js.undefined,
timezone: js.UndefOr[String] = js.undefined): LoginWithPlainText =
js.Dynamic.literal(name = name, password = password, organization = organization, timezone = timezone)
.asInstanceOf[LoginWithPlainText]
}
@js.native
trait LoginWithSSOToken extends AuthType {
val token: String = js.native
val preAuth: js.UndefOr[Boolean] = js.undefined
val tokenName: js.UndefOr[String] = js.undefined
}
object LoginWithSSOToken {
def apply(token: String,
preAuth: js.UndefOr[Boolean] = js.undefined,
tokenName: js.UndefOr[String] = js.undefined): LoginWithSSOToken =
js.Dynamic.literal(token = token, preAuth = preAuth, tokenName = tokenName)
.asInstanceOf[LoginWithSSOToken]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment