1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 from caldavclientlibrary.protocol.http.session import Session as HTTPSession
18 from caldavclientlibrary.protocol.http.requestresponse import RequestResponse
19 from caldavclientlibrary.protocol.http.data.string import ResponseDataString
20 from caldavclientlibrary.protocol.http.definitions import methods
21 from caldavclientlibrary.protocol.http.definitions import statuscodes
22 from caldavclientlibrary.protocol.webdav.definitions import headers
23
25
26 - def __init__(self, server, port=None, ssl=False, log=None):
30
32
33 self.setServer(host)
34
35
36 first_time = True
37 while True:
38
39
40 request = RequestResponse(self, methods.OPTIONS, base_uri)
41 request.setSession(self)
42 sout = ResponseDataString()
43 request.setData(None, sout)
44
45
46 self.sendRequest(request)
47
48
49 if request.getStatusCode() == statuscodes.Unauthorized:
50
51
52 if self.hasAuthorization():
53
54 self.authorization = None
55
56
57 self.displayHTTPError(request)
58
59
60 self.authorization, cancelled = self.getAuthorizor(first_time, request.getResponseHeaders(headers.WWWAuthenticate))
61
62
63 if cancelled:
64
65 self.authorization = None
66 return False
67
68 first_time = False
69
70
71 continue
72
73
74 if request.getStatusCode() in (statuscodes.OK, statuscodes.NoContent):
75
76
77 if request.hasResponseHeader(headers.Server):
78 self.setServerDescriptor = self.setServerDescriptor(request.getResponseHeader(headers.Server))
79
80
81 self.version = ()
82 for dav_version in request.getResponseHeaders(headers.DAV):
83
84
85 for token in dav_version.split(","):
86
87 token = token.strip()
88 self.addVersion(token)
89
90 self.setServerType(self.version)
91
92
93 capa = ""
94 for name, value in request.getResponseHeaders().iteritems():
95
96 if (not name.lower().startswith(headers.Server) and
97 not name.lower().startswith(headers.Date) and
98 name.lower().startswith("Content-")):
99
100 capa += "%s: %s\n" % (name, value,)
101
102 self.setServerCapability(capa)
103
104
105 break
106
107
108 self.handleHTTPError(request)
109 return False
110
111 self.initialised = True
112
113 return True
114
116 self.version += (token,)
117
119 return version in self.version
120
123
126
129
131 raise NotImplementedError
132
134 raise NotImplementedError
135
137 raise NotImplementedError
138
140 raise NotImplementedError
141