def __init__(self, uri, method="GET", req_hdrs=None, req_body=None, status_cb=None, body_procs=None): orig_req_hdrs = req_hdrs or [] rh = orig_req_hdrs + [('Accept-Encoding', 'gzip')] RedFetcher.__init__(self, uri, method, rh, req_body, status_cb, body_procs, req_type=method) # Extra metadata that the "main" RED will be adorned with self.state.orig_req_hdrs = orig_req_hdrs self.state.age = None self.state.store_shared = None self.state.store_private = None self.state.freshness_lifetime = None self.state.stale_serveable = None self.state.partial_support = None self.state.inm_support = None self.state.ims_support = None self.state.gzip_support = None self.state.gzip_savings = 0 # check the URI if not re.match("^\s*%s\s*$" % absolute_URI, uri, re.VERBOSE): self.state.set_message('uri', rs.URI_BAD_SYNTAX) if len(uri) > max_uri: self.state.set_message('uri', rs.URI_TOO_LONG, uri_len=f_num(len(uri)) )
def __init__(self, red): self.red = red if "gzip" in red.parsed_hdrs.get('content-encoding', []): req_hdrs = [h for h in red.orig_req_hdrs if h[0].lower() != 'accept-encoding'] RedFetcher.__init__(self, red.uri, red.method, req_hdrs, red.req_body, red.status_cb, [], "conneg") else: self.red.gzip_support = False
def __init__(self, red): self.red = red if red.parsed_hdrs.has_key('last-modified'): date_str = time.strftime( '%a, %d %b %Y %H:%M:%S GMT', time.gmtime(red.parsed_hdrs['last-modified']) ) req_hdrs = red.req_hdrs + [ ('If-Modified-Since', date_str), ] RedFetcher.__init__(self, red.uri, red.method, req_hdrs, red.req_body, red.status_cb, [], "LM validation" ) else: self.red.ims_support = False
def __init__(self, red): self.red = red if red.parsed_hdrs.has_key('etag'): weak, etag = red.parsed_hdrs['etag'] if weak: weak_str = "W/" # TODO: message on weak etag else: weak_str = "" etag_str = '%s"%s"' % (weak_str, etag) req_hdrs = red.req_hdrs + [ ('If-None-Match', etag_str), ] RedFetcher.__init__(self, red.uri, red.method, req_hdrs, red.req_body, red.status_cb, [], "ETag validation" ) else: self.red.inm_support = False
def __init__(self, uri, method="GET", req_hdrs=None, req_body=None, status_cb=None, body_procs=None): orig_req_hdrs = req_hdrs or [] rh = orig_req_hdrs + [(u'Accept-Encoding', u'gzip')] RedFetcher.__init__(self, uri, method, rh, req_body, status_cb, body_procs, req_type=method) # Extra metadata that the "main" RED will be adorned with self.state.orig_req_hdrs = orig_req_hdrs self.state.age = None self.state.store_shared = None self.state.store_private = None self.state.freshness_lifetime = None self.state.stale_serveable = None self.state.partial_support = None self.state.inm_support = None self.state.ims_support = None self.state.gzip_support = None self.state.gzip_savings = 0 # check the URI if not re.match("^\s*%s\s*$" % URI, uri, re.VERBOSE): self.state.set_message('uri', rs.URI_BAD_SYNTAX) if '#' in uri: # chop off the fragment uri = uri[:uri.index('#')] if len(uri) > max_uri: self.state.set_message('uri', rs.URI_TOO_LONG, uri_len=f_num(len(uri)))
def __init__(self, red): self.red = red if 'bytes' in red.parsed_hdrs.get('accept-ranges', []): if len(red.res_body_sample) == 0: return sample_num = random.randint(0, len(red.res_body_sample) - 1) sample_len = min(96, len(red.res_body_sample[sample_num][1])) self.range_start = red.res_body_sample[sample_num][0] self.range_end = self.range_start + sample_len self.range_target = \ red.res_body_sample[sample_num][1][:sample_len + 1] if self.range_start == self.range_end: # wow, that's a small body. return # TODO: uses the compressed version (if available. Revisit. req_hdrs = red.req_hdrs + [ ('Range', "bytes=%s-%s" % (self.range_start, self.range_end)) ] RedFetcher.__init__(self, red.uri, red.method, req_hdrs, red.req_body, red.status_cb, [], "range" ) else: self.red.partial_support = False
def __init__(self, red, name): self.base = red.state req_hdrs = self.modify_req_hdrs() RedFetcher.__init__(self, self.base.uri, self.base.method, req_hdrs, self.base.req_body, red.status_cb, [], name) self.base.subreqs[name] = self.state