diff --git a/README.md b/README.md index 45f1965..4781677 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,17 @@ -
- # upn-qr -A public API for generating UPN-QR codes on the fly - https://upn-qr.gitapp.si -
+## run in docker for local development + +Build and run in docker (image *upn-qr:dev, container name *unp-qr*), https://localhost:8080/ + + docker stop upn-qr + docker rm upn-qr + docker image rm upn-qr:dev + docker build --tag upn-qr:dev . && docker run -d -p 8080:80 --name upn-qr upn-qr:dev + docker logs -f upn-qr + +or as one-liner + + docker stop upn-qr; docker rm upn-qr; docker image rm upn-qr:dev; docker build --tag upn-qr:dev . && docker run -d -p 8088:80 --name upn-qr upn-qr:dev && docker logs -f upn-qr diff --git a/src/index.js b/src/index.js index eb262a3..2348916 100644 --- a/src/index.js +++ b/src/index.js @@ -45,12 +45,20 @@ app.get('/api/qrcode', async (req, res) => { // SET DEFAULT PURPOSE_CODE if (!req.query.purpose_code) req.query.purpose_code = "OTHR" else { - req.query.amount = String(req.query.amount).trim() if (!String(req.query.purpose_code).match(/^[A-Z]{4}$/)) { errors.push("purpose_code does not match the required format") } } + // DEADLINE is optional + if (req.query.deadline ) { + if(!String(req.query.deadline).match(/^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$/)) { + errors.push("deadline does not match the required format") + } + } else { + req.query.deadline = "" + } + if (errors.length > 0) return res.status(400).send({ ok: false, errors @@ -69,7 +77,7 @@ ${req.query.amount} ${String(req.query.purpose_code).toUpperCase()} ${String(req.query.payment_purpose).toUpperCase()} - +${req.query.deadline} ${req.query.iban} ${req.query.reference} ${String(req.query.issuer_name).toUpperCase()} diff --git a/src/views/form.ejs b/src/views/form.ejs index 7c3676c..902ee73 100644 --- a/src/views/form.ejs +++ b/src/views/form.ejs @@ -72,10 +72,11 @@ div { { n: "issuer-address", d: "Issuer address", p: "Za deveto smreko 15 k", t: "text" }, { n: "issuer-city", d: "Issuer city", p: "1000 Ljubljana", t: "text" }, { n: "iban", d: "IBAN", p: "SI56047500000280672", t: "text" }, - { n: "amount", d: "Amount", p: "35090 (350.90€)", t: "number" }, + { n: "amount", d: "Amount", p: "35090 (350.90€)", t: "number" }, { n: "code", d: "Code", p: "OTHR", t: "text" }, { n: "purpose", d: "Purpose", p: "moutain bike first half", t: "text" }, - { n: "reference", d: "Reference", p: "SI121234567890120", t: "text" } + { n: "reference", d: "Reference", p: "SI121234567890120", t: "text" }, + { n: "deadline", d: "Deadline", p: "01.02.2034", t: "text" } ] %> <% for (const i of items) { %> @@ -119,6 +120,7 @@ function getNewUrl () { ["issuer_name", val("issuer-name")], ["issuer_address", val("issuer-address")], ["issuer_city", val("issuer-city")], + ["deadline", val("deadline")] ].map(v => `${v[0]}=${v[1]}`).join("&") return `${window.location.origin}/api/qrcode?${qstring}` } diff --git a/src/views/index.ejs b/src/views/index.ejs index 8fb3987..cc7f88f 100644 --- a/src/views/index.ejs +++ b/src/views/index.ejs @@ -80,6 +80,10 @@ section div { +
+ + +
@@ -132,6 +136,7 @@ function getNewUrl () { ["issuer_name", val("issuer-name")], ["issuer_address", val("issuer-address")], ["issuer_city", val("issuer-city")], + ["deadline", val("deadline")], ].map(v => `${v[0]}=${v[1]}`).join("&") return encodeURI(`${window.location.origin}/api/qrcode?${qstring}`) } @@ -201,9 +206,9 @@ updateQR()
 <!-- Meant to be used as direct image source, for example -->
-<img src="https://upn-qr.gitapp.si/api/qrcode?client_name=Dobri človek&client_address=Kristanova ulica 1&client_city=1000 Ljubljana&amount=00000001000&payment_purpose=Donacija&iban=SI56021400015556761&reference=SI99&issuer_name=Slovenska Karitas&issuer_address=Kristanova ulica 1&issuer_city=1000 Ljubljana">
+<img src="https://upn-qr.gitapp.si/api/qrcode?client_name=Dobri človek&client_address=Kristanova ulica 1&client_city=1000 Ljubljana&amount=00000001000&deadline=01.02.2034&payment_purpose=Donacija&iban=SI56021400015556761&reference=SI99&issuer_name=Slovenska Karitas&issuer_address=Kristanova ulica 1&issuer_city=1000 Ljubljana">
             
- +

@@ -253,6 +258,17 @@ updateQR()
Example (11,32€): 00000001132 + +
🔗 deadline
+
+ Regex: ^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$ +
+ Demo: regex101.com/r/JDZT9P/1 +
+ Description: Payment deadline. Field is optional. Format DD.MM.YYYY +
+ Example: 01.02.2034 +
🔗 purpose_code