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.")
 | |
| 
 |