Manlio Perillo said:
I'm trying to fix the regular expression patternin Cookie.py but it
does not work:
[...]
Yeah, IIRC there's some odd stuff in there, that doesn't even seem to
come from the standards, let alone reality ;-)
I have fixed the pattern.
For matching spaces it is needed '\ ' and not ' '.
Here is the code.
Now the Cookie parse the Netscape format.
_LegalCharsPatt = r"[\w\d!#%&'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=]"
_WeekPatt = r"(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)"
_MonthPatt = r"(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"
_DatePatt = r"(?:" + _WeekPatt + r",\ \d{2}-" + _MonthPatt +\
r"-\d{4}\ \d{2}:\d{2}:\d{2}\ GMT)"
_CookiePattern = re.compile(
r"(?x)" # This is a Verbose pattern
r"(?P<key>" # Start of group 'key'
""+ _LegalCharsPatt +"+?" # Any word of at least one letter,\
nongreedy
r")" # End of group 'key'
r"\s*=\s*" # Equal Sign
r"(?P<val>" # Start of group 'val'
r'"(?:[^\\"]|\\.)*"' # Any doublequoted string
r"|" # or
""+ _DatePatt + "" # A date as specified by Netscape\
spec
r"|" # or
""+ _LegalCharsPatt +"*" # Any word or empty string
r")" # End of group 'val'
r"\s*;?" # Probably ending in a semi-colon
)
I also have added a method to BaseCookie that behaves like
Morsel.OutputString:
def OutputString(self, attrs=None, sep='\n'):
"""Return a string suitable for HTTP.
"""
result = []
items = self.items()
items.sort()
for K,V in items:
result.append( V.OutputString(attrs) )
return sep.join(result)
Now the Cookie is usable on the client side too.
The Cookie module really doesn't know how to handle cookies on the
client side.
It does not matter, all the cookie logic for my program is very very
simple and standard Cookie is all I need.
Use this, which does:
http://wwwsearch.sf.net/ClientCookie/
You can just say:
ClientCookie.urlopen("
http://www.example.com/")
and be done with it.
I have seen the module, but it is too complicated.
Standard Cookie module (with my corrections) plus httplib module is
really all I need.
Thanks and regards Manlio Perillo