Skip to content

Commit

Permalink
added experimental iframes.json endpoint (still untested & undocumented)
Browse files Browse the repository at this point in the history
  • Loading branch information
pablohoffman committed Jun 21, 2013
1 parent 84131a1 commit f856cdb
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
19 changes: 19 additions & 0 deletions splash/qtrender2.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import json
from PyQt4.QtWebKit import QWebPage, QWebSettings, QWebView
from PyQt4.QtCore import Qt, QUrl, QBuffer, QSize
from PyQt4.QtGui import QPainter, QImage
Expand Down Expand Up @@ -110,3 +111,21 @@ def _render(self):
b = QBuffer()
image.save(b, "png")
return str(b.data())


class IframesRender(HtmlRender):

def _render(self):
frame = self.web_view.page().mainFrame()
return json.dumps(self._frameToDict(frame))

def _frameToDict(self, frame):
g = frame.geometry()
return {
"url": str(frame.url().toString()),
"requestedUrl": str(frame.requestedUrl().toString()),
"html": unicode(frame.toHtml()),
"name": unicode(frame.frameName()),
"geometry": (g.x(), g.y(), g.width(), g.height()),
"childFrames": map(self._frameToDict, frame.childFrames()),
}
13 changes: 12 additions & 1 deletion splash/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from twisted.web.resource import Resource
from twisted.internet import reactor, defer
from twisted.python import log
from splash.qtrender2 import HtmlRender, PngRender, RenderError
from splash.qtrender2 import HtmlRender, PngRender, IframesRender, RenderError
from splash.utils import getarg, BadRequest, get_num_fds, get_leaks
from splash import sentry

Expand Down Expand Up @@ -96,6 +96,16 @@ def _getRender(self, request):
return self.pool.render(PngRender, url, baseurl, width, height, vwidth, vheight)


class RenderIframes(RenderHtml):

content_type = "application/json"

def _getRender(self, request):
url = getarg(request, "url")
baseurl = getarg(request, "baseurl", None)
return self.pool.render(IframesRender, url, baseurl)


class Debug(Resource):

isLeaf = True
Expand All @@ -120,6 +130,7 @@ def __init__(self, pool):
Resource.__init__(self)
self.putChild("render.html", RenderHtml(pool))
self.putChild("render.png", RenderPng(pool))
self.putChild("iframes.json", RenderIframes(pool))
self.putChild("debug", Debug(pool))

def getChild(self, name, request):
Expand Down

0 comments on commit f856cdb

Please sign in to comment.