Skip to content

Instantly share code, notes, and snippets.

@Node0
Last active July 7, 2022 02:00
Show Gist options
  • Save Node0/dd875eab2e5ca92ff29dd4d854f6b115 to your computer and use it in GitHub Desktop.
Save Node0/dd875eab2e5ca92ff29dd4d854f6b115 to your computer and use it in GitHub Desktop.
class UrlPayloadHandler
{
constructor() {}
base64Enc( inputUtf8Str ) { return Buffer.from(inputUtf8Str, "utf-8").toString("base64"); }
base64Dec( inputB64Str ) { return Buffer.from(inputB64Str, "base64").toString("utf-8"); }
encodeUrlPayload( payloadString ) { return encodeURIComponent(this.base64Enc(payloadString)); }
decodeUrlPayload( encodedPayloadString ) { return this.base64Dec(decodeURIComponent(encodedPayloadString)); }
/* added atob & btoa for cross platform compatibilty (node & browser) as well as documenting their purposes */
btoa = this.base64Enc;
atob = this.base64Dec;
}
/*
const Print = console.log;
var emailPayloadTest = 'martin@example.com|Austin';
const UPH = new UrlPayloadHandler();
Print(`The email test payload ${emailPayloadTest} when encoded is: ${UPH.encodeUrlPayload(emailPayloadTest)}`);
Print(`The encoded email test payload ${UPH.encodeUrlPayload(emailPayloadTest)} when decoded is: ${UPH.decodeUrlPayload(UPH.encodeUrlPayload(emailPayloadTest))}`);
Print("")
Print(`Testing synthetic atob: ${UPH.atob("Testing123")}`)
Print(`Testing synthetic btoa: ${UPH.btoa(UPH.atob("Testing123"))}`)
*/
export default class { UrlPayloadHandler }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment