//--- Modules/Imports ---// import { Http } from "@capacitor-community/http"; import constants from "./constants"; function generateUserID(length = 36) { const charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; let result = ""; if (crypto && crypto.getRandomValues) { const values = new Uint32Array(length); crypto.getRandomValues(values); for (let i = 0; i < length; i++) { result += charset[values[i] % charset.length]; } return result; } else { for (let i = 0; i < length; i++) { result += charset[Math.floor(Math.random() * charset.length)]; } return result; } } function countLeadingZeroes(uInt8View, limit) { let zeroes = 0; let value = 0; for (let i = 0; i < uInt8View.length; i++) { value = uInt8View[i]; if (value === 0) { zeroes += 8; } else { let count = 1; if (value >>> 4 === 0) { count += 4; value <<= 4; } if (value >>> 6 === 0) { count += 2; value <<= 2; } zeroes += count - (value >>> 7); break; } if (zeroes >= limit) { break; } } return zeroes; } //--- Puzzle Solver from Anarios --// async function solvePuzzle(puzzle) { let challenge = Uint8Array.from(atob(puzzle.challenge), (c) => c.charCodeAt(0) ); let buffer = new ArrayBuffer(20); let uInt8View = new Uint8Array(buffer); let uInt32View = new Uint32Array(buffer); let maxCount = Math.pow(2, puzzle.difficulty) * 5; for (let i = 4; i < 20; i++) { uInt8View[i] = challenge[i - 4]; } for (let i = 0; i < maxCount; i++) { uInt32View[0] = i; let hash = await crypto.subtle.digest("SHA-512", buffer); let hashUint8 = new Uint8Array(hash); if (countLeadingZeroes(hashUint8) >= puzzle.difficulty) { return { solution: btoa(String.fromCharCode.apply(null, uInt8View.slice(0, 4))), }; } } } const rydModule = { logs: new Array(), //--- Get Dislikes ---// getDislikes(id, callback) { console.log("fetching ryd"); Http.request({ method: "GET", url: `https://returnyoutubedislikeapi.com/votes`, params: { videoId: id }, }) .then((res) => { callback(res.data); }) .catch((err) => { callback(err); }); }, }; //--- Start ---// export default ({ app }, inject) => { inject("ryd", { ...rydModule }); };