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

hammock.hi.Auth.scala Maven / Gradle / Ivy

The newest version!
package hammock
package hi

import java.util.Base64
import cats._
import cats.implicits._

sealed trait Auth
object Auth {
  case class BasicAuth(user: String, pass: String) extends Auth
  case class OAuth2Bearer(token: String)           extends Auth
  case class OAuth2Token(token: String)            extends Auth

  implicit val authShow = new Show[Auth] {
    def show(a: Auth): String = a match {
      case BasicAuth(user, pass) =>
        val toEncode = s"$user:$pass".getBytes
        val encoded  = Base64.getEncoder.encode(toEncode)
        s"Basic ${new String(encoded)}"
      case OAuth2Bearer(token) => s"Bearer $token"
      case OAuth2Token(token)  => s"token $token"
    }
  }

  implicit val authEq = new Eq[Auth] {
    def eqv(a: Auth, b: Auth): Boolean = (a, b) match {
      case (BasicAuth(u1, p1), BasicAuth(u2, p2)) => u1 === u2 && p1 === p2
      case (OAuth2Bearer(t1), OAuth2Bearer(t2)) => t1 === t2
      case (OAuth2Token(t1), OAuth2Token(t2)) => t1 === t2
      case _ => false
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy