| // Generated by CoffeeScript 1.12.7 | 
| (function() { | 
|   var EventSourceReceiver, transport, utils, | 
|     extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, | 
|     hasProp = {}.hasOwnProperty; | 
|   | 
|   utils = require('./utils'); | 
|   | 
|   transport = require('./transport'); | 
|   | 
|   EventSourceReceiver = (function(superClass) { | 
|     extend(EventSourceReceiver, superClass); | 
|   | 
|     function EventSourceReceiver() { | 
|       return EventSourceReceiver.__super__.constructor.apply(this, arguments); | 
|     } | 
|   | 
|     EventSourceReceiver.prototype.protocol = "eventsource"; | 
|   | 
|     EventSourceReceiver.prototype.doSendFrame = function(payload) { | 
|       var data; | 
|       data = ['data: ', utils.escape_selected(payload, '\r\n\x00'), '\r\n\r\n']; | 
|       return EventSourceReceiver.__super__.doSendFrame.call(this, data.join('')); | 
|     }; | 
|   | 
|     return EventSourceReceiver; | 
|   | 
|   })(transport.ResponseReceiver); | 
|   | 
|   exports.app = { | 
|     eventsource: function(req, res) { | 
|       var headers, origin; | 
|       if (!req.headers['origin'] || req.headers['origin'] === 'null') { | 
|         origin = '*'; | 
|       } else { | 
|         origin = req.headers['origin']; | 
|         res.setHeader('Access-Control-Allow-Credentials', 'true'); | 
|       } | 
|       res.setHeader('Content-Type', 'text/event-stream'); | 
|       res.setHeader('Access-Control-Allow-Origin', origin); | 
|       res.setHeader('Vary', 'Origin'); | 
|       headers = req.headers['access-control-request-headers']; | 
|       if (headers) { | 
|         res.setHeader('Access-Control-Allow-Headers', headers); | 
|       } | 
|       res.writeHead(200); | 
|       res.write('\r\n'); | 
|       transport.register(req, this, new EventSourceReceiver(req, res, this.options)); | 
|       return true; | 
|     } | 
|   }; | 
|   | 
| }).call(this); |