Пример #1
0
    def getChild(self, path, req):
        if path == "force":
            return self.force(req)
        if path == "ping":
            return self.ping(req)
        if path == "events":
            num = req.postpath.pop(0)
            req.prepath.append(num)
            num = int(num)
            # TODO: is this dead code? .statusbag doesn't exist,right?
            log.msg("getChild['path']: %s" % req.uri)
            return NoResource("events are unavailable until code gets fixed")
            filename = req.postpath.pop(0)
            req.prepath.append(filename)
            e = self.builder_status.getEventNumbered(num)
            if not e:
                return NoResource("No such event '%d'" % num)
            file = e.files.get(filename, None)
            if file == None:
                return NoResource("No such file '%s'" % filename)
            if type(file) == type(""):
                if file[:6] in ("<HTML>", "<html>"):
                    return static.Data(file, "text/html")
                return static.Data(file, "text/plain")
            return file
        if path == "builds":
            return BuildsResource(self.builder_status, self.builder_control)

        return HtmlResource.getChild(self, path, req)
Пример #2
0
    def render_GET(self, request):
        # https://stackoverflow.com/questions/1538617/http-download-very-big-file/1657324
        if 'camid' in request.args:
            videoID = request.args.get('camid')[0]
            myEditedFileName = os.path.join(self._CacheLocation,
                                            str(videoID) + "-edit.mp4")
            myPlayListFileName = os.path.join(self._CacheLocation,
                                              str(videoID) + ".m3u8")
            finalVideoFileToServe = os.path.join(self._CacheLocation,
                                                 str(videoID) + ".mp4")
            if os.path.isfile(myEditedFileName):
                finalVideoFileToServe = myEditedFileName
            elif os.path.isfile(myPlayListFileName):
                finalVideoFileToServe = myPlayListFileName
            if os.path.isfile(finalVideoFileToServe):
                request.responseHeaders.setRawHeaders(
                    "server", ["Bliknet Streamer HTTP Server"])
                # request.responseHeaders.setRawHeaders("server", ["Bliknet Streamer HTTP Server"])
                # request.responseHeaders.setRawHeaders("Content-Type", ["text/vtt;charset=utf-8"])
                request.responseHeaders.setRawHeaders(
                    "Access-Control-Allow-Origin", ["*"])
                request.responseHeaders.setRawHeaders(
                    "Content-Type",
                    [mimetypes.guess_type(finalVideoFileToServe)[0]])
                request.responseHeaders.setRawHeaders(
                    "Content-Length", [os.path.getsize(finalVideoFileToServe)])
                rangedFile = static.File(finalVideoFileToServe,
                                         defaultType='video/octet-stream')
                return rangedFile.render_GET(request)
            else:
                return NoResource()

        elif "nasfile" in request.args and self._NASMount is not None:
            NASFileLocation = request.args.get('nasfile')[0]
            myFileName = os.path.join(self._NASMount, str(NASFileLocation))
            if os.path.isfile(myFileName):
                myMimeType = mimetypes.guess_type(myFileName)
                request.responseHeaders.setRawHeaders(
                    "server", ["Bliknet Streamer HTTP Server"])
                request.responseHeaders.setRawHeaders("Content-Type",
                                                      [myMimeType])
                request.responseHeaders.setRawHeaders(
                    "Access-Control-Allow-Origin", ["*"])
                request.responseHeaders.setRawHeaders(
                    "Content-Length", [os.path.getsize(myFileName)])
                rangedFile = static.File(myFileName, defaultType=myMimeType)
                return rangedFile.render_GET(request)
            else:
                return NoResource()
        else:
            return NoResource()
Пример #3
0
 def html(self, request):
     tpl = "<HTML><BODY>\n\n%s\n\n</body></html>\n"
     pptpl = "<HTML><BODY>\n\n<pre>%s</pre>\n\n</body></html>\n"
     t = request.postpath[0]  # one of 'short', 'long' #, or 'html'
     if isinstance(self.results, failure.Failure):
         # it would be nice to remove unittest functions from the
         # traceback like unittest.format_exception() does.
         if t == 'short':
             s = StringIO.StringIO()
             self.results.printTraceback(s)
             return pptpl % PRE(s.getvalue())
         elif t == 'long':
             s = StringIO.StringIO()
             self.results.printDetailedTraceback(s)
             return pptpl % PRE(s.getvalue())
         #elif t == 'html':
         #    return tpl % formatFailure(self.results)
         # ACK! source lines aren't stored in the Failure, rather,
         # formatFailure pulls them (by filename) from the local
         # disk. Feh. Even printTraceback() won't work. Double feh.
         return NoResource("No such mode '%s'" % t)
     if self.results == None:
         return tpl % "No results to show: test probably passed."
     # maybe results are plain text?
     return pptpl % PRE(self.results)
Пример #4
0
 def decorator(*args, **kwargs):
     try: return func(*args, **kwargs)
     except:
         failure = Failure()
         msg = getException(failure)
         msg += ': ' + failure.getErrorMessage()
         return NoResource(msg)
