Beispiel #1
0
    def handleClient(self,fd):
        # still need to figure out this whole thing.
        # Look at the Google group and on the 
        # slides called "event-driven-architecture"
        parser = HTMLParser(self.debug.isDebug())
        fileServer = FileServer(self.webServerConfig, self.debug.isDebug())

        while(True):
            request = self.cache[fd]
            try:
                data = self.clients[fd].recv(self.size)
                if data:
                    request += data
                else:
                    self.poller.unregister(fd)
                    self.clients[fd].close()
                    del self.clients[fd]
                    del self.last_used[fd]
                    break
            except socket.error, e:
                err = e.args[0]
                if err == errno.EAGAIN or err == errno.EWOULDBLOCK:
                    break

            if request.find("\r\n\r\n"):
                response = ""
                if parser.parse(request):
                    self.debug.printMessage("Parsing Completed")
                    response = fileServer.getResponse(parser)

                else:
                    self.debug.printMessage("Parsing Failed")
                    errorCodes = ErrorResponseCodes()
                    response = errorCodes.get400()
                
                # Sending response
                while True:
                    try:
                        sentBytes = self.clients[fd].send(response)
                        break
                    except socket.error, e:
                        err = e.args[0]
                        if err == errno.EAGAIN or err == errno.EWOULDBLOCK:
                            continue
                filePath = fileServer.getFilePath()
                if not filePath == "":
                    self.sendFile(self.clients[fd], filePath)

                break
Beispiel #2
0
def search():
    term = request.args.get('term')
    parser = HTMLParser()
    result = parser.parse(term)

    return result