From 9ad6a8c8005fab9655128ee3d8767de5845e0903 Mon Sep 17 00:00:00 2001 From: Ardis Lu Date: Thu, 15 Jul 2021 23:15:58 -0700 Subject: [PATCH] Add QR worker --- README.md | 10 +++++- package-lock.json | 77 ++++++++++++++++++++++++++++++++++++++--------- package.json | 3 +- qr/index.js | 17 +++++++++++ qr/package.json | 22 ++++++++++++++ 5 files changed, 112 insertions(+), 17 deletions(-) create mode 100644 qr/index.js create mode 100644 qr/package.json diff --git a/README.md b/README.md index fc71ea3..a8b6cb3 100644 --- a/README.md +++ b/README.md @@ -113,4 +113,12 @@ hunter1 then the final request URL should be ``` https://x.y.workers.dev?hunter1 -``` \ No newline at end of file +``` + +## qr + +Generates a QR code for the value passed to the endpoint. Note: set the `type` property in `wrangler.toml` to `webpack` to use `require`. + +### Usage + +Same as `proxy`. diff --git a/package-lock.json b/package-lock.json index 4c34089..ad8d84b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,20 +8,23 @@ "version": "0.1.0", "license": "ISC", "workspaces": [ - "reverse-proxy", + "proxy", "instagram", - "inline" + "cors", + "pwned", + "qr" ], "devDependencies": { "@cloudflare/wrangler": "^1.16.1" } }, + "cors": { + "version": "0.1.0", + "license": "ISC" + }, "instagram": { "version": "0.1.0", - "license": "ISC", - "devDependencies": { - "@cloudflare/wrangler": "^1.16.1" - } + "license": "ISC" }, "node_modules/@cloudflare/wrangler": { "version": "1.16.1", @@ -211,16 +214,49 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/cors": { + "resolved": "cors", + "link": true + }, "node_modules/instagram": { "resolved": "instagram", "link": true }, - "node_modules/reverse-proxy": { - "resolved": "reverse-proxy", + "node_modules/proxy": { + "resolved": "proxy", "link": true }, + "node_modules/pwned": { + "resolved": "pwned", + "link": true + }, + "node_modules/qr": { + "resolved": "qr", + "link": true + }, + "node_modules/qr-image": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", + "integrity": "sha1-n6gpW+rlDEoUnPn5CaHbRkqGcug=" + }, + "proxy": { + "version": "0.1.0", + "license": "ISC" + }, + "pwned": { + "version": "0.1.0", + "license": "ISC" + }, + "qr": { + "version": "0.1.0", + "license": "ISC", + "dependencies": { + "qr-image": "^3.2.0" + } + }, "reverse-proxy": { "version": "0.1.0", + "extraneous": true, "license": "ISC", "devDependencies": { "@cloudflare/wrangler": "^1.16.1" @@ -413,17 +449,28 @@ } } }, + "cors": { + "version": "file:cors" + }, "instagram": { - "version": "file:instagram", + "version": "file:instagram" + }, + "proxy": { + "version": "file:proxy" + }, + "pwned": { + "version": "file:pwned" + }, + "qr": { + "version": "file:qr", "requires": { - "@cloudflare/wrangler": "^1.16.1" + "qr-image": "^3.2.0" } }, - "reverse-proxy": { - "version": "file:reverse-proxy", - "requires": { - "@cloudflare/wrangler": "^1.16.1" - } + "qr-image": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz", + "integrity": "sha1-n6gpW+rlDEoUnPn5CaHbRkqGcug=" } } } diff --git a/package.json b/package.json index 1c13088..8956dc3 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "proxy", "instagram", "cors", - "pwned" + "pwned", + "qr" ] } diff --git a/qr/index.js b/qr/index.js new file mode 100644 index 0000000..7122a8c --- /dev/null +++ b/qr/index.js @@ -0,0 +1,17 @@ +const qr = require('qr-image'); + +async function handleRequest(request) { + const url = new URL(request.url); + const queryString = decodeURIComponent(url.search.substring(1)); + const qrImage = qr.imageSync(queryString || 'https://example.com', { type: 'svg' }); + + return new Response(qrImage, { + headers: { + 'Content-Type': 'image/svg+xml' + } + }) +} + +addEventListener('fetch', event => { + event.respondWith(handleRequest(event.request)); +}) diff --git a/qr/package.json b/qr/package.json new file mode 100644 index 0000000..c8b0878 --- /dev/null +++ b/qr/package.json @@ -0,0 +1,22 @@ +{ + "name": "qr", + "version": "0.1.0", + "description": "QR code generator on a Cloudflare Worker.", + "private": true, + "main": "index.js", + "scripts": { + "login": "wrangler login", + "preview": "wrangler preview", + "build": "wrangler build", + "publish": "wrangler publish" + }, + "author": "Ardis Lu", + "license": "ISC", + "dependencies": { + "qr-image": "^3.2.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/ardislu/cloudflare-workers.git" + } +} -- 2.47.3