Skip to content

Commit

Permalink
Add attributeKeys.
Browse files Browse the repository at this point in the history
  • Loading branch information
yspreen committed Apr 21, 2021
1 parent 0b0a371 commit 364088c
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 56 deletions.
84 changes: 30 additions & 54 deletions PatientScannerDemo/Models/HCert.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,33 @@ enum ClaimKey: String {
case EU_DGC_V1 = "1"
}

enum AttributeKey: String {
case firstName
case lastName
}

let attributeKeys: [AttributeKey: [String]] = [
.firstName: ["sub", "gn"],
.lastName: ["sub", "fn"],
]

struct InfoSection {
var header: String
var content: String
}

struct HCert {
static let supportedPrefixes = [
"HC1:"
]

mutating func parseBodyV1() -> Bool {
let schema = JSON(parseJSON: EU_DGC_SCHEMA_V1).dictionaryObject!
let bodyDict = body.dictionaryObject!
guard
let schema = JSON(parseJSON: EU_DGC_SCHEMA_V1).dictionaryObject,
let bodyDict = body.dictionaryObject
else {
return false
}

guard
let validation = try? validate(bodyDict, schema: schema)
Expand Down Expand Up @@ -63,67 +81,25 @@ struct HCert {
print("Wrong EU_DGC Version!")
return nil
}
// body = JSON(parseJSON: """
// {
// "vac" : [
// {
// "seq" : 1,
// "lot" : "C22-862FF-001",
// "dis" : "840539006",
// "adm" : "Vaccination centre Vienna 23",
// "vap" : "1119305005",
// "mep" : "EU\\/1\\/20\\/1528",
// "tot" : 2,
// "aut" : "ORG-100030215",
// "dat" : "2021-02-18",
// "cou" : "AT"
// },
// {
// "seq" : 2,
// "lot" : "C22-H62FF-010",
// "dis" : "840539006",
// "adm" : "Vaccination centre Vienna 23",
// "vap" : "1119305005",
// "mep" : "EU\\/1\\/20\\/1528",
// "tot" : 2,
// "aut" : "ORG-100030215",
// "dat" : "2021-03-12",
// "cou" : "AT"
// }
// ],
// "cert" : {
// "id" : "01AT42196560275230427402470256520250042",
// "is" : "Ministry of Health, Austria",
// "vr" : "v1.0",
// "vf" : "2021-04-04",
// "vu" : "2021-10-04",
// "co" : "AT"
// },
// "sub" : {
// "gen" : "female",
// "dob" : "1998-02-26",
// "id" : [
// {
// "i" : "12345ABC-321",
// "t" : "PPN"
// }
// ],
// "gn" : "Gabriele",
// "fn" : "Musterfrau"
// }
// }
//""")
}

var header: JSON
var body: JSON

var fullName: String {
let first = body["sub"]["gn"].string ?? ""
let last = body["sub"]["fn"].string ?? ""
let first = get(.firstName).string ?? ""
let last = get(.lastName).string ?? ""
return "\(first) \(last)"
}

func get(_ attribute: AttributeKey) -> JSON {
var object = body
for key in attributeKeys[attribute] ?? [] {
object = object[key]
}
return object
}

var info: [InfoSection] {
[
InfoSection(header: "Test", content: "Test Test")
Expand Down
17 changes: 15 additions & 2 deletions PatientScannerDemo/ViewControllers/Scan.swift
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,22 @@ extension ScanVC {
func observationHandler(payloadS: String?) {
let payloadS: String? = payloadS ?? "HC1:NCFD:MFY7AP2.532EE3*45+G W84$2J85AUFA3QHN7SXNF$S-4THFSJFIMSKD3799U/LN71G32S0L43XHEIB*983A8RMF1/MMMIS6AQC0QNGU+I.AKYQKBPL%YA-ZVT28J3D+WNNL6SEV%GH$$3NRHO%L8BVLJBL:3F0AKIH3.1U2VS0WZLD75Q52EAENQ-HAYIXTGFH9%ZKA6Q$8A4J67E585MUDPCGCSY3SA7YPCPXCVDL-S0Z.CM6M7%H5POR-ACBI7MT3ZARJ7%S29G596OFMRF-65T6O*M.BJ3DI0W3%:ITBAF 9B1D3SQ$A5LOCTQQZ 40IPR:R3 PUXUN01XD8SJ62MRN$BV502.0HLGS/NXXJ AS.X5QZ2SGTEKLKHB4T8F%S664E02MH2F A.BH9+R7N6N5N.USZXL7DO2AIV2P0XU2.OPI6 C395EPMMGDAD4G-S1DC8ZVJT:3CR3-P8ZVGV8A$DD+*0/MH5+MPDO:L9IJ6MU278C924V:09%1MUQTR2FBL5 6CLODPT304L3GK6OT-7 97U*IO7J:1MB1EU0E.G3C/4P7FXRF-04F9O-9VREIPOSWTFU2W%2F4-B$CSSVNWKAHWJA4NCEU$KLU$GQ6OJ-97UN"
guard
let payloadString = payloadS,
var payloadString = payloadS
else {
return
}

for prefix in HCert.supportedPrefixes {
if payloadString.starts(with: prefix) {
payloadString = String(payloadString.dropFirst(prefix.count))
}
}

guard
let compressed = try? String(payloadString.dropFirst(4)).fromBase45()
else { return }
else {
return
}

let data = decompress(compressed)
// let payload = CBOR.payload(from: data)
Expand Down

0 comments on commit 364088c

Please sign in to comment.