예제 #1
0
 def handleResponseEnd(self):
     if self.image_parser:
         print "imageparsing ", compress_rate
         try:
           image = self.image_parser.close()
         except IOError as (error):
           print "I/O error: ", error
           print self.image_parser
           
         
         try:
             # do the compression
             format = image.format
             newsize = int(image.size[0] * compress_rate) , int(image.size[1] * compress_rate)
             image.thumbnail(newsize) # likely, image sizing like this does not work
             s = StringIO()
             image.save(s, format)
             buffer = s.getvalue()
         except NameError as (error):
             print "in exception: ", error
             # send Original C-length if just queryed for header
             buffer = " " *(int(self.clength))
         print "Header:  Content-Lengths ", len(buffer)
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         
         # all headers received and processed
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     
     ProxyClient.handleResponseEnd(self)
예제 #2
0
 def handleResponseEnd(self):
     log.msg("handleResponseEnd")
     if self.rewrite:
         banner2 = banner % dict(
             height = self.config['height'],
             bannerurl = self.config['bannerurl'],
             )
         buffer = self.buffer.replace("</head>", banner2)
         ProxyClient.handleHeader(self, "Content-Length", str(len(buffer)))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
         self.rewrite = False
     ProxyClient.handleResponseEnd(self)
 def handleResponseEnd(self):
     if self.image_parser:
         image = self.image_parser.close()
         try:
             format = image.format
             image = image.rotate(180)
             s = StringIO()
             image.save(s, format)
             buffer = s.getvalue()
         except:
             buffer = ""
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     ProxyClient.handleResponseEnd(self)
 def handleResponseEnd(self):
     if self.image_parser:
         image = self.image_parser.close()
         try:
             format = image.format
             image = image.rotate(180)
             s = StringIO()
             image.save(s, format)
             buffer = s.getvalue()
         except:
             buffer = ""
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     ProxyClient.handleResponseEnd(self)
예제 #5
0
 def handleResponseEnd(self):
     if self.replacing is not None:
         try:
             buffer = open(self.replacing).read()
         except:
             buffer = ""
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     elif self.rewriting:
         buffer = self._buf.replace('"id": "BIRD_RED"', '"id": "BIRD_BLACK"')
         ProxyClient.handleHeader(self, "Content-Length", len(buffer))
         ProxyClient.handleEndHeaders(self)
         ProxyClient.handleResponsePart(self, buffer)
     ProxyClient.handleResponseEnd(self)
예제 #6
0
    def handleResponseEnd(self):
        if self.needsRewrite():
            log.msg("Rewriting " + self.father.uri)

            # We might have increased or decreased the page size. Since we have not written
            # to the client yet, we can still modify the headers.
            self.rewriteResponse()
            self.header_buffer["content-length"] = len(self.buffer)
            for key in self.header_buffer.keys():
                ProxyClient.handleHeader(self, key, self.header_buffer[key])
            ProxyClient.handleEndHeaders(self)
            ProxyClient.handleResponsePart(self, self.buffer) 
            
            self.buffer = ""
            self.header_buffer = {}
        
        ProxyClient.handleResponseEnd(self)
 def handleEndHeaders(self):
     ProxyClient.handleEndHeaders(self)
 def handleEndHeaders(self):
     if self.image_parser:
         pass  #Need to calculate and send Content-Length first
     else:
         ProxyClient.handleEndHeaders(self)
예제 #9
0
 def handleEndHeaders(self):
     if not self.rewrite:
         if self.length:
             ProxyClient.handleHeader(self, "Content-Length", self.length)
         ProxyClient.handleEndHeaders(self)
 def handleEndHeaders(self):
     if self.image_parser:
         pass #Need to calculate and send Content-Length first
     else:
         ProxyClient.handleEndHeaders(self)
예제 #11
0
            if self.reencode and ("flash" not in self.ctype):
                newbuffer = StringIO.StringIO()
                gzipper = gzip.GzipFile(fileobj=newbuffer,mode='wb')
                gzipper.write(self._buffer)
                gzipper.close()
                self._buffer = newbuffer.getvalue()
                self.headers_to_cache["Content-Encoding"]="gzip"
                ProxyClient.handleHeader(self,"Content-Encoding","gzip")
            self.headers_to_cache["Content-Length"]=len(self._buffer)
            ProxyClient.handleHeader(self, "Content-Length", len(self._buffer))
            ProxyClient.handleResponsePart(self,self._buffer)
        else:
            if self.encoding:
                self.headers_to_cache["Content-Encoding"]=self.encoding
                ProxyClient.handleHeader(self,"Content-Encoding",self.encoding)
            ProxyClient.handleEndHeaders(self)
            if len(self._buffer):
                self.factory.cache.set(self.factory.key,(self.headers_to_cache,self._buffer))
        ProxyClient.handleResponseEnd(self) 

class MyProxyClientFactory(ProxyClientFactory):
    protocol = MyProxyClient
    def __init__(self, *args, **kwargs):
        self.host = ''
        self.realhost = ''
        self.rp = None
        self.cache = None
        self.key = None
        ProxyClientFactory.__init__(self,*args,**kwargs)

    def buildProtocol(self, addr):
예제 #12
0
 def handleEndHeaders(self):
     if self.replacing or self.rewriting:
         pass  # Need to calculate and send Content-Length first
     else:
         ProxyClient.handleEndHeaders(self)
예제 #13
0
 def handleEndHeaders(self):
     if not self.needsRewrite():
         ProxyClient.handleEndHeaders(self)