]> git.ardis.lu - cloudflare-workers/commitdiff
Add QR worker
authorArdis Lu <ardisglu@gmail.com>
Fri, 16 Jul 2021 06:15:58 +0000 (23:15 -0700)
committerArdis Lu <ardisglu@gmail.com>
Fri, 16 Jul 2021 06:15:58 +0000 (23:15 -0700)
README.md
package-lock.json
package.json
qr/index.js [new file with mode: 0644]
qr/package.json [new file with mode: 0644]

index fc71ea3495f4cd0cf345d74861afa9658d6f8cb2..a8b6cb32def698a0c961587c306b5d81ddad4c76 100644 (file)
--- 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`.
index 4c34089d8c33a54978fba109e99651232260e14b..ad8d84beb426f30a032792b4e499f7409205aae0 100644 (file)
@@ -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",
       "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"
         }
       }
     },
+    "cors": {
+      "version": "file:cors"
+    },
     "instagram": {
-      "version": "file:instagram",
-      "requires": {
-        "@cloudflare/wrangler": "^1.16.1"
-      }
+      "version": "file:instagram"
     },
-    "reverse-proxy": {
-      "version": "file:reverse-proxy",
+    "proxy": {
+      "version": "file:proxy"
+    },
+    "pwned": {
+      "version": "file:pwned"
+    },
+    "qr": {
+      "version": "file:qr",
       "requires": {
-        "@cloudflare/wrangler": "^1.16.1"
+        "qr-image": "^3.2.0"
       }
+    },
+    "qr-image": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz",
+      "integrity": "sha1-n6gpW+rlDEoUnPn5CaHbRkqGcug="
     }
   }
 }
index 1c13088787bf4ec06352d5e3b69e226c9b1d8a5a..8956dc3d7e613f30c8a634da2b661eca8946a394 100644 (file)
@@ -22,6 +22,7 @@
     "proxy",
     "instagram",
     "cors",
-    "pwned"
+    "pwned",
+    "qr"
   ]
 }
diff --git a/qr/index.js b/qr/index.js
new file mode 100644 (file)
index 0000000..7122a8c
--- /dev/null
@@ -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 (file)
index 0000000..c8b0878
--- /dev/null
@@ -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"
+  }
+}
This page took 0.053622 seconds and 4 git commands to generate.