ideone-ruby-api 1.0.2 → 1.1.0
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.
- data/VERSION +1 -1
- data/ideone-ruby-api.gemspec +2 -2
- data/lib/ideone-ruby-api.rb +27 -16
- data/test/test_ideone-ruby-api.rb +5 -2
- metadata +15 -15
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.1.0
|
data/ideone-ruby-api.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ideone-ruby-api}
|
8
|
-
s.version = "1.0
|
8
|
+
s.version = "1.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kenny Meyer"]
|
12
|
-
s.date = %q{2011-07-
|
12
|
+
s.date = %q{2011-07-12}
|
13
13
|
s.email = %q{knny.myer@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
data/lib/ideone-ruby-api.rb
CHANGED
@@ -7,9 +7,11 @@
|
|
7
7
|
# License:: Distributes under the same terms as Ruby
|
8
8
|
|
9
9
|
require 'savon' # SOAP Client
|
10
|
+
require 'logger'
|
11
|
+
require 'pp'
|
10
12
|
|
11
13
|
Savon.configure do |config|
|
12
|
-
config.log = false
|
14
|
+
config.log = false # TODO: Make this a setting
|
13
15
|
end
|
14
16
|
|
15
17
|
|
@@ -33,6 +35,10 @@ class Ideone
|
|
33
35
|
:pass => @password,
|
34
36
|
}
|
35
37
|
@languages_cache = nil
|
38
|
+
# Set up logger
|
39
|
+
@log = Logger.new(STDOUT)
|
40
|
+
@log.level = Logger::WARN
|
41
|
+
|
36
42
|
end
|
37
43
|
|
38
44
|
# Create a submission and upload it to Ideone.
|
@@ -45,7 +51,7 @@ class Ideone
|
|
45
51
|
# * std_input: the string to pass to the program on stdin
|
46
52
|
# * run: a boolean flag to signifying if Ideone should compile and
|
47
53
|
# run the program
|
48
|
-
# *
|
54
|
+
# * is_private: a boolean flag to toggle visibility of code to others
|
49
55
|
#
|
50
56
|
# Returns
|
51
57
|
# -------
|
@@ -54,16 +60,16 @@ class Ideone
|
|
54
60
|
# unique id of the program. The URL of the submission is
|
55
61
|
# http://ideone.com/LINK.
|
56
62
|
def create_submission(source_code, lang_id, std_input="", run=true,
|
57
|
-
|
63
|
+
is_private=false)
|
58
64
|
request_body = @request_body
|
59
65
|
request_body[:sourceCode] = source_code
|
60
66
|
request_body[:language] = lang_id
|
61
67
|
request_body[:input] = std_input
|
62
68
|
request_body[:run] = run
|
63
|
-
request_body[:private] =
|
69
|
+
request_body[:private] = is_private
|
64
70
|
response = @client.request :createSubmission, :body => @request_body
|
65
71
|
|
66
|
-
return response.to_hash[:create_submission_response][:return][:item]
|
72
|
+
return pp response.to_hash[:create_submission_response][:return][:item]
|
67
73
|
end
|
68
74
|
|
69
75
|
# Given the unique link of a submission, returns its current status.
|
@@ -104,7 +110,7 @@ class Ideone
|
|
104
110
|
request_body[:link] = link
|
105
111
|
response = @client.request :getSubmissionStatus, :body => request_body
|
106
112
|
|
107
|
-
return response.to_hash[:
|
113
|
+
return pp response.to_hash[:get_submission_status_response][:return][:item]
|
108
114
|
end
|
109
115
|
|
110
116
|
# Return a hash of requested details about a submission with the id
|
@@ -120,20 +126,26 @@ class Ideone
|
|
120
126
|
# * with_stderr: request the error output
|
121
127
|
# * with_cmpinfo: request compilation flags
|
122
128
|
def submission_details(link,
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
129
|
+
with_source=true,
|
130
|
+
with_input=true,
|
131
|
+
with_output=true,
|
132
|
+
with_stderr=true,
|
133
|
+
with_cmpinfo=true)
|
128
134
|
request_body = @request_body
|
135
|
+
request_body[:link] = link
|
129
136
|
request_body[:withSource] = with_source
|
130
137
|
request_body[:withInput] = with_input
|
131
138
|
request_body[:withOutput] = with_output
|
132
139
|
request_body[:withStderr] = with_stderr
|
133
140
|
request_body[:withCmpinfo] = with_cmpinfo
|
134
|
-
|
141
|
+
begin
|
142
|
+
response = @client.request :getSubmissionDetails, :body => request_body
|
143
|
+
rescue Savon::SOAP::Fault => fault
|
144
|
+
@log.warn fault.to_s
|
145
|
+
raise fault
|
146
|
+
end
|
135
147
|
|
136
|
-
return response.to_hash[:
|
148
|
+
return pp response.to_hash[:get_submission_details_response][:return][:item]
|
137
149
|
end
|
138
150
|
|
139
151
|
# Get a list of supported languages and cache it.
|
@@ -142,15 +154,14 @@ class Ideone
|
|
142
154
|
response = @client.request :getLanguages, :body => @request_body
|
143
155
|
languages = response.to_hash[:get_languages_response][:return][:item]
|
144
156
|
@languages_cache = languages
|
145
|
-
return languages
|
146
157
|
end
|
147
|
-
return @languages_cache
|
158
|
+
return pp @languages_cache
|
148
159
|
end
|
149
160
|
|
150
161
|
# A test function that always returns the same thing.
|
151
162
|
def test
|
152
163
|
response = @client.request :testFunction, :body => @request_body
|
153
164
|
|
154
|
-
return response.to_hash[:test_function_response][:return][:item]
|
165
|
+
return pp response.to_hash[:test_function_response][:return][:item]
|
155
166
|
end
|
156
167
|
end
|
@@ -16,6 +16,7 @@ class TestIdeoneRubyApi < Test::Unit::TestCase
|
|
16
16
|
instance = Ideone.new(USER, PASS)
|
17
17
|
|
18
18
|
result = instance.test
|
19
|
+
puts result
|
19
20
|
assert_not_nil result
|
20
21
|
end
|
21
22
|
|
@@ -31,7 +32,9 @@ class TestIdeoneRubyApi < Test::Unit::TestCase
|
|
31
32
|
def test_create_submission
|
32
33
|
instance = Ideone.new(USER, PASS)
|
33
34
|
|
34
|
-
code =
|
35
|
+
code = <<-eos
|
36
|
+
puts "This is a test submission created from ideone-ruby-api. https://github.com/kennym/ideone-gem/blob/master/lib/ideone.rb"
|
37
|
+
eos
|
35
38
|
result = instance.create_submission(code, 17)
|
36
39
|
|
37
40
|
puts result
|
@@ -41,7 +44,7 @@ class TestIdeoneRubyApi < Test::Unit::TestCase
|
|
41
44
|
def test_submission_status
|
42
45
|
instance = Ideone.new(USER, PASS)
|
43
46
|
|
44
|
-
result = instance.submission_status("
|
47
|
+
result = instance.submission_status("VWMD7")
|
45
48
|
puts result
|
46
49
|
assert_not_nil result
|
47
50
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ideone-ruby-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-07-
|
12
|
+
date: 2011-07-12 00:00:00.000000000 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: savon
|
17
|
-
requirement: &
|
17
|
+
requirement: &13829920 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *13829920
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: shoulda
|
28
|
-
requirement: &
|
28
|
+
requirement: &13828660 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *13828660
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: bundler
|
39
|
-
requirement: &
|
39
|
+
requirement: &13827500 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.0.0
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *13827500
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: jeweler
|
50
|
-
requirement: &
|
50
|
+
requirement: &13826060 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 1.6.4
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *13826060
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: rcov
|
61
|
-
requirement: &
|
61
|
+
requirement: &13824880 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *13824880
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rspec
|
72
|
-
requirement: &
|
72
|
+
requirement: &13799340 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,7 +77,7 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *13799340
|
81
81
|
description:
|
82
82
|
email: knny.myer@gmail.com
|
83
83
|
executables: []
|
@@ -112,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
112
112
|
version: '0'
|
113
113
|
segments:
|
114
114
|
- 0
|
115
|
-
hash:
|
115
|
+
hash: 2345481423367782386
|
116
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|