Ejemplo n.º 1
0
def run_code(code, language_id):
    ideone_api = Ideone(
        constants.IDEONE_USERNAME,
        constants.IDEONE_PASSWORD,
        api_url='http://ronreiter.compilers.sphere-engine.com/api/1/service.wsdl')

    code = ideone_api.create_submission(code, language_id=language_id, std_input="")["link"]
    result = None

    while True:
        time.sleep(1)
        result = ideone_api.submission_details(code)
        if result["status"] in [1,3]:
            continue

        break

    data = { "code" : code }
    if result["stderr"] or result["cmpinfo"]:
        data["output"] = "exception"
        if result["cmpinfo"]:
            data["text"] = result["cmpinfo"]
        elif result["stderr"]:
            data["text"] = result["stderr"]
    else:
        data["output"] = "text"
        data["text"] = result["output"]

    return data
Ejemplo n.º 2
0
def run_code(code, language):
    ideone_api = Ideone(
        constants.IDEONE_USERNAME,
        constants.IDEONE_PASSWORD,
        api_url='http://ronreiter.compilers.sphere-engine.com/api/1/service.wsdl')

    code = ideone_api.create_submission(code, language_name=language, std_input="")["link"]
    result = None

    while True:
        time.sleep(1)
        result = ideone_api.submission_details(code)
        if result["status"] in [1,3]:
            continue

        break

    data = { "code" : code }
    if result["stderr"] or result["cmpinfo"]:
        data["output"] = "exception"
        if result["cmpinfo"]:
            data["text"] = result["cmpinfo"]
        elif result["stderr"]:
            data["text"] = result["stderr"]
    else:
        data["output"] = "text"
        data["text"] = result["output"]

    return data
Ejemplo n.º 3
0
def code_solution_compile_status(request):
    link = request.GET.get('link', None)
    
    if not link:
        return {
            'status_code': 500,
            'error': u'Wystąpił nieoczekiwany błąd podczas kompilacji rozwiązania.'
        }
        
    ide = Ideone(settings.IDEONE_USER, settings.IDEONE_PASSWORD)
    details = ide.submission_details(link)
    
    # Jeśli status jest inny niż 0, trzeba poczekać na zakończenie kompilacji/uruchomienia
    # po stronie Ideone
    if details.get('status', -1) != 0:
        return {
            'status_code': 200,
        }
        
    result = details.get('result', None)
    
    # Jeśli result jest inny niż 15, oznacza to, iż program zakończył się niepowodzeniem.
    if result != 15:
        error_message = u'Program nie mógł zostać uruchomiony z nieznanych przyczyn. \
            Proszę skontaktować się z administratorem serwisu.'
        if result == 11:
            error_message = u'Program nie mógł zostać uruchomiony z powodu błędów kompilacji.'
        elif result == 12:
            error_message = u'Program zakończył działanie z powodu nieoczekiwanego błędu wykonania.'
        elif result == 13:
            error_message = u'Czas działania programu przekroczył dopuszczalny limit.'
        elif result == 17:
            error_message = u'Maksymalny limit pamięci został przekroczony. Zoptymalizuj \
                kod źródłowy.'
        elif result == 19:
            error_message = u'Program wykorzystuje odwołania do niedozwolonych operacji i funkcji \
                systemowych.'
        elif result == 20:
            error_message = u'Wystąpił nieoczekiwany błąd komipilacji. Prosimy o pilnt kontakt z \
                administratorem serwisu.'
                
        std_error = cgi.escape(details.get('stderr', ''))
                
        return {
            'status_code': 500,
            'error': u'{}<br /><br />{}'.format(error_message, std_error),
        }
    
    return {
        'status_code': 200,
        'output': details.get('output', ''),
        'time': details.get('time', 0),
    }
Ejemplo n.º 4
0
def code_solution_compile(request):
    source_code = request.POST.get('source_code', None)
    language = request.POST.get('language', None)
    
    if not (source_code and language):
        return {
            'status_code': 500,
            'error': u'Wybierz język programowania oraz podaj kod źródłowy.'
        }
    
    last_submit = cache.get(IDEONET_CACHE_KEY % request.user.id)
    if last_submit:
        last_submit_diff = datetime.now() - last_submit
        
        if last_submit_diff.seconds <= IDEONET_CACHE_TIME:
            return {
                'status_code': 500,
                'error': u'Ponowna kompilacja będzie możliwa za {}s.'\
                    .format(IDEONET_CACHE_TIME - last_submit_diff.seconds)
            }
        
    ide = Ideone(settings.IDEONE_USER, settings.IDEONE_PASSWORD)
    try:
        submission = ide.create_submission(source_code, language_name=language, private=True)
    except IdeoneError:
        code_language = CodeLanguage.objects.get(code=language)
        
        submission = ide.create_submission(source_code, language_name=code_language.name, 
                                           private=True)
        
    cache.set(IDEONET_CACHE_KEY % request.user.id, datetime.now(), IDEONET_CACHE_TIME)
    
    if submission.get('error', 'OK') != 'OK':
        return {
            'status_code': 500,
            'error': submission.get('error', u'Wystąpił błąd podczas kompilowania rozwiązania'),
        }
        
    link = submission.get('link', '')
    
    return {
        'status_code': 200,
        'link': link,
    }
