-
Notifications
You must be signed in to change notification settings - Fork 3
/
VcVerificationControllerImpl.scala
46 lines (41 loc) · 1.49 KB
/
VcVerificationControllerImpl.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package io.iohk.atala.verification.controller
import io.iohk.atala.api.http.{ErrorResponse, RequestContext}
import io.iohk.atala.pollux.core.service.verification.{VcVerification, VcVerificationRequest, VcVerificationService}
import io.iohk.atala.verification.controller
import zio.*
class VcVerificationControllerImpl(vcVerificationService: VcVerificationService) extends VcVerificationController {
override def verify(
requests: List[controller.http.VcVerificationRequest]
)(implicit rc: RequestContext): IO[ErrorResponse, List[controller.http.VcVerificationResponse]] = {
val serviceRequests =
requests.map(request => {
val verifications =
if (request.verifications.isEmpty)
VcVerification.values.toList
else
request.verifications
VcVerificationRequest(
credential = request.credential,
verifications = verifications
)
})
for {
results <-
vcVerificationService
.verify(serviceRequests)
.mapError(error => VcVerificationController.toHttpError(error))
} yield results.map(result =>
controller.http.VcVerificationResponse(
result.credential,
result.checks,
result.successfulChecks,
result.failedChecks,
result.failedAsWarningChecks
)
)
}
}
object VcVerificationControllerImpl {
val layer: URLayer[VcVerificationService, VcVerificationController] =
ZLayer.fromFunction(VcVerificationControllerImpl(_))
}