1
-
2
-
3
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
2
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
3
@@ -49,38 +47,76 @@ <h3>Navigation</h3>
49
47
< div class ="body ">
50
48
51
49
< h1 > Source code for pythonzimbra.communication</ h1 > < div class ="highlight "> < pre >
52
- < span class ="sd "> """ Zimbra communication handler """</ span >
50
+ < span class ="sd "> """ Zimbra communication handler. """</ span >
53
51
54
52
< span class ="kn "> import</ span > < span class ="nn "> urllib2</ span >
53
+ < span class ="kn "> from</ span > < span class ="nn "> pythonzimbra.request_json</ span > < span class ="kn "> import</ span > < span class ="n "> RequestJson</ span >
54
+ < span class ="kn "> from</ span > < span class ="nn "> pythonzimbra.request_xml</ span > < span class ="kn "> import</ span > < span class ="n "> RequestXml</ span >
55
+ < span class ="kn "> from</ span > < span class ="nn "> pythonzimbra.response_xml</ span > < span class ="kn "> import</ span > < span class ="n "> ResponseXml</ span >
56
+ < span class ="kn "> from</ span > < span class ="nn "> pythonzimbra.response_json</ span > < span class ="kn "> import</ span > < span class ="n "> ResponseJson</ span >
57
+ < span class ="kn "> from</ span > < span class ="nn "> exceptions.communication</ span > < span class ="kn "> import</ span > < span class ="o "> *</ span >
55
58
56
59
57
60
< div class ="viewcode-block " id ="Communication "> < a class ="viewcode-back " href ="../../pythonzimbra.html#pythonzimbra.communication.Communication "> [docs]</ a > < span class ="k "> class</ span > < span class ="nc "> Communication</ span > < span class ="p "> (</ span > < span class ="nb "> object</ span > < span class ="p "> ):</ span >
58
61
59
- < span class ="sd "> """ Zimbra communication handler</ span >
62
+ < span class ="sd "> """ Zimbra communication handler. </ span >
60
63
61
64
< span class ="sd "> Sends requests to the zimbra SOAP server and returns the responses in a</ span >
62
65
< span class ="sd "> dictionary.</ span >
63
- < span class ="sd "> """</ span >
64
66
65
- < span class ="c " > # URL to the zimbra soap interface </ span >
67
+ < span class ="sd " > """ </ span >
66
68
67
69
< span class ="n "> url</ span > < span class ="o "> =</ span > < span class ="bp "> None</ span >
68
70
69
- < span class ="c " > # Timeout of the request </ span >
71
+ < span class ="sd " > """ URL to the zimbra soap interface """ </ span >
70
72
71
73
< span class ="n "> timeout</ span > < span class ="o "> =</ span > < span class ="bp "> None</ span >
72
74
75
+ < span class ="sd "> """ Timeout of the request """</ span >
76
+
73
77
< span class ="k "> def</ span > < span class ="nf "> __init__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> url</ span > < span class ="p "> ,</ span > < span class ="n "> timeout</ span > < span class ="o "> =</ span > < span class ="bp "> None</ span > < span class ="p "> ):</ span >
74
78
75
- < span class ="sd "> """ Initialize the communication handler</ span >
79
+ < span class ="sd "> """ Initialize the communication handler. </ span >
76
80
< span class ="sd "> """</ span >
77
81
78
82
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> url</ span > < span class ="o "> =</ span > < span class ="n "> url</ span >
79
83
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> timeout</ span > < span class ="o "> =</ span > < span class ="n "> timeout</ span >
80
84
81
- < div class ="viewcode-block " id ="Communication.send_request "> < a class ="viewcode-back " href ="../../pythonzimbra.html#pythonzimbra.communication.Communication.send_request "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> send_request</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> request</ span > < span class ="p "> ,</ span > < span class ="n "> response</ span > < span class ="p "> ):</ span >
85
+ < div class ="viewcode-block " id ="Communication.gen_request "> < a class ="viewcode-back " href ="../../pythonzimbra.html#pythonzimbra.communication.Communication.gen_request "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> gen_request</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> request_type</ span > < span class ="o "> =</ span > < span class ="s "> "json"</ span > < span class ="p "> ,</ span > < span class ="n "> token</ span > < span class ="o "> =</ span > < span class ="bp "> None</ span > < span class ="p "> ,</ span > < span class ="n "> set_batch</ span > < span class ="o "> =</ span > < span class ="bp "> False</ span > < span class ="p "> ,</ span >
86
+ < span class ="n "> batch_onerror</ span > < span class ="o "> =</ span > < span class ="bp "> None</ span > < span class ="p "> ):</ span >
87
+
88
+ < span class ="sd "> """ Convenience method to quickly generate a token</ span >
89
+
90
+ < span class ="sd "> :param request_type: Type of request (defaults to json)</ span >
91
+ < span class ="sd "> :param token: Authentication token</ span >
92
+ < span class ="sd "> :param set_batch: Also set this request to batch mode?</ span >
93
+ < span class ="sd "> :param batch_onerror: Onerror-parameter for batch mode</ span >
94
+ < span class ="sd "> :return: The request</ span >
95
+ < span class ="sd "> """</ span >
96
+
97
+ < span class ="k "> if</ span > < span class ="n "> request_type</ span > < span class ="o "> ==</ span > < span class ="s "> "json"</ span > < span class ="p "> :</ span >
98
+
99
+ < span class ="n "> local_request</ span > < span class ="o "> =</ span > < span class ="n "> RequestJson</ span > < span class ="p "> ()</ span >
100
+
101
+ < span class ="k "> elif</ span > < span class ="n "> request_type</ span > < span class ="o "> ==</ span > < span class ="s "> "xml"</ span > < span class ="p "> :</ span >
102
+
103
+ < span class ="n "> local_request</ span > < span class ="o "> =</ span > < span class ="n "> RequestXml</ span > < span class ="p "> ()</ span >
104
+
105
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
106
+
107
+ < span class ="k "> raise</ span > < span class ="n "> UnknownRequestType</ span > < span class ="p "> ()</ span >
108
+
109
+ < span class ="k "> if</ span > < span class ="ow "> not</ span > < span class ="n "> token</ span > < span class ="ow "> is</ span > < span class ="bp "> None</ span > < span class ="p "> :</ span >
110
+ < span class ="n "> local_request</ span > < span class ="o "> .</ span > < span class ="n "> set_auth_token</ span > < span class ="p "> (</ span > < span class ="n "> token</ span > < span class ="p "> )</ span >
111
+
112
+ < span class ="k "> if</ span > < span class ="n "> set_batch</ span > < span class ="p "> :</ span >
113
+ < span class ="n "> local_request</ span > < span class ="o "> .</ span > < span class ="n "> enable_batch</ span > < span class ="p "> (</ span > < span class ="n "> batch_onerror</ span > < span class ="p "> )</ span >
114
+
115
+ < span class ="k "> return</ span > < span class ="n "> local_request</ span >
116
+ </ div >
117
+ < div class ="viewcode-block " id ="Communication.send_request "> < a class ="viewcode-back " href ="../../pythonzimbra.html#pythonzimbra.communication.Communication.send_request "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> send_request</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> request</ span > < span class ="p "> ,</ span > < span class ="n "> response</ span > < span class ="o "> =</ span > < span class ="bp "> None</ span > < span class ="p "> ):</ span >
82
118
83
- < span class ="sd "> """ Send the request</ span >
119
+ < span class ="sd "> """ Send the request. </ span >
84
120
85
121
< span class ="sd "> Sends the request and retrieves the results, formats them and returns</ span >
86
122
< span class ="sd "> them in a dict or a list (when it's a batchresponse). If something</ span >
@@ -96,25 +132,58 @@ <h1>Source code for pythonzimbra.communication</h1><div class="highlight"><pre>
96
132
< span class ="sd "> urllib2.HTTPError</ span >
97
133
< span class ="sd "> """</ span >
98
134
99
- < span class ="n "> server_request</ span > < span class ="o "> =</ span > < span class ="n "> urllib2</ span > < span class ="o "> .</ span > < span class ="n "> urlopen</ span > < span class ="p "> (</ span >
100
- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> url</ span > < span class ="p "> ,</ span >
101
- < span class ="n "> request</ span > < span class ="o "> .</ span > < span class ="n "> get_request</ span > < span class ="p "> (),</ span >
102
- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> timeout</ span >
103
- < span class ="p "> )</ span >
135
+ < span class ="n "> local_response</ span > < span class ="o "> =</ span > < span class ="bp "> None</ span >
136
+
137
+ < span class ="k "> if</ span > < span class ="n "> response</ span > < span class ="ow "> is</ span > < span class ="bp "> None</ span > < span class ="p "> :</ span >
138
+
139
+ < span class ="k "> if</ span > < span class ="n "> request</ span > < span class ="o "> .</ span > < span class ="n "> request_type</ span > < span class ="o "> ==</ span > < span class ="s "> "json"</ span > < span class ="p "> :</ span >
140
+
141
+ < span class ="n "> local_response</ span > < span class ="o "> =</ span > < span class ="n "> ResponseJson</ span > < span class ="p "> ()</ span >
142
+
143
+ < span class ="k "> elif</ span > < span class ="n "> request</ span > < span class ="o "> .</ span > < span class ="n "> request_type</ span > < span class ="o "> ==</ span > < span class ="s "> "xml"</ span > < span class ="p "> :</ span >
144
+
145
+ < span class ="n "> local_response</ span > < span class ="o "> =</ span > < span class ="n "> ResponseXml</ span > < span class ="p "> ()</ span >
146
+
147
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
148
+
149
+ < span class ="k "> raise</ span > < span class ="n "> UnknownRequestType</ span > < span class ="p "> ()</ span >
104
150
105
151
< span class ="k "> try</ span > < span class ="p "> :</ span >
106
152
107
- < span class ="n "> server_response</ span > < span class ="o "> =</ span > < span class ="n "> server_request</ span > < span class ="o "> .</ span > < span class ="n "> read</ span > < span class ="p "> ()</ span >
153
+ < span class ="n "> server_request</ span > < span class ="o "> =</ span > < span class ="n "> urllib2</ span > < span class ="o "> .</ span > < span class ="n "> urlopen</ span > < span class ="p "> (</ span >
154
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> url</ span > < span class ="p "> ,</ span >
155
+ < span class ="n "> request</ span > < span class ="o "> .</ span > < span class ="n "> get_request</ span > < span class ="p "> (),</ span >
156
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> timeout</ span >
157
+ < span class ="p "> )</ span >
158
+
159
+ < span class ="k "> if</ span > < span class ="n "> response</ span > < span class ="ow "> is</ span > < span class ="bp "> None</ span > < span class ="p "> :</ span >
160
+
161
+ < span class ="n "> local_response</ span > < span class ="o "> .</ span > < span class ="n "> set_response</ span > < span class ="p "> (</ span > < span class ="n "> server_request</ span > < span class ="o "> .</ span > < span class ="n "> read</ span > < span class ="p "> ())</ span >
162
+
163
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
164
+
165
+ < span class ="n "> response</ span > < span class ="o "> .</ span > < span class ="n "> set_response</ span > < span class ="p "> (</ span > < span class ="n "> server_request</ span > < span class ="o "> .</ span > < span class ="n "> read</ span > < span class ="p "> ())</ span >
108
166
109
167
< span class ="k "> except</ span > < span class ="n "> urllib2</ span > < span class ="o "> .</ span > < span class ="n "> HTTPError</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
110
168
111
- < span class ="c "> # Return the exception to the caller on HTTPerrors</ span >
169
+ < span class ="k "> if</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> code</ span > < span class ="o "> ==</ span > < span class ="mi "> 500</ span > < span class ="p "> :</ span >
170
+
171
+ < span class ="c "> # 500 codes normally returns a SoapFault, that we can use</ span >
172
+
173
+ < span class ="k "> if</ span > < span class ="n "> response</ span > < span class ="ow "> is</ span > < span class ="bp "> None</ span > < span class ="p "> :</ span >
174
+
175
+ < span class ="n "> local_response</ span > < span class ="o "> .</ span > < span class ="n "> set_response</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> fp</ span > < span class ="o "> .</ span > < span class ="n "> read</ span > < span class ="p "> ())</ span >
176
+
177
+ < span class ="k "> else</ span > < span class ="p "> :</ span >
178
+
179
+ < span class ="n "> response</ span > < span class ="o "> .</ span > < span class ="n "> set_response</ span > < span class ="p "> (</ span > < span class ="n "> e</ span > < span class ="o "> .</ span > < span class ="n "> fp</ span > < span class ="o "> .</ span > < span class ="n "> read</ span > < span class ="p "> ())</ span >
112
180
113
- < span class ="k "> raise </ span > < span class ="n " > e </ span >
181
+ < span class ="k "> else </ span > < span class ="p " > : </ span >
114
182
115
- < span class ="c " > # Find the response for </ span >
183
+ < span class ="k " > raise </ span > < span class =" n " > e </ span >
116
184
117
- < span class ="n "> response</ span > < span class ="o "> .</ span > < span class ="n "> set_response</ span > < span class ="p "> (</ span > < span class ="n "> server_response</ span > < span class ="p "> )</ span > </ div > </ div >
185
+ < span class ="k "> if</ span > < span class ="n "> response</ span > < span class ="ow "> is</ span > < span class ="bp "> None</ span > < span class ="p "> :</ span >
186
+ < span class ="k "> return</ span > < span class ="n "> local_response</ span > </ div > </ div >
118
187
</ pre > </ div >
119
188
120
189
</ div >
@@ -154,7 +223,7 @@ <h3>Navigation</h3>
154
223
</ div >
155
224
< div class ="footer ">
156
225
© Copyright 2013, Dennis Ploeger <
[email protected] >.
157
- Created using < a href ="http://sphinx.pocoo. org/ "> Sphinx</ a > 1.1 .3.
226
+ Created using < a href ="http://sphinx-doc. org/ "> Sphinx</ a > 1.2 .3.
158
227
</ div >
159
228
</ body >
160
229
</ html >
0 commit comments