53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from eca import *
|
|
import eca.http
|
|
|
|
from pprint import pprint
|
|
|
|
# This function will be called to set up the HTTP server
|
|
def add_request_handlers(httpd):
|
|
# add an event-generating request handler to fire 'order' events
|
|
# This requires the POST method because the event generation handler only
|
|
# understands POST requests.
|
|
httpd.add_route('/api/order', eca.http.GenerateEvent('order'), methods=['POST'])
|
|
|
|
# use the library content from the template_static dir instead of our own
|
|
# this is a bit finicky, since execution now depends on a proper working directory.
|
|
httpd.add_content('/lib/', 'template_static/lib')
|
|
httpd.add_content('/style/', 'template_static/style')
|
|
|
|
|
|
@event('order')
|
|
def order(c, e):
|
|
# we received an order...
|
|
|
|
# ...go an print it
|
|
print("Received a new order:")
|
|
pprint(e.data)
|
|
|
|
# ...and emit it to all interested browsers
|
|
# (conceptually, this could also include the Barista's workstation)
|
|
emit('orders',{
|
|
'text': str(e.data)
|
|
});
|
|
|
|
|
|
# Below are some examples of how to handle incoming requests based
|
|
# on observed qualities.
|
|
|
|
# Inform the coffee machine handler that more coffee is required.
|
|
@event('order')
|
|
@condition(lambda c,e: e.data['drink'] == 'Coffee')
|
|
def start_brewing(c,e):
|
|
print("-> Start the coffee brewer!")
|
|
|
|
|
|
# Check for a very specific order
|
|
@event('order')
|
|
@condition(lambda c,e: e.data['drink'] == 'Tea'
|
|
and not e.data['additives']
|
|
and e.data['type'].lower() == 'earl grey'
|
|
and 'hot' in e.data['notes'].lower())
|
|
def picard_has_arrived(c,e):
|
|
print("-> Captain Picard has arrived.")
|
|
|