diff --git a/src/components/scan.js b/src/components/scan.js index 30feb17..5f4d005 100644 --- a/src/components/scan.js +++ b/src/components/scan.js @@ -1,6 +1,7 @@ import React from "react"; import PropTypes from 'prop-types'; -import {beep, CODE_TYPE, WORKER_TYPE} from "../helpers"; +import {beep, WORKER_TYPE} from "../helpers"; +import {CODE_TYPE} from "../transformers/base"; import {Upnqr} from "../transformers/upnqr"; import {Covid19} from "../transformers/covid19"; import "../css/scan.css"; diff --git a/src/helpers.js b/src/helpers.js index c2464d8..b87d43a 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -22,10 +22,4 @@ const WORKER_TYPE = { JS: "jsQr" }; -const CODE_TYPE = { - UPNQR: "UPNQR", - COVID19: "COVID", - RAW: "RAW" -}; - -export {beep, WORKER_TYPE, CODE_TYPE}; \ No newline at end of file +export {beep, WORKER_TYPE}; \ No newline at end of file diff --git a/src/transformers/base.js b/src/transformers/base.js new file mode 100644 index 0000000..c6730f6 --- /dev/null +++ b/src/transformers/base.js @@ -0,0 +1,25 @@ +class Transformer { + codeType() { + return "TODO"; + } + + identified(raw) { + return false; + } + + transform(raw) { + return "TODO"; + } + + static buttonCaption() { + return "TODO"; + } +} + +const CODE_TYPE = { + UPNQR: "UPNQR", + COVID19: "COVID", + RAW: "RAW" +}; + +export {Transformer, CODE_TYPE}; \ No newline at end of file diff --git a/src/transformers/covid19.js b/src/transformers/covid19.js index 7e625b3..f6099ef 100644 --- a/src/transformers/covid19.js +++ b/src/transformers/covid19.js @@ -1,11 +1,12 @@ -import {addCachedCerts, unpackAndVerify} from "@pathcheck/dcc-sdk"; -import {CODE_TYPE} from "../helpers"; import {cachedCerts} from "./certs"; +import {CODE_TYPE, Transformer} from "./base"; +import {addCachedCerts, unpackAndVerify} from "@pathcheck/dcc-sdk"; -class Covid19 { +class Covid19 extends Transformer { recognizer = "HC1:"; constructor() { + super(); addCachedCerts(cachedCerts); } @@ -31,8 +32,8 @@ class Covid19 { const record = cwtPayload.get(-260).get(1); const dob = record.dob; - const name = record.nam.fnt + "<<" + record.nam.gnt; - const national_name = record.nam.fn + " " + record.nam.gn; + const name = record["nam"]["fnt"] + "<<" + record["nam"]["gnt"]; + const national_name = record["nam"]["fn"] + " " + record["nam"]["gn"]; const vaccination = this.extractVaccine(record); const test = this.extractTest(record); @@ -42,25 +43,25 @@ class Covid19 { extractTest(record) { if (!record.t) return null; - const unique_cert_id = record.t[0].ci; - const issued_on = record.t[0].sc; - const issuer = record.t[0].is; - const test_type = record.t[0].tt; - const test_result = record.t[0].tr; - const country = record.t[0].co; + const unique_cert_id = record.t[0]["ci"]; + const issued_on = record.t[0]["sc"]; + const issuer = record.t[0]["is"]; + const test_type = record.t[0]["tt"]; + const test_result = record.t[0]["tr"]; + const country = record.t[0]["co"]; return {unique_cert_id, issued_on, issuer, test_type, test_result, country}; }; extractVaccine(record) { - if (!record.v) return null; - const unique_cert_id = record.v[0].ci; - const issued_on = record.v[0].dt; - const issuer = record.v[0].is; - const vaccine_type = record.v[0].mp; - const doses = record.v[0].dn; - const dose_series = record.v[0].sd; - const country = record.v[0].co; + if (!record["v"]) return null; + const unique_cert_id = record["v"][0]["ci"]; + const issued_on = record["v"][0]["dt"]; + const issuer = record["v"][0]["is"]; + const vaccine_type = record["v"][0]["mp"]; + const doses = record["v"][0]["dn"]; + const dose_series = record["v"][0]["sd"]; + const country = record["v"][0]["co"]; return {unique_cert_id, issued_on, issuer, vaccine_type, doses, dose_series, country}; }; @@ -84,7 +85,7 @@ class Covid19 { res += `Born: ${formatISO8601Date(json.dob)}\n`; if (json.vaccination) { - let vaccine_type = ""; + let vaccine_type; switch (json.vaccination.vaccine_type) { case "EU/1/20/1528": vaccine_type = "Comirnaty (Pfizer)"; @@ -110,7 +111,7 @@ class Covid19 { } if (json.test) { - let test_type = ""; + let test_type; switch (json.test.test_type) { case "LP217198-3": test_type = "Rapid immunoassay"; @@ -122,7 +123,7 @@ class Covid19 { test_type = json.test.test_type; } - let test_result = ""; + let test_result; switch (json.test.test_result) { case "260415000": test_result = "Negative"; diff --git a/src/transformers/upnqr.js b/src/transformers/upnqr.js index 152cc77..fb48a70 100644 --- a/src/transformers/upnqr.js +++ b/src/transformers/upnqr.js @@ -1,7 +1,7 @@ -import {CODE_TYPE} from "../helpers"; +import {CODE_TYPE, Transformer} from "./base"; import {decode} from "upnqr"; -class Upnqr { +class Upnqr extends Transformer { recognizer = "UPNQR"; codeType() {