Skip to content

josestg/codex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CODEX

CODEX or Remote Code Execution. (Work in process)

Usage

git clone https://github.com/talkwithcode/codex.git

cd codex

make codex-api 
# or
go run app/codex-api/main.go

CODEX API listening at http://localhost:8000

API

Endpoint Params Header Body Response
POST /api/v1/exec none none CodexSubmission Slice of SandboxTestStdout

Example

  1. Create a plain source code.
package main

import (
	"fmt"
	"strings"
)

func Solve(n int) string {
	str := make([]string, n)
	content := byte('*')

	for i := 0; i < n; i++ {

		line := make([]byte, n-i)
		for j := 0; j < len(line); j++ {
			line[j] = content
		}

		str[i] = string(line)
	}

	return strings.Join(str, "\n")
}

func main() {
	var n int
	fmt.Scanf("%d", &n)
	out := Solve(n)
	fmt.Println(out)
}
  1. Encode the plain source code into a base64 string.
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJzdHJpbmdzIgopCgpmdW5jIFNvbHZlKG4gaW50KSBzdHJpbmcgewoJc3RyIDo9IG1ha2UoW11zdHJpbmcsIG4pCgljb250ZW50IDo9IGJ5dGUoJyonKQoKCWZvciBpIDo9IDA7IGkgPCBuOyBpKysgewoKCQlsaW5lIDo9IG1ha2UoW11ieXRlLCBuLWkpCgkJZm9yIGogOj0gMDsgaiA8IGxlbihsaW5lKTsgaisrIHsKCQkJbGluZVtqXSA9IGNvbnRlbnQKCQl9CgoJCXN0cltpXSA9IHN0cmluZyhsaW5lKQoJfQoKCXJldHVybiBzdHJpbmdzLkpvaW4oc3RyLCAiXG4iKQp9CgpmdW5jIG1haW4oKSB7Cgl2YXIgbiBpbnQKCWZtdC5TY2FuZigiJWQiLCAmbikKCW91dCA6PSBTb2x2ZShuKQoJZm10LlByaW50bG4ob3V0KQp9Cg==
  1. Create a JSON file as a request body. (request.json)
{
  "source_code": "cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJzdHJpbmdzIgopCgpmdW5jIFNvbHZlKG4gaW50KSBzdHJpbmcgewoJc3RyIDo9IG1ha2UoW11zdHJpbmcsIG4pCgljb250ZW50IDo9IGJ5dGUoJyonKQoKCWZvciBpIDo9IDA7IGkgPCBuOyBpKysgewoKCQlsaW5lIDo9IG1ha2UoW11ieXRlLCBuLWkpCgkJZm9yIGogOj0gMDsgaiA8IGxlbihsaW5lKTsgaisrIHsKCQkJbGluZVtqXSA9IGNvbnRlbnQKCQl9CgoJCXN0cltpXSA9IHN0cmluZyhsaW5lKQoJfQoKCXJldHVybiBzdHJpbmdzLkpvaW4oc3RyLCAiXG4iKQp9CgpmdW5jIG1haW4oKSB7Cgl2YXIgbiBpbnQKCWZtdC5TY2FuZigiJWQiLCAmbikKCW91dCA6PSBTb2x2ZShuKQoJZm10LlByaW50bG4ob3V0KQp9Cg==",
  "language": "golang",
  "time_limit": "1s",

  "test_cases": [
    {
      "id": "1",
      "input": "1",
			"is_private": false,
      "expected_output": "*\n"
    },
    {
      "id": "2",
      "input": "2",
			"is_private": true,
      "expected_output": "**\n*\n"
    },{
      "id": "3",
      "input": "3",
			"is_private": false,
      "expected_output": "*\n**\n**\n***"
    }
  ]
}
  1. Make an HTTP request.
curl -XPOST -d @request.json http://localhost:8000/api/v1/exec
  1. Response body.
[
  {
    "test_case_id": "3",
    "status": "FAILED",
    "log": {
      "id": 706991,
      "stdin": "3",
      "stdout": "***\n**\n*\n",
      "stderr": "",
      "running_time": "2ms",
      "expected_stdout": "*\n**\n**\n***"
    },
    "error": null
  },
  {
    "test_case_id": "1",
    "status": "PASSED",
    "log": {
      "id": 706990,
      "stdin": "1",
      "stdout": "*\n",
      "stderr": "",
      "running_time": "0ms",
      "expected_stdout": "*\n"
    },
    "error": null
  },
  {
    "test_case_id": "2",
    "status": "PASSED",
    "log": null,
    "error": null
  }
]

About

Remote Code Execution. (Work in process)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published