I wrote my first Twisted 10.1.0 web Resource , and I am looking for feedback because I feel that this is not in line with best practice and may contain newbies errors.
The resource responds to /?url=http://www.foo.baz/abc123 and relies on a service that returns a dict . If something goes wrong (for example, an invalid or non-existent url , then 400 returned).
Any comments? All you need to fix to improve
class ProcessedUrl(resource.Resource): isLeaf = True def __init__(self, service): resource.Resource.__init__(self) self.service = service def _cancel(self, err, deferred): deferred.cancel() def _write(self, value, request): request.setResponseCode(http.OK) request.write(json.dumps(value)) request.finish() def _cleanUrl(self, url): return cleanUrl(url) def _checkUrl(self, url): if url is not None: if isValidUrl(url): return True return False def render_GET(self, request): request.setResponseCode(http.BAD_REQUEST) url = request.args.get('url', [None])[0] if self._checkUrl(url): url = self._cleanUrl(url) d = self.service.processUrl(url) request.notifyFinish().addErrback(self._cancel, d) d.addCallback(_write) d.addErrback(log.err) else: return 'Invalid or no URL.' return server.NOT_DONE_YET def getChild(self, name, request): return self
source share