gs-blob/src/main/scala/gs/blob/v0/Blob.scala

32 lines
703 B
Scala

package gs.blob.v0
import java.util.Base64
opaque type Blob = Array[Byte]
object Blob:
private val Hex: String = "0123456789abcdef";
def apply(data: Array[Byte]): Blob = data
given CanEqual[Blob, Blob] = CanEqual.derived
extension (blob: Blob)
def toByteArray(): Array[Byte] = blob
def toBase64(): String = Base64.getEncoder().encodeToString(blob)
// TODO: Hex library
def toHex(): String =
var index = 0
val ch: Array[Char] = new Array(blob.length * 2)
blob.foreach { byte =>
ch(index) = Hex.charAt((byte & 0xf0) >> 4)
ch(index + 1) = Hex.charAt(byte & 0x0f)
index = index + 2
}
new String(ch)
end Blob