judge0 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +24 -1
- data/judge0.gemspec +1 -1
- data/lib/judge0.rb +2 -2
- data/lib/submission.rb +22 -16
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be6cceb98b75c3c157176a555aeda2826744f420b0afb7542874ed62b19b1ee8
|
4
|
+
data.tar.gz: 4601235293d68af691cd420ce9b572f2dbe28bc965b099fef32c2491276ab743
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b806ca2d4ad2adab6250a7c1e8a70fab3f5197100f98ceb2fc1a08713fa02c619981c0fbe85a7b3b94e8cf4b185ee542c6f87b7a2c66f777078ef64ac19c6c5
|
7
|
+
data.tar.gz: 4db48c17260a6a6b1ea60537e626f194eced29d85bf3cba25051d8e8975e27b623d1c1cbbfa46868871cdf56a77ff122dc03bb4923cfbf3bc00e3a4f8592872d
|
data/README.md
CHANGED
@@ -25,6 +25,7 @@ gem 'judge0'
|
|
25
25
|
|
26
26
|
### simple code execution
|
27
27
|
|
28
|
+
|
28
29
|
```ruby
|
29
30
|
sub = Judge0::Submission.new do |config|
|
30
31
|
config.source_code = 'p "Hello world!"'
|
@@ -35,6 +36,28 @@ sub.run # hash of the submission result
|
|
35
36
|
sub.stdout # output
|
36
37
|
```
|
37
38
|
|
39
|
+
### wait the response on another thread
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
sub = Judge0::Submission.new do |config|
|
43
|
+
config.source_code = 'sleep 2; p "Hello world!"'
|
44
|
+
config.language_id = 72
|
45
|
+
end
|
46
|
+
|
47
|
+
sub.get_token
|
48
|
+
|
49
|
+
t = Thread.new {
|
50
|
+
sub.wait_response!
|
51
|
+
}
|
52
|
+
|
53
|
+
puts "🛏️ waiting..." # doing something while the code is running
|
54
|
+
|
55
|
+
t.join
|
56
|
+
|
57
|
+
puts sub.output
|
58
|
+
|
59
|
+
```
|
60
|
+
|
38
61
|
### tests battery execution
|
39
62
|
|
40
63
|
```ruby
|
@@ -117,4 +140,4 @@ pp Judge0::config_info
|
|
117
140
|
|
118
141
|
```bash
|
119
142
|
gem push judge0-x.x.x.gem
|
120
|
-
```
|
143
|
+
```
|
data/judge0.gemspec
CHANGED
data/lib/judge0.rb
CHANGED
@@ -4,7 +4,7 @@ require 'json'
|
|
4
4
|
require 'submission.rb'
|
5
5
|
|
6
6
|
module Judge0
|
7
|
-
@@base_url = '
|
7
|
+
@@base_url = 'http://roupi.xyz:3000/'
|
8
8
|
|
9
9
|
def self.base_url=(url)
|
10
10
|
@@base_url = url
|
@@ -38,4 +38,4 @@ module Judge0
|
|
38
38
|
resp = Faraday.get(url "/languages/#{id}")
|
39
39
|
JSON.parse(resp.body)
|
40
40
|
end
|
41
|
-
end
|
41
|
+
end
|
data/lib/submission.rb
CHANGED
@@ -19,18 +19,9 @@ module Judge0
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def run
|
22
|
-
|
22
|
+
get_token
|
23
23
|
|
24
|
-
|
25
|
-
@time = res['time'].to_f
|
26
|
-
@memory = res['memory']
|
27
|
-
@stderr = res['stderr']
|
28
|
-
@compile_out = res['compile_out']
|
29
|
-
@message = res['message']
|
30
|
-
@status_id = res['status']['id']
|
31
|
-
@status_description = res['status']['description']
|
32
|
-
|
33
|
-
result
|
24
|
+
wait_response!
|
34
25
|
end
|
35
26
|
|
36
27
|
def tests_battery (tests)
|
@@ -48,7 +39,7 @@ module Judge0
|
|
48
39
|
get_token
|
49
40
|
end
|
50
41
|
tests.map do |test|
|
51
|
-
wait_response
|
42
|
+
wait_response
|
52
43
|
end
|
53
44
|
end
|
54
45
|
|
@@ -75,8 +66,6 @@ module Judge0
|
|
75
66
|
msg
|
76
67
|
end
|
77
68
|
|
78
|
-
private
|
79
|
-
|
80
69
|
def to_hash
|
81
70
|
Hash[
|
82
71
|
instance_variables.map do |name|
|
@@ -85,18 +74,35 @@ module Judge0
|
|
85
74
|
]
|
86
75
|
end
|
87
76
|
|
77
|
+
def to_submission(response)
|
78
|
+
@stdout = response['stdout']
|
79
|
+
@time = response['time'].to_f
|
80
|
+
@memory = response['memory']
|
81
|
+
@stderr = response['stderr']
|
82
|
+
@compile_out = response['compile_out']
|
83
|
+
@message = response['message']
|
84
|
+
@status_id = response['status']['id']
|
85
|
+
@status_description = response['status']['description']
|
86
|
+
|
87
|
+
result
|
88
|
+
end
|
89
|
+
|
88
90
|
def get_token
|
89
91
|
resp = Faraday.post(Judge0.url('/submissions/?base64_encoded=false&wait=false'), to_hash)
|
90
92
|
@token = JSON.parse(resp.body)['token']
|
91
93
|
end
|
92
94
|
|
93
|
-
def wait_response
|
95
|
+
def wait_response
|
94
96
|
begin
|
95
|
-
resp = Faraday.get(Judge0.url("/submissions/#{token}"))
|
97
|
+
resp = Faraday.get(Judge0.url("/submissions/#{@token}"))
|
96
98
|
body = JSON.parse(resp.body)
|
97
99
|
puts "waiting: #{token} - #{body['status']['description']}" unless ENV['RAILS_ENV'] == 'test'
|
98
100
|
end while body['status']['id'] <= 2
|
99
101
|
body
|
100
102
|
end
|
103
|
+
|
104
|
+
def wait_response!
|
105
|
+
to_submission(wait_response)
|
106
|
+
end
|
101
107
|
end
|
102
108
|
end
|