Class: Terminus::Proxy::DriverBody
- Inherits:
-
Object
- Object
- Terminus::Proxy::DriverBody
- Defined in:
- lib/terminus/proxy/driver_body.rb
Constant Summary collapse
- ASYNC_BROWSERS =
%w[Android]- TEMPLATE =
ERB.new(" <script type=\"text/javascript\" id=\"terminus-data\">\n TERMINUS_STATUS = <%= @response.first %>;\n TERMINUS_HEADERS = {};\n <% @response[1].each do |key, value| %>\n TERMINUS_HEADERS[<%= key.inspect %>] = <%= value.inspect %>;\n <% end %>\n TERMINUS_SOURCE = <%= page_source %>;\n </script>\n <script type=\"text/javascript\">\n (function() {\n var terminusScript = document.getElementById('terminus-data');\n terminusScript.parentNode.removeChild(terminusScript);\n })();\n </script>\n <% if @async %>\n <script type=\"text/javascript\">\n (function() {\n var head = document.getElementsByTagName('head')[0],\n script = document.createElement('script');\n\n script.type = 'text/javascript';\n script.src = '<%= @host %>/bootstrap.js';\n head.appendChild(script);\n })();\n </script>\n <% else %>\n <script type=\"text/javascript\" src=\"<%= @host %><%= FAYE_MOUNT %>/client.js\"></script>\n <script type=\"text/javascript\" src=\"<%= @host %>/compiled/terminus-min.js\"></script>\n <script type=\"text/javascript\">\n setTimeout(function() {\n Terminus.connect('<%= @env['SERVER_NAME'] %>', <%= Terminus.port %>);\n }, 0);\n </script>\n <% end %>\n")
Instance Method Summary collapse
- #each(&block) ⇒ Object
-
#initialize(env, response) ⇒ DriverBody
constructor
A new instance of DriverBody.
Constructor Details
#initialize(env, response) ⇒ DriverBody
Returns a new instance of DriverBody.
44 45 46 47 48 49 50 |
# File 'lib/terminus/proxy/driver_body.rb', line 44 def initialize(env, response) @env = env @response = response @body = response[2] @host = "http://#{@env['SERVER_NAME']}:#{Terminus.port}" @async = ASYNC_BROWSERS.include?(UserAgent.parse(env['HTTP_USER_AGENT']).browser) end |
Instance Method Details
#each(&block) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/terminus/proxy/driver_body.rb', line 52 def each(&block) script_injected = false @source = '' @body.each do |fragment| @source << fragment output = inject_script(fragment) script_injected ||= (output != fragment) block.call(output) end unless script_injected block.call(TEMPLATE.result(binding)) end end |