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`.
"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="
}
}
}
--- /dev/null
+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));
+})
--- /dev/null
+{
+ "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"
+ }
+}