Ejemplo n.º 5
0
         D
         AWK gawk-3.1.6
         AWK mawk-1.3.3
         COBOL 85
         Forth
         Prolog
         bc
         Clojure
         JavaScript
         Go
         Unlambda
         Python 3
         R
         COBOL
         Oz
         Groovy
         Nimrod
         Factor
         F#
         Falcon
    '''
    sys.exit(1)

lang  = sys.argv[1]
print "Paste: and CTRL+D to End the paste..."
paste = sys.stdin.read()
i = Ideone('username', 'APIKey')
res = i.create_submission(paste, lang)
link = res['link']
print "http://www.ideone.com/" + link
Ejemplo n.º 6
0
import cgi
import urllib
import hashlib
import time
import functools

from flask import Flask, render_template, request, make_response, session
#import pymongo
#import redis
import sys

from ideone import Ideone

import constants

ideone_api = Ideone(constants.IDEONE_USERNAME, constants.IDEONE_PASSWORD)
#cache = redis.Redis(host=constants.CACHE_HOST)

# mongo connection
#client = pymongo.MongoClient(host=constants.DB_HOST)
#users = client.tutorials.users

# Flask app
app = Flask(__name__)
app.secret_key = constants.SECRET_KEY

sections = re.compile(
    r"Tutorial\n[=\-]+\n+(.*)\n*Tutorial Code\n[=\-]+\n+(.*)\n*Expected Output\n[=\-]+\n+(.*)\n*Solution\n[=\-]+\n*(.*)\n*",
    re.MULTILINE | re.DOTALL)
WIKI_WORD_PATTERN = re.compile('\[\[([^]|]+\|)?([^]]+)\]\]')
DEFAULT_DOMAIN = constants.LEARNPYTHON_DOMAIN if not len(
import os
from ideone import Ideone

i = Ideone(os.getenv("IDEUSER"), os.getenv("IDEPASS"))
print i.create_submission("print(42)", language_name="python", run=False)
Ejemplo n.º 8
0
from ideone import Ideone
import time
i = Ideone('antonsemenov', 'abc123123')	

def checkSolution(code, checkers, langId):
	p = {}
	p['result'] = 'This is win!'
	for e in checkers:
		currSubmission = i.create_submission(code, language_id = langId, std_input=e.input_value)
		while (i.submission_status(currSubmission['link'])['status'] != 0):
			time.sleep(1)
		if (i.submission_details(currSubmission['link'])['result'] != 15):
			p['result'] = 'Fail, sorry'
			break
	return p
import os
from ideone import Ideone
i = Ideone(os.getenv('IDEUSER'), os.getenv('IDEPASS'))
print(i.create_submission('print(42)', language_name='python', run=False))
import urllib
import urllib2

from collections import OrderedDict

from docutils import nodes
from docutils.parsers.rst import Directive

from ideone import Ideone

IDEONE_AUTHENTICATED = False

CODE_MAP_JSON = 'codemap.json'

try:
    ideone_auth = Ideone('APIUSER', 'APIPASSWORD')
except Exception as e:
    IDEONE_AUTHENTICATED = False
else:
    IDEONE_AUTHENTICATED = True


class RunCodeBlock(nodes.General, nodes.FixedTextElement):
    pass


class RunCode(Directive):
    has_content = False
    required_arguments = 1
    optional_arguments = 0
    option_spec = dict(codesite=str, language=str, run=True)
Ejemplo n.º 11
0
import urllib
import hashlib
import time
import functools

from flask import Flask, render_template, request, make_response, session
#import pymongo
#import redis
import sys

from ideone import Ideone

import constants

ideone_api = Ideone(
    constants.IDEONE_USERNAME,
    constants.IDEONE_PASSWORD,
    api_url='http://ronreiter.compilers.sphere-engine.com/api/1/service.wsdl')
#cache = redis.Redis(host=constants.CACHE_HOST)

# mongo connection
#client = pymongo.MongoClient(host=constants.DB_HOST)
#users = client.tutorials.users

# Flask app
app = Flask(__name__)
app.secret_key = constants.SECRET_KEY

sections = re.compile(
    r"Tutorial\n[=\-]+\n+(.*)\n*Tutorial Code\n[=\-]+\n+(.*)\n*Expected Output\n[=\-]+\n+(.*)\n*Solution\n[=\-]+\n*(.*)\n*",
    re.MULTILINE | re.DOTALL)
WIKI_WORD_PATTERN = re.compile('\[\[([^]|]+\|)?([^]]+)\]\]')
Ejemplo n.º 12
0
         D
         AWK gawk-3.1.6
         AWK mawk-1.3.3
         COBOL 85
         Forth
         Prolog
         bc
         Clojure
         JavaScript
         Go
         Unlambda
         Python 3
         R
         COBOL
         Oz
         Groovy
         Nimrod
         Factor
         F#
         Falcon
    '''
    sys.exit(1)

lang = sys.argv[1]
print "Paste: and CTRL+D to End the paste..."
paste = sys.stdin.read()
i = Ideone('username', 'APIKey')
res = i.create_submission(paste, lang)
link = res['link']
print "http://www.ideone.com/" + link