• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hyperledger / identus-cloud-agent / 10793991050

10 Sep 2024 01:56PM CUT coverage: 48.504% (-4.5%) from 52.962%
10793991050

push

web-flow
build: sbt and plugins dependency update (#1337)

Signed-off-by: Hyperledger Bot <hyperledger-bot@hyperledger.org>
Signed-off-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io>
Co-authored-by: Hyperledger Bot <hyperledger-bot@hyperledger.org>
Co-authored-by: Yurii Shynbuiev <yurii.shynbuiev@iohk.io>

7406 of 15269 relevant lines covered (48.5%)

0.49 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/pollux/vc-jwt/src/main/scala/org/hyperledger/identus/pollux/vc/jwt/MultiBaseString.scala
1
package org.hyperledger.identus.pollux.vc.jwt
2

3
import io.circe.*
4
import org.hyperledger.identus.shared.utils.Base64Utils
5
import scodec.bits.ByteVector
6

7
case class MultiBaseString(header: MultiBaseString.Header, data: String) {
8
  def toMultiBaseString: String = s"${header.value}$data"
×
9

10
  def getBytes: Either[String, Array[Byte]] = header match {
×
11
    case MultiBaseString.Header.Base64Url => Right(Base64Utils.decodeURL(data))
×
12
    case MultiBaseString.Header.Base58Btc =>
×
13
      ByteVector.fromBase58(data).map(_.toArray).toRight(s"Invalid base58 string: $data")
×
14
  }
15
}
16

17
object MultiBaseString {
18
  enum Header(val value: Char) {
19
    case Base64Url extends Header('u')
20
    case Base58Btc extends Header('z')
21
  }
22

23
  def fromString(str: String): Either[String, MultiBaseString] = {
×
24
    val header = Header.fromValue(str.head)
×
25
    header match {
26
      case Some(value) => Right(MultiBaseString(value, str.tail))
×
27
      case None        => Left(s"$str - is not a multi base string")
×
28
    }
29
  }
30

31
  object Header {
32
    def fromValue(value: Char): Option[Header] = value match {
×
33
      case 'u' => Some(Header.Base64Url)
×
34
      case 'z' => Some(Header.Base58Btc)
×
35
      case _   => None
×
36
    }
37
  }
38

39
  given multiBaseStringEncoder: Encoder[MultiBaseString] = (multiBaseString: MultiBaseString) =>
40
    Json.fromString(multiBaseString.toMultiBaseString)
×
41

42
  given multiBaseStringDecoder: Decoder[MultiBaseString] = (c: HCursor) =>
43
    Decoder.decodeString(c).flatMap { str =>
×
44
      val header = MultiBaseString.Header.fromValue(str.head)
×
45
      header match {
46
        case Some(value) => Right(MultiBaseString(value, str.tail))
×
47
        case None        => Left(DecodingFailure(s"no enum value matched for $str", List(CursorOp.Field(str))))
×
48
      }
49
    }
50
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc