Skip to content

Instantly share code, notes, and snippets.

@a2468834
Last active May 31, 2022 07:20
Show Gist options
  • Save a2468834/b49261e52dfbd8d85437a782b49d40f8 to your computer and use it in GitHub Desktop.
Save a2468834/b49261e52dfbd8d85437a782b49d40f8 to your computer and use it in GitHub Desktop.
async function method1(payload) {
return Buffer.from(payload, 'base64').toString('utf-8');
}
async function method2(payload) {
const uint8_array = await ethers.utils.base64.decode(payload);
const char_array = Array.from(uint8_array).map((element) => {
return String.fromCharCode(element)
});
return char_array.join("");
}
async function main() {
const regex = /data:.+\/(.+);base64,(.*)$/;
const raw_data = "data:application/json;base64,eyJuYW1lIjogIjEwIiwgImRlc2NyaXB0aW9uIjogIkEgaGlnaGx5IGFjY2xhaW1lZCBjb2xsZWN0aW9uIG9mIHNxdWFyZXMuIiwgImltYWdlIjogImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owbmFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jbklIQnlaWE5sY25abFFYTndaV04wVW1GMGFXODlKM2hOYVc1WlRXbHVJRzFsWlhRbklIWnBaWGRDYjNnOUp6QWdNQ0F6TlRBZ016VXdKejQ4YzNSNWJHVStMbUpoYzJVZ2V5Qm1hV3hzT2lCM2FHbDBaVHNnWm05dWRDMW1ZVzFwYkhrNklITmxjbWxtT3lCbWIyNTBMWE5wZW1VNklESTBjSGc3SUgwOEwzTjBlV3hsUGp4eVpXTjBJSGRwWkhSb1BTY3hNREFsSnlCb1pXbG5hSFE5SnpFd01DVW5JR1pwYkd3OUoySnNkV1VuTHo0OGRHVjRkQ0I0UFNjMU1DVW5JSGs5SnpVd0pTY2dZMnhoYzNNOUoySmhjMlVuSUdSdmJXbHVZVzUwTFdKaGMyVnNhVzVsUFNkdGFXUmtiR1VuSUhSbGVIUXRZVzVqYUc5eVBTZHRhV1JrYkdVblBtaHZiR0VnUTB3ZzhKK1dsZkNmajd3OEwzUmxlSFErUEM5emRtYysifQ==";
const extension = raw_data.match(regex)[1];
const base64_data = raw_data.match(regex)[2];
console.log(JSON.parse(await method1(base64_data), null, 2));
console.log(JSON.parse(await method2(base64_data), null, 2));
}
main();
@a2468834
Copy link
Author

[Update] Revision 2
Add regular expression to parse the original data URL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment