Simple service example
See also: https://github.com/walt-id/waltid-storage-kit/blob/master/src/main/kotlin/id/walt/storagekit/service/ServiceTest.kt This is a simple service that generates a data request (which is printed to the terminal), and handles acceptance of such data requests.
fun main() {
    ServiceMatrix("service-matrix.properties")
    val requests = HashMap<String, DataRequest>()
    println("[Service example]")
    println()
    println("Setting up service...")
    val keyService = KeyService.getService()
    println("Creating key pair...")
    val keyId = keyService.generate(KeyAlgorithm.EdDSA_Ed25519)
    println()
    println("Key pair created: $keyId")
    val pem = keyService.toPem(keyId.id, KeyType.PUBLIC)
    println("New public key:")
    println(pem)
    println()
    println("Creating service DID...")
    val did = DidService.create(DidMethod.key, keyId.id)
    println("New service DID: $did")
    Javalin.create {
        it.enableDevLogging()
    }.routes {
        post("/accept-request/{id}") {
            val resp = it.bodyAsClass<DataResponse>()
            println("Our request was accepted, querying EDV...")
            //println(resp)
            val baseUrl = resp.baseUrl
            val edvId = resp.edvId
            val docId = resp.filesIndex.keys.first()
            val zcap = resp.capabilities.first()
            val fileKey = resp.filesIndex.values.first()
            val doc = retrieveDocument(edvId, docId, Base58.decode(fileKey), baseUrl, zcap, did)
            println(doc.toString())
        }
    }.start(8000)
    println()
    println("-------------")
    println("Generating data request...")
    val reqId = UUID.randomUUID().toString()
    val req = DataRequest("Job application", "EuropassCredential", did, "http://localhost:8000/accept-request/$reqId")
    requests[reqId] = req
    println("Data request $reqId:")
    val json = Klaxon().toJsonString(req)
    val signed = JwtService.getService().sign(keyId.id, json)
    println("JWS: $signed")
}Last updated
Was this helpful?
