From e4537e250dc1d6620a21e46138289ca30f0cd2ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hauke=20T=C3=B6njes?= Date: Mon, 28 Jun 2021 21:58:07 +0200 Subject: [PATCH] Load API_BASE_URL from backend - Remove api_base_url constant --- pages/api/config.js | 4 ++ src/constants.js | 2 - src/pass.js | 110 +++++++++++++++++++++++--------------------- 3 files changed, 61 insertions(+), 55 deletions(-) create mode 100644 pages/api/config.js diff --git a/pages/api/config.js b/pages/api/config.js new file mode 100644 index 0000000..4892943 --- /dev/null +++ b/pages/api/config.js @@ -0,0 +1,4 @@ +export default function handler(req, res) { + // Return the API_BASE_URL. This Endpoint allows us to access the env Variable in client javascript + res.status(200).json({ apiBaseUrl: process.env.API_BASE_URL }) +} \ No newline at end of file diff --git a/src/constants.js b/src/constants.js index b68f548..af4c362 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1,5 +1,3 @@ -exports.API_BASE_URL = 'https://api.covidpass.marvinsextro.de/' - exports.VALUE_SET_BASE_URL = 'https://raw.githubusercontent.com/ehn-dcc-development/ehn-dcc-valuesets/main/' exports.VALUE_TYPES = { medicalProducts: 'vaccine-medicinal-product.json', diff --git a/src/pass.js b/src/pass.js index c040c21..dc971d7 100644 --- a/src/pass.js +++ b/src/pass.js @@ -14,24 +14,24 @@ exports.createPass = async function(data) { sha.update(buffer); return sha.digest('hex'); } - + async function signPassWithRemote(pass, payload) { // From pass-js // https://github.com/walletpass/pass-js/blob/2b6475749582ca3ea742a91466303cb0eb01a13a/src/pass.ts - + // Creating new Zip file const zip = [] - + // Adding required files // Create pass.json zip.push({ path: 'pass.json', data: Buffer.from(JSON.stringify(pass)) }) const passHash = getBufferHash(Buffer.from(JSON.stringify(pass))) - + zip.push({ path: 'icon.png', data: payload.img1x }) zip.push({ path: 'icon@2x.png', data: payload.img2x }) zip.push({ path: 'logo.png', data: payload.img1x }) zip.push({ path: 'logo@2x.png', data: payload.img2x }) - + // adding manifest // Construct manifest here const manifestJson = JSON.stringify( @@ -44,8 +44,12 @@ exports.createPass = async function(data) { ), ); zip.push({ path: 'manifest.json', data: manifestJson }); - - const response = await fetch(`${constants.API_BASE_URL}/sign`, { + + // Load API_BASE_URL form nextjs backend + const configResponse = await fetch('/api/config') + const apiBaseUrl = (await configResponse.json()).apiBaseUrl + + const response = await fetch(`${apiBaseUrl}/sign`, { method: 'POST', headers: { 'Accept': 'application/octet-stream', @@ -55,19 +59,19 @@ exports.createPass = async function(data) { PassJsonHash: passHash, }) }) - + if (response.status !== 200) { return undefined } - + const manifestSignature = await response.arrayBuffer() - + zip.push({ path: 'signature', data: Buffer.from(manifestSignature) }); - + // finished! return toBuffer(zip); } - + let valueSets try { @@ -107,69 +111,69 @@ exports.createPass = async function(data) { barcode: qrCode, generic: { headerFields: [ - { - key: "type", - label: "Certificate Type", - value: payload.certificateType + { + key: "type", + label: "Certificate Type", + value: payload.certificateType } ], primaryFields: [ - { - key: "name", - label: "Name", - value: payload.name + { + key: "name", + label: "Name", + value: payload.name } ], secondaryFields: [ - { - key: "dose", - label: "Dose", - value: payload.dose + { + key: "dose", + label: "Dose", + value: payload.dose }, - { - key: "dov", - label: "Date of Vaccination", - value: payload.dateOfVaccination, + { + key: "dov", + label: "Date of Vaccination", + value: payload.dateOfVaccination, textAlignment: "PKTextAlignmentRight" } ], auxiliaryFields: [ - { - key: "vaccine", - label: "Vaccine", - value: payload.vaccineName + { + key: "vaccine", + label: "Vaccine", + value: payload.vaccineName }, - { - key: "dob", - label: "Date of Birth", value: - payload.dateOfBirth, + { + key: "dob", + label: "Date of Birth", value: + payload.dateOfBirth, textAlignment: "PKTextAlignmentRight" } ], backFields: [ - { - key: "uvci", - label: "Unique Certificate Identifier (UVCI)", + { + key: "uvci", + label: "Unique Certificate Identifier (UVCI)", value: payload.uvci }, - { - key: "issuer", - label: "Certificate Issuer", - value: payload.certificateIssuer + { + key: "issuer", + label: "Certificate Issuer", + value: payload.certificateIssuer }, - { - key: "country", - label: "Country of Vaccination", + { + key: "country", + label: "Country of Vaccination", value: payload.countryOfVaccination }, - { - key: "manufacturer", - label: "Manufacturer", - value: payload.manufacturer + { + key: "manufacturer", + label: "Manufacturer", + value: payload.manufacturer }, - { - key: "disclaimer", - label: "Disclaimer", + { + key: "disclaimer", + label: "Disclaimer", value: "This certificate is only valid in combination with the ID card of the certificate holder and expires one year + 14 days after the last dose. The validity of this certificate was not checked by CovidPass." } ]