update README, added url builder to urlTools.ts

This commit is contained in:
Bit Borealis 2022-08-12 03:17:36 +00:00
parent 03969051a4
commit 2b41b4c66c
Signed by: theotheroracle
GPG key ID: 2D816A2DCA6E5649
6 changed files with 61 additions and 44 deletions

View file

@ -11,4 +11,5 @@
> Long: `Yj3ryVkyOzDg6UbEHkWiNkNZcbbR5wTwtm6TZ6F7OLCI` > Long: `Yj3ryVkyOzDg6UbEHkWiNkNZcbbR5wTwtm6TZ6F7OLCI`
> >
> Invalid: `bZLMOC157NAlKtFP3wHXkXj0eLAu6E/Bv6rGL4HLQ===` > Invalid: `bZLMOC157NAlKtFP3wHXkXj0eLAu6E/Bv6rGL4HLQ===`
- [x] build url from component parts
- [ ] fetch data from url

31
package-lock.json generated
View file

@ -5,9 +5,17 @@
"packages": { "packages": {
"": { "": {
"devDependencies": { "devDependencies": {
"typescript": "^4.7.4" "@types/node": "^18.7.1",
"typescript": "^4.7.4",
"xmlhttprequest": "^1.8.0"
} }
}, },
"node_modules/@types/node": {
"version": "18.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz",
"integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ==",
"dev": true
},
"node_modules/typescript": { "node_modules/typescript": {
"version": "4.7.4", "version": "4.7.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
@ -20,14 +28,35 @@
"engines": { "engines": {
"node": ">=4.2.0" "node": ">=4.2.0"
} }
},
"node_modules/xmlhttprequest": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
"integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
"dev": true,
"engines": {
"node": ">=0.4.0"
}
} }
}, },
"dependencies": { "dependencies": {
"@types/node": {
"version": "18.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz",
"integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ==",
"dev": true
},
"typescript": { "typescript": {
"version": "4.7.4", "version": "4.7.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
"integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
"dev": true "dev": true
},
"xmlhttprequest": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
"integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
"dev": true
} }
} }
} }

View file

@ -1,5 +1,7 @@
{ {
"devDependencies": { "devDependencies": {
"typescript": "^4.7.4" "@types/node": "^18.7.1",
"typescript": "^4.7.4",
"xmlhttprequest": "^1.8.0"
} }
} }

View file

@ -1,40 +0,0 @@
var baseUrl = "https://envs.sh";
var id = "QnK"; // < unicode >
var key = "LhBRttf+oI/PNHyTBrPa7HGDK/uC9fcMkGGgz63zT4Y="; // 32 bytes b64
var completeUrl = baseUrl + "/" + id + ".bin#" + key;
console.log(completeUrl);
var urlObj = new URL(completeUrl);
/** will return a tuple of the key and id if valid
* 1 if no id ( creator )
* 2 if encryption key is missing / wrong length
* 3 if key is malformed
*/
function validUrl(url) {
var key;
try {
key = atob(url.hash.substring(1));
}
catch (e) {
return 3;
}
var id = url.pathname.substring(1);
if (id === "/") {
return 1;
}
var binKey = binaryToArray(key);
if (key.length === 32) {
return [id, binKey];
}
else {
return 2;
}
}
function binaryToArray(raw) {
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
for (var i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}
console.log(validUrl(urlObj));

24
src/urlTools.ts Normal file
View file

@ -0,0 +1,24 @@
import XMLHttpRequest = require("xmlhttprequest");
/**
* converts component parts of url to a full url
*/
function buildUrl(baseUrl: string, id: string): string {
return (baseUrl + "/" + id + ".bin")
}
/**
* gets data from a constructed url
*/
function getData(url: string): string {
try {
const request = new XMLHttpRequest()
request.open("GET", url, false)
request.send
return(request.responseText)
} catch(e) {
console.log(e)
return null
}
}
console.log(getData(buildUrl("https://envs.sh", "QnK")))

View file

@ -1,5 +1,6 @@
{ {
"files": [ "files": [
"src/parse.ts" "src/parse.ts",
"src/urlTools.ts"
] ]
} }