Skip to content
Snippets Groups Projects
Commit 8ccdc4e7 authored by Ulrik Ofstad's avatar Ulrik Ofstad
Browse files

made some minor improvements

parent f59603fc
No related branches found
No related tags found
No related merge requests found
import * as React from 'react'; import * as React from "react";
import { createRoot } from 'react-dom/client'; import { createRoot } from "react-dom/client";
import { Component } from 'react-simplified'; import { Component } from "react-simplified";
import { HashRouter, Route } from 'react-router-dom'; import { HashRouter, Route } from "react-router-dom";
import { NavBar, Card, Alert, Row, Column, Form, Button } from './widgets'; import { NavBar, Card, Alert, Row, Column, Form, Button } from "./widgets";
import taskService from './task-service'; import taskService from "./task-service";
class App extends Component { class App extends Component {
input: string = ''; input: string = "";
stdout: string = ''; stdout: string = "";
stderr: string = ''; stderr: string = "";
language = 'js'; language = "js";
render() { render() {
return ( return (
...@@ -62,10 +62,10 @@ class App extends Component { ...@@ -62,10 +62,10 @@ class App extends Component {
} }
} }
let root = document.getElementById('root'); let root = document.getElementById("root");
if (root) if (root)
createRoot(root).render( createRoot(root).render(
<> <>
<App></App> <App></App>
</>, </>
); );
import axios from 'axios'; import axios from "axios";
axios.defaults.baseURL = 'http://localhost:3000/api/v2'; axios.defaults.baseURL = "http://localhost:3000/api/v2";
export type Task = { export type Task = {
id: number; id: number;
...@@ -8,15 +8,21 @@ export type Task = { ...@@ -8,15 +8,21 @@ export type Task = {
done: boolean; done: boolean;
}; };
type Response_data = { type Response_data = {
stdoutData: ''; stdoutData: "";
stderrData: ''; stderrData: "";
}; };
class TaskService { class TaskService {
create(input: string, language: string) { async create(input: string, language: string) {
return axios try {
.post<Response_data>('/tasks', { input: input, language: language }) const response = await axios.post<Response_data>("/tasks", {
.then((response) => response.data); input: input,
language: language,
});
return response.data;
} catch (error) {
throw error;
}
} }
} }
......
import express from 'express'; import express from "express";
import { spawn } from "node:child_process";
const router = express.Router(); const router = express.Router();
const { spawn } = require('node:child_process'); router.post("/tasks", (request, response) => {
router.post('/tasks', (request, response) => {
const data = request.body.input; const data = request.body.input;
const language = request.body.language; const language = request.body.language;
let setup; let setup;
if (language === 'python') { if (language === "python") {
setup = ['run', '--rm', 'python:3.8', 'python', '-c', `${data}`]; setup = ["run", "--rm", "python:3.8", "python", "-c", `${data}`];
} else if (language === 'js') { } else if (language === "js") {
setup = ['run', '--rm', 'node-image', 'node', '-e', `${data}`]; setup = ["run", "--rm", "node:latest", "node", "-e", `${data}`];
} }
const ls = spawn('docker', setup); const ls = spawn("docker", setup);
let response_data = { let response_data = {
stdoutData: '', stdoutData: "",
stderrData: '', stderrData: "",
}; };
ls.stdout.on('data', (data: string) => { ls.stdout.on("data", (data: string) => {
response_data.stdoutData += data; response_data.stdoutData += data;
}); });
ls.stderr.on('data', (data: string) => { ls.stderr.on("data", (data: string) => {
response_data.stderrData += data; response_data.stderrData += data;
}); });
ls.on('close', (exit_status: number) => { ls.on("close", (exit_status: number) => {
response.send(response_data); response.send(response_data);
}); });
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment