lib/celerity/viewer_connection.rb in jarib-celerity-0.0.6.16 vs lib/celerity/viewer_connection.rb in jarib-celerity-0.0.6.17
- old
+ new
@@ -1,33 +1,64 @@
module Celerity
class ViewerConnection
+ #
+ # Create a new connection to the given host/port
+ #
+
def self.create(host, port)
+ # if the connection fails, we won't spend time loading json
socket = TCPSocket.new(host, port)
require "json"
new(socket)
end
def initialize(socket)
@socket = socket
end
+ #
+ # Tells the viewer to render the given HTML, with the given URL as base url.
+ #
+
def render_html(html, url)
send_data({'method' => 'page_changed', 'html' => html, 'url' => url}.to_json)
end
- def save(path = nil)
+ #
+ # Tells the viewer to save a screenshot of the current page to the given path.
+ # May not be available on all viewers.
+ #
+
+ def save(path)
send_data({'method' => 'save', 'path' => path}.to_json)
end
+ #
+ # Tells the viewer to dump the render tree to the given path.
+ # Only available on the Qt viewer.
+ #
+
+ def save_render_tree(path)
+ send_data({'method' => 'save_render_tree', 'path' => path}.to_json)
+ end
+
+ #
+ # Close the connection.
+ #
+
def close
- @socket.close
+ @socket.close rescue nil
end
private
- def send_data(data)
- @socket.write ["Content-Length: #{data.size}", data].join("\n\n")
+ def send_data(json)
+ data = "Content-Length: #{json.size}\n\n#{json}"
+ @socket.write data
+ @socket.flush
+
+ nil
end
end
end
\ No newline at end of file