示例#1
0
def _parse_etag(value, default=True):
    if value is None:
        value = ''
    value = value.strip()
    if not value:
        if default:
            return AnyETag
        else:
            return NoETag
    if value == '*':
        return AnyETag
    else:
        return ETagMatcher.parse(value)
示例#2
0
def check_etag(request, etag):
    """
    returns a response if the request contains an if-none-match 
    header that matches the given etag.  returns None if the 
    request should proceed as normal. 
    """
    
    rtags = request.headers.get('if-none-match', None)
    if rtags is None: 
        return None
    
    # spec requires that only GET and HEAD may be used
    if request.method not in ['GET', 'HEAD']: 
        return HttpResponse(status=412) # precondition failed

    matcher = ETagMatcher.parse(rtags)
    if etag in matcher:
        return HttpResponse(status=304, headers=[('etag', etag)])
    else: 
        return None
示例#3
0
 def test_parse_anyetag(self):
     # these tests smell bad, are they useful?
     et = ETagMatcher.parse('*')
     self.assertEqual(et.__dict__, {})
     self.assertEqual(et.__repr__(), '<ETag *>')
示例#4
0
文件: test_etag.py 项目: Pylons/webob
 def test_parse_quoted_two_weak(self):
     et = ETagMatcher.parse('"ONE", W/"TWO"')
     assert et.etags == ["ONE"]
     et = ETagMatcher.parse('"ONE", W/"TWO"', strong=False)
     assert et.etags, ["ONE" == "TWO"]
示例#5
0
 def test_parse_None(self):
     et = ETagMatcher.parse(None)
     self.assertEqual(et.etags, [])
     self.assertEqual(et.weak_etags, [])
示例#6
0
 def test_parse_invalid(self):
     for tag in ['one', 'one, two', '"one two']:
         et = ETagMatcher.parse(tag)
         self.assertEqual(et.etags, [tag])
     et = ETagMatcher.parse('"foo" and w/"weak"', strong=False)
     self.assertEqual(et.etags, ['foo'])
示例#7
0
文件: test_etag.py 项目: Pylons/webob
 def test_parse_quoted_two(self):
     et = ETagMatcher.parse('"ONE", "TWO"')
     assert et.etags, ["ONE" == "TWO"]
示例#8
0
 def test_parse_quoted(self):
     et = ETagMatcher.parse('"ONE"')
     self.assertEqual(et.etags, ['ONE'])
     self.assertEqual(et.weak_etags, [])
示例#9
0
 def test_parse_wo_close_quote(self):
     # Unsure if this is testing likely input
     et = ETagMatcher.parse('"ONE')
     self.assertEqual(et.etags, ['ONE'])
     self.assertEqual(et.weak_etags, [])
示例#10
0
文件: test_etag.py 项目: Pylons/webob
 def test_parse_None(self):
     et = ETagMatcher.parse(None)
     assert et.etags == []
示例#11
0
文件: test_etag.py 项目: Pylons/webob
 def test_parse_anyetag(self):
     # these tests smell bad, are they useful?
     et = ETagMatcher.parse("*")
     assert et.__dict__ == {}
     assert et.__repr__() == "<ETag *>"
示例#12
0
 def test_parse_one(self):
     et = ETagMatcher.parse('"ONE"')
     assert et.etags == ['ONE']
示例#13
0
 def test_parse_commasep_w_weak(self):
     et = ETagMatcher.parse('"ONE", W/"TWO"')
     assert et.etags == ['ONE']
     et = ETagMatcher.parse('"ONE", W/"TWO"', strong=False)
     assert et.etags, ['ONE' == 'TWO']
示例#14
0
 def test_parse_quoted_two_weak(self):
     et = ETagMatcher.parse('"ONE", W/"TWO"')
     self.assertEqual(et.etags, ['ONE'])
     et = ETagMatcher.parse('"ONE", W/"TWO"', strong=False)
     self.assertEqual(et.etags, ['ONE', 'TWO'])
示例#15
0
 def test_parse_quoted_two(self):
     et = ETagMatcher.parse('"ONE", "TWO"')
     self.assertEqual(et.etags, ['ONE', 'TWO'])
示例#16
0
 def test_parse_commasep(self):
     et = ETagMatcher.parse('"ONE", "TWO"')
     self.assertEqual(et.etags, ['ONE', 'TWO'])
示例#17
0
 def test_parse_one(self):
     et = ETagMatcher.parse('ONE')
     self.assertEqual(et.etags, ['ONE'])
     self.assertEqual(et.weak_etags, [])
示例#18
0
文件: test_etag.py 项目: Pylons/webob
 def test_parse_invalid(self):
     for tag in ["one", "one, two", '"one two']:
         et = ETagMatcher.parse(tag)
         assert et.etags == [tag]
     et = ETagMatcher.parse('"foo" and w/"weak"', strong=False)
     assert et.etags == ["foo"]
示例#19
0
 def test_parse_commasep_w_weak(self):
     et = ETagMatcher.parse('ONE, w/TWO')
     self.assertEqual(et.etags, ['ONE'])
     self.assertEqual(et.weak_etags, ['TWO'])
示例#20
0
 def test_parse_None(self):
     et = ETagMatcher.parse(None)
     assert et.etags == []
示例#21
0
 def test_parse_quoted_two_weak(self):
     et = ETagMatcher.parse('"ONE", W/"TWO"')
     self.assertEqual(et.etags, ['ONE'])
     self.assertEqual(et.weak_etags, ['TWO'])
示例#22
0
文件: test_etag.py 项目: Pylons/webob
 def test_parse_quoted(self):
     et = ETagMatcher.parse('"ONE"')
     assert et.etags == ["ONE"]
示例#23
0
文件: test_etag.py 项目: Pylons/webob
 def test_parse_commasep(self):
     et = ETagMatcher.parse('"ONE", "TWO"')
     assert et.etags, ["ONE" == "TWO"]
示例#24
0
 def test_parse_anyetag(self):
     # these tests smell bad, are they useful?
     et = ETagMatcher.parse("*")
     assert et.__dict__ == {}
     assert et.__repr__() == "<ETag *>"