|
export function getJsonFromURL(url: string) { |
|
|
|
const urlObj = new URL(url); |
|
const dataParam = urlObj.searchParams.get("data"); |
|
if (!dataParam) { |
|
return undefined; |
|
} |
|
|
|
|
|
const base64String = dataParam.replace(/-/g, "+").replace(/_/g, "/"); |
|
|
|
|
|
const pad = base64String.length % 4; |
|
const paddedBase64 = pad ? base64String + "=".repeat(4 - pad) : base64String; |
|
|
|
|
|
function base64ToUint8Array(base64: string) { |
|
const binary = atob(base64); |
|
const bytes = new Uint8Array(binary.length); |
|
for (let i = 0; i < binary.length; i++) { |
|
bytes[i] = binary.charCodeAt(i); |
|
} |
|
return bytes; |
|
} |
|
|
|
const bytes = base64ToUint8Array(paddedBase64); |
|
|
|
|
|
const decodedJson = new TextDecoder("utf-8").decode(bytes); |
|
|
|
const parsedData = JSON.parse(decodedJson); |
|
|
|
if (parsedData.messages && parsedData.messages.length > 0) { |
|
const embeds = parsedData.messages[0].data.embeds; |
|
const content = parsedData.messages[0].data.content; |
|
return { |
|
embeds: embeds, |
|
content: content, |
|
}; |
|
} |
|
} |
|
|