200 démons triviaux

master
Florent Becker 2021-09-21 17:01:29 +02:00
commit 1327e6dd94
1208 changed files with 30780 additions and 0 deletions

View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro {{word}}.
.. easypython:: ./exercice{{word}}
:language: DémonPython
:titre: Exercice Stupide {{word}}

11
source/exercice0.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 0.
.. easypython:: ./exercice0
:language: DémonPython
:titre: Exercice Stupide 0

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala0 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice1.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 1.
.. easypython:: ./exercice1
:language: DémonPython
:titre: Exercice Stupide 1

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala1 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice10.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 10.
.. easypython:: ./exercice10
:language: DémonPython
:titre: Exercice Stupide 10

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala10 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice100.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 100.
.. easypython:: ./exercice100
:language: DémonPython
:titre: Exercice Stupide 100

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala100 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice101.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 101.
.. easypython:: ./exercice101
:language: DémonPython
:titre: Exercice Stupide 101

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala101 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice102.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 102.
.. easypython:: ./exercice102
:language: DémonPython
:titre: Exercice Stupide 102

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala102 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice103.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 103.
.. easypython:: ./exercice103
:language: DémonPython
:titre: Exercice Stupide 103

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala103 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice104.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 104.
.. easypython:: ./exercice104
:language: DémonPython
:titre: Exercice Stupide 104

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala104 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice105.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 105.
.. easypython:: ./exercice105
:language: DémonPython
:titre: Exercice Stupide 105

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala105 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice106.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 106.
.. easypython:: ./exercice106
:language: DémonPython
:titre: Exercice Stupide 106

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala106 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice107.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 107.
.. easypython:: ./exercice107
:language: DémonPython
:titre: Exercice Stupide 107

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala107 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice108.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 108.
.. easypython:: ./exercice108
:language: DémonPython
:titre: Exercice Stupide 108

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala108 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice109.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 109.
.. easypython:: ./exercice109
:language: DémonPython
:titre: Exercice Stupide 109

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala109 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice11.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 11.
.. easypython:: ./exercice11
:language: DémonPython
:titre: Exercice Stupide 11

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala11 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice110.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 110.
.. easypython:: ./exercice110
:language: DémonPython
:titre: Exercice Stupide 110

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala110 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice111.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 111.
.. easypython:: ./exercice111
:language: DémonPython
:titre: Exercice Stupide 111

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala111 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

View File

@ -0,0 +1,3 @@
cbor
flask
waitress

View File

@ -0,0 +1,7 @@
from setuptools import setup, find_packages
setup(
name="ToujoursContent",
version="0.1",
packages=find_packages(),
scripts=['daemon.py']
)

View File

@ -0,0 +1,3 @@
with (import <nixpkgs> {});
(python3.withPackages (ps: [ps.flask ps.waitress ps.pip])).env

11
source/exercice112.rst Normal file
View File

@ -0,0 +1,11 @@
Echauffement
------------
Exercice stupide numéro 112.
.. easypython:: ./exercice112
:language: DémonPython
:titre: Exercice Stupide 112

View File

@ -0,0 +1,77 @@
#!/usr/bin/env python
from flask import Flask, request, jsonify
from waitress import serve
import os
def handle(event, context):
return {
"statusCode": 200,
"body": {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement tralala112 que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
}
app = Flask(__name__)
class Event:
def __init__(self):
self.body = request.get_data()
self.headers = request.headers
self.method = request.method
self.query = request.args
self.path = request.path
class Context:
def __init__(self):
self.hostname = os.getenv('HOSTNAME', 'localhost')
def format_status_code(resp):
if 'statusCode' in resp:
return resp['statusCode']
return 200
def format_body(resp):
if 'body' not in resp:
return ""
elif type(resp['body']) == dict:
return jsonify(resp['body'])
else:
return str(resp['body'])
def format_headers(resp):
if 'headers' not in resp:
return []
elif type(resp['headers']) == dict:
headers = []
for key in resp['headers'].keys():
header_tuple = (key, resp['headers'][key])
headers.append(header_tuple)
return headers
return resp['headers']
def format_response(resp):
if resp == None:
return ('', 200)
statusCode = format_status_code(resp)
body = format_body(resp)
headers = format_headers(resp)
return (body, statusCode, headers)
@app.route('/', defaults={'path': ''}, methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
@app.route('/<path:path>', methods=['GET', 'PUT', 'POST', 'PATCH', 'DELETE'])
def call_handler(path):
event = Event()
context = Context()
response_data = handle(event, context)
resp = format_response(response_data)
return resp
if __name__ == '__main__':
serve(app, port=8082)

View File

@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""
Un serveur pour répondre à une tentative étudiante
On est content quoi qu'on nous propose…
"""
import cbor
import sys
import json
import signal
from http.server import BaseHTTPRequestHandler
import socketserver
def résultat(code_etu):
return {
"_valide": True,
"_messages": ["T'es un·e champion·ne", "C'est exactement '" + str(code_etu) + "' que j'attendais"],
'feedbacks_html': "<div>\n<p>Exercice réussi!</p>\n<ul>\n<li>T'es un·e champion·ne</li>\n<li>C'est exactement 'b'coucou'' que j'attendais</li>\n</ul>\n</div>\n"
}
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
mesg=b""
while True:
line = self.rfile.readline().strip()
chunk_length = int(line, 16)
if chunk_length != 0:
chunk = self.rfile.read(chunk_length)
mesg+=chunk
self.rfile.readline()
else:
break
self.send_response(200)
self.end_headers()
dict_code_etu = cbor.loads(mesg)
code_etu = dict_code_etu["code_etu"]
print("reçu: ", code_etu)
self.wfile.write(json.dumps(résultat(code_etu)).encode() + b'\n')
self.wfile.flush()
def sigterm_handler(_signo, _stack_frame):
exit(0)
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
with socketserver.TCPServer(("", 8082), Handler ) as httpd:
httpd.serve_forever()

Some files were not shown because too many files have changed in this diff Show More