Пример #5
0
 def getChild(self, path, request):
     try:
         name = tuple(path.split("."))
         result = self.test_results[name]
         return TestResult(name, result)
     except KeyError:
         return NoResource("No such test name '%s'" % path)
Пример #6
0
    def getChild(self, path, req):
        try:
            changeid = int(path)
        except ValueError:
            return NoResource("Expected a change number")

        return ChangeResource(changeid)
Пример #7
0
 def getChild(self, path, req):
     for log in self.step_status.getLogs():
         if path == log.getName():
             if log.hasContents():
                 return IHTMLLog(interfaces.IStatusLog(log))
             return NoResource("Empty Log '%s'" % path)
     return HtmlResource.getChild(self, path, req)
Пример #8
0
 def getChild(self, name, request):
     if name:
         try:
             seq = int(name)
             return LiveAPI2ChannelSeq(self._ch, seq, self._shared_dict)
         except:
             return NoResource('Seq format error!')
Пример #9
0
 def getChild(self, path, req):
     if path == '':
         return Redirect('..')
     num = int(path)
     c = self.getStatus(req).getChange(num)
     if not c:
         return NoResource("No change number '%d'" % num)
     return ChangeResource(c)
Пример #10
0
 def render(self, request):
     deferrd = handle_api2_request(self._ch, self._seq, self._shared_dict)
     if deferrd:
         request.setHeader('Content-Type', 'video/x-flv')
         request.setHeader('Cache-Control', 'max-age=2592000')
         request.setHeader('Connection', 'keep-alive')
         deferrd.addCallback(self._cb_render_GET, request)
         return server.NOT_DONE_YET
     else:
         return NoResource('Chunk not found!').render(request)
Пример #11
0
 def getChild(self, name, request):
     try:
         ref = resolve_url(request.uri)
         if ref:
             return (TestResource(ref))
         else:
             return SimpleResource(
                 html_render.html_page('Hola Mundo!', 'Pagina inicial'))
     except:
         return NoResource()
Пример #12
0
 def getChild(self, path, req):
     try:
         num = int(path)
         c = self.getStatus(req).getChange(num)
     except ValueError:
         c = None
         num = path
     if not c:
         return NoResource("No change number '%s'" % path)
     return ChangeResource(c, num)
Пример #13
0
 def getChild(self, name, request):
     r = self.children.get(name, None)
     if r is None:
         # Go into the thing
         callback, args = self._get_callback(request)
         if callback is None:
             return NoResource()
         else:
             return maybeResource(callback)(request, **args)
     else:
         return r
Пример #14
0
 def getChild(self, chunkName, request):
     """
     Return resource for a names child.
     """
     if request.method == 'PUT':
         if self.store.hasChunk(chunkName):
             return ConflictResource()
         return ChunkResource(self.store, chunkName)
     elif request.method in ('GET', 'HEAD'):
         if not self.store.hasChunk(chunkName):
             return NoResource()
         return ChunkResource(self.store, chunkName)
Пример #15
0
 def render_GET(self, request):
     if not self._shared_dict.has_key(self.channel):
         return NoResource("Channel Not Found!").render(request)
     frag = self._shared_dict[self.channel]
     try:
         args    = request.args
         #peer_id = args['id'][0]
         start   = args.has_key('start') and int(args['start'][0]) or -1
         head    = args.has_key('head') and int(args.get('head')[0]) or 0
         offset  = args.has_key('offset') and int(args.get('offset')[0]) or config.DEFAULT_RETURN_BYTES
     except Exception, e:
         request.setHeader('Cache-Control', 'no-cache')
         return resource.ErrorPage(http.INTERNAL_SERVER_ERROR,'Query string format error',str(e)).render(request)
Пример #16
0
 def getChild(self, path, req):
     try:
         self.getStatus(req).getSlave(path)
         return OneBuildSlaveResource(path)
     except KeyError:
         return NoResource("No such slave '%s'" % html.escape(path))
Пример #17
0
 def getChild(self, name, request):
     if name == '':
         return NoResource("Channel not found!")
     else:
         self.channel = name
         return self
Пример #18
0
 def getChildWithDefault(self, name, request):
     """
     This resource cannot have children, hence this will always fail.
     """
     return NoResource("No such child resource.")
Пример #19
0
 def getChild(self, path, req):
     num = int(path)
     c = self.getStatus(req).getChange(num)
     if not c:
         return NoResource("No change number '%d'" % num)
     return StaticHTML(c.asHTML(), "Change #%d" % num)
Пример #20
0
 def getChild(self, name, request):
     handler = self.page_handler.get(request.path)
     if handler is not None:
         return handler()
     else:
         return NoResource()
Пример #21
0
 def getChild(self, name, request):
     if name:
         return LiveAPI2Channel(name, self._shared_dict)
     return NoResource('Require channel name!')
Пример #22
0
 def getChild(self, name, request):
     if name:
         self._channel = name
         return self
     else:
         return NoResource('Not Implemented Error!')
Пример #23
0
 def getChild(self, path, request):
     if self.tests.has_key(path):
         return self.oneTestClass(self, path, self.tests[path])
     return NoResource("No such test '%s'" % path)