Circumvent CORS pls?
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
function sendRequest(path, method, body, sendResp) {
|
||||
fetch(`http://127.0.0.1:9999/api${path}`, {
|
||||
method: method,
|
||||
headers: method !== "GET" ? {
|
||||
"Content-Type": "application/json",
|
||||
} : undefined,
|
||||
body: body ? JSON.stringify(body) : undefined,
|
||||
}).then(r => r.json())
|
||||
.then(data => sendResp({success: true, data}))
|
||||
.catch(e => sendResp({success: false, message: e.message}));
|
||||
}
|
||||
|
||||
chrome.runtime.onMessage.addListener(
|
||||
function (request, sender, sendResponse) {
|
||||
if (request.query === "fetchBikes") {
|
||||
sendRequest("/bike", "GET", null, sendResponse);
|
||||
} else if (request.query === "fetchPrograms") {
|
||||
sendRequest("/program", "GET", null, sendResponse);
|
||||
} else if (request.query === "fetchActiveWorkouts") {
|
||||
sendRequest("/workout?active=true", "GET", null, sendResponse);
|
||||
} else if (request.query === "createNewWorkout") {
|
||||
sendRequest("/workout", "POST", request, sendResponse);
|
||||
} else if (request.query === "connectWorkout") {
|
||||
sendRequest(`/workout/${request.id}/connect`, "POST", {}, sendResponse);
|
||||
} else if (request.query === "stopWorkout") {
|
||||
sendRequest(`/workout/${request.id}/stop`, "POST", {}, sendResponse);
|
||||
} else if (request.query === "startWorkout") {
|
||||
sendRequest(`/workout/${request.id}/start`, "POST", {}, sendResponse);
|
||||
} else if (request.query === "pauseWorkout") {
|
||||
sendRequest(`/workout/${request.id}/pause`, "POST", {}, sendResponse);
|
||||
} else if (request.query === "updateCooldownMins") {
|
||||
sendRequest(`/workout/${request.id}`, "PUT", request, sendResponse);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
@@ -3,3 +3,4 @@ npm run build
|
||||
mv build/static/css/main.*.css build/static/css/main.css
|
||||
mv build/static/js/main.*.js build/static/js/main.js
|
||||
mv build/static/js/runtime-main.*.js build/static/js/runtime-main.js
|
||||
cp ./background.js build/background.js
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
"short_name": "YKonsole Helper",
|
||||
"version": "1.0",
|
||||
"manifest_version": 2,
|
||||
"background": {
|
||||
"scripts": ["background.js"]
|
||||
},
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": ["https://www.youtube.com/*"],
|
||||
|
||||
@@ -2,7 +2,7 @@ import React, {useContext, useEffect, useState} from 'react';
|
||||
|
||||
import "./Bois.css";
|
||||
import {StatusContext} from "./Contexts";
|
||||
import {CalorieScore, CpmScore, LevelScore, RpmScore, Timer} from "./Score";
|
||||
import {CalorieScore, CpmScore, LevelScore, PulseScore, RpmScore, Timer} from "./Score";
|
||||
import calculateDiff from "../helpers/diff";
|
||||
import useKey from "../hooks/useKey";
|
||||
import {Milestones} from "./Milestones";
|
||||
@@ -23,7 +23,7 @@ export const LeftBoi = () => {
|
||||
}
|
||||
|
||||
const {cooldownMin} = workout;
|
||||
const {minutes, seconds, calories, level, rpm} = workoutStatus;
|
||||
const {minutes, seconds, calories, level, rpm, pulse} = workoutStatus;
|
||||
const diff = calculateDiff({program, cooldownMin, minutes, seconds, calories});
|
||||
const cpm = calories / (minutes + (seconds / 60));
|
||||
|
||||
@@ -34,6 +34,7 @@ export const LeftBoi = () => {
|
||||
<RpmScore rpm={rpm}/>
|
||||
<CpmScore cpm={cpm}/>
|
||||
<LevelScore level={level}/>
|
||||
<PulseScore pulse={pulse} />
|
||||
</Boi>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -46,6 +46,8 @@ export const CalorieScore = ({calories, diff, prevDiff}) => (
|
||||
|
||||
export const LevelScore = ({level}) => <Score value={level} suffix="lvl"/>;
|
||||
|
||||
export const PulseScore = ({pulse}) => pulse ? <Score value={pulse} suffix=" puls"/> : null;
|
||||
|
||||
export const RpmScore = ({rpm}) => <Score value={rpm} suffix="rpm"/>;
|
||||
|
||||
export const CpmScore = ({cpm}) => <Score value={cpm.toFixed(1)} suffix="kpm"/>;
|
||||
|
||||
@@ -99,7 +99,7 @@ describe("calculateDiff", () => {
|
||||
expect(diff).toBe(0);
|
||||
});
|
||||
|
||||
it("should require 50 calories after 2.5 min of GIS", () => {
|
||||
it("should expect 50 calories after 2.5 min of GIS", () => {
|
||||
const diff = calculateDiff({
|
||||
program: programGis,
|
||||
cooldownMin: -1,
|
||||
@@ -111,7 +111,7 @@ describe("calculateDiff", () => {
|
||||
expect(diff).toBe(3);
|
||||
});
|
||||
|
||||
it("should require 175 calories after 7.5 min of GIS", () => {
|
||||
it("should expect 175 calories after 7.5 min of GIS", () => {
|
||||
const diff = calculateDiff({
|
||||
program: programGis,
|
||||
cooldownMin: -1,
|
||||
@@ -123,7 +123,7 @@ describe("calculateDiff", () => {
|
||||
expect(diff).toBe(0);
|
||||
});
|
||||
|
||||
it("should require 310 calories after 12.5 min of GIS", () => {
|
||||
it("should expect 310 calories after 12.5 min of GIS", () => {
|
||||
const diff = calculateDiff({
|
||||
program: programGis,
|
||||
cooldownMin: 11,
|
||||
|
||||
+20
-38
@@ -1,72 +1,54 @@
|
||||
export async function fetchBikes() {
|
||||
return await get("/bike");
|
||||
return await runBack({query: "fetchBikes"});
|
||||
}
|
||||
|
||||
export async function fetchPrograms() {
|
||||
return await get("/program");
|
||||
return await runBack({query: "fetchPrograms"});
|
||||
}
|
||||
|
||||
export async function fetchActiveWorkouts() {
|
||||
return await get("/workout?active=true");
|
||||
return await runBack({query: "fetchActiveWorkouts"});
|
||||
}
|
||||
|
||||
export async function createNewWorkout(bike, program) {
|
||||
const bikeId = bike.id;
|
||||
const programId = program.id;
|
||||
|
||||
return await post("/workout", {bikeId, programId});
|
||||
return await runBack({query: "fetchActiveWorkouts", bikeId, programId});
|
||||
}
|
||||
|
||||
export async function connectWorkout(workout) {
|
||||
return await post(`/workout/${workout.id}/connect`);
|
||||
return await runBack({query: "connectWorkout", ...workout});
|
||||
}
|
||||
|
||||
export async function stopWorkout(workout) {
|
||||
return await post(`/workout/${workout.id}/stop`);
|
||||
return await runBack({query: "stopWorkout", ...workout});
|
||||
}
|
||||
|
||||
export async function startWorkout(workout) {
|
||||
return await post(`/workout/${workout.id}/start`);
|
||||
return await runBack({query: "startWorkout", ...workout});
|
||||
}
|
||||
|
||||
export async function pauseWorkout(workout) {
|
||||
return await post(`/workout/${workout.id}/pause`);
|
||||
return await runBack({query: "pauseWorkout", ...workout});
|
||||
}
|
||||
|
||||
export async function updateCooldownMins(workout, cooldownMin) {
|
||||
return await put(`/workout/${workout.id}`, {cooldownMin});
|
||||
return await runBack({query: "pauseWorkout", cooldownMin, ...workout});
|
||||
}
|
||||
|
||||
export function openWebsocket(workout) {
|
||||
return new WebSocket(url(`/workout/${workout.id}/subscribe`, "ws"));
|
||||
return new WebSocket(`ws://127.0.0.1:9999/api/workout/${workout.id}/subscribe`);
|
||||
}
|
||||
|
||||
function get(path) {
|
||||
return fetch(url(path), {
|
||||
method: "GET",
|
||||
}).then(r => r.json());
|
||||
async function runBack(query) {
|
||||
return new Promise((resolve, reject) => {
|
||||
chrome.runtime.sendMessage(query, result => {
|
||||
if (result.success) {
|
||||
resolve(result.data)
|
||||
} else {
|
||||
reject(result.message);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function post(path, data = {}) {
|
||||
return fetch(url(path), {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
}).then(r => r.json());
|
||||
}
|
||||
|
||||
function put(path, data = {}) {
|
||||
return fetch(url(path), {
|
||||
method: "PUT",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
}).then(r => r.json());
|
||||
}
|
||||
|
||||
function url(path, prefix = "http") {
|
||||
return `${prefix}://127.0.0.1:9999/api${path}`;
|
||||
}
|
||||
Reference in New Issue
Block a user