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(<<-HTML) <script type="text/javascript" id="terminus-data"> TERMINUS_STATUS = <%= @response.first %>; TERMINUS_HEADERS = {}; <% @response[1].each do |key, value| %> TERMINUS_HEADERS[<%= key.inspect %>] = <%= value.inspect %>; <% end %> TERMINUS_SOURCE = <%= page_source %>; </script> <script type="text/javascript"> (function() { var terminusScript = document.getElementById('terminus-data'); terminusScript.parentNode.removeChild(terminusScript); })(); </script> <% if @async %> <script type="text/javascript"> (function() { var head = document.getElementsByTagName('head')[0], script = document.createElement('script'); script.type = 'text/javascript'; script.src = '<%= @host %>/bootstrap.js'; head.appendChild(script); })(); </script> <% else %> <script type="text/javascript" src="<%= @host %><%= FAYE_MOUNT %>/client.js"></script> <script type="text/javascript" src="<%= @host %>/compiled/terminus-min.js"></script> <script type="text/javascript"> setTimeout(function() { Terminus.connect('<%= @env['SERVER_NAME'] %>', <%= Terminus.port %>); }, 0); </script> <% end %> HTML
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 |