Skip to content

Commit 6fed1eb

Browse files
committed
* Updated docs
1 parent 7bf31bb commit 6fed1eb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1203
-825
lines changed

README.md

+13-24
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ this is how you do it:
3232
First, import the needed libraries (You will learn about them later):
3333

3434
from pythonzimbra.tools import auth
35-
from pythonzimbra.request_xml import RequestXml
36-
from pythonzimbra.response_xml import ResponseXml
3735
from pythonzimbra.communication import Communication
3836

3937
Let's assume you have a variable called "url" which holds the URL to your
@@ -58,37 +56,28 @@ This should return the authentication token to be used in Zimbra requests. If
5856
it returns None, the authentication is somehow failed (maybe wrong username,
5957
URL or preauthentication-key)
6058

61-
Now, we create our request (we use the XML mode in this example),
59+
Now, we create our request
6260

63-
info_request = RequestXml()
61+
info_request = comm.gen_request(token=token)
6462

65-
inject the authentication token into it,
66-
67-
info_request.set_auth_token(token)
68-
69-
and add our (very simple) GetVersionInfo request,
70-
which is in the urn:zimbraAdmin-namespace:
63+
and add our (very simple) GetFolder request,
64+
which is in the urn:zimbraMail-namespace:
7165

7266
info_request.add_request(
73-
"GetFolderRequest",
67+
"GetFolderRequest",
7468
{
7569
"folder": {
7670
"path": "/inbox"
7771
}
78-
},
79-
"urn:zimbraAdmin"
72+
},
73+
"urn:zimbraMail"
8074
)
8175

82-
Now, we prepare a response object for the transport (this has to use the same
83-
method (xml or json) as the request object):
84-
85-
info_response = ResponseXml()
86-
87-
And finally, we sent the request:
76+
Finally, we sent the request:
8877

89-
comm.send_request(info_request, info_response)
78+
info_response = comm.send_request(info_request)
9079

91-
Our info_response-variable now holds the response information of the object.
80+
The info_response-variable now holds the response information of the object.
9281

9382
Now, if the response was successful and has now Fault-object:
9483

@@ -101,10 +90,10 @@ Print the message count of that folder:
10190
Batch requests
10291
--------------
10392

104-
Working with batch requests is also possible. To do that,
105-
you'll have to first enable the batch mode on the request:
93+
Working with batch requests is also possible. To do that, set the
94+
parameter "set_batch":
10695

107-
request.enable_batch()
96+
batch_request = comm.gen_request(set_batch=True)
10897

10998
And can afterwards add multiple requests using add_request to it. You'll get
11099
the request id of the specific request as a return value. Use that id to

docs/.buildinfo

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Sphinx build info version 1
22
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
3-
config: 0650b228958c207d6fa34115e770049a
4-
tags: fbb0d17656682115ca4d033fb2f83ba1
3+
config: 3e93ac01114cdc872606e40f0b48b57b
4+
tags: 645f666f9bcd5a90fca523b33c5a78b7

docs/.doctrees/environment.pickle

10.9 KB
Binary file not shown.

docs/.doctrees/index.doctree

-98 Bytes
Binary file not shown.

docs/.doctrees/pythonzimbra.doctree

8.51 KB
Binary file not shown.
242 Bytes
Binary file not shown.
503 Bytes
Binary file not shown.

docs/.doctrees/tests.doctree

10.1 KB
Binary file not shown.

docs/_modules/index.html

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
2-
31
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
42
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
53

@@ -52,7 +50,6 @@ <h1>All modules for which code is available</h1>
5250
<li><a href="pythonzimbra/request.html">pythonzimbra.request</a></li>
5351
<li><a href="pythonzimbra/request_xml.html">pythonzimbra.request_xml</a></li>
5452
<li><a href="pythonzimbra/response.html">pythonzimbra.response</a></li>
55-
<li><a href="pythonzimbra/response_xml.html">pythonzimbra.response_xml</a></li>
5653
<li><a href="pythonzimbra/tools/auth.html">pythonzimbra.tools.auth</a></li>
5754
<li><a href="pythonzimbra/tools/preauth.html">pythonzimbra.tools.preauth</a></li>
5855
<li><a href="pythonzimbra/tools/xmlserializer.html">pythonzimbra.tools.xmlserializer</a></li>
@@ -102,7 +99,7 @@ <h3>Navigation</h3>
10299
</div>
103100
<div class="footer">
104101
&copy; Copyright 2013, Dennis Ploeger &lt;[email protected]&gt;.
105-
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
102+
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
106103
</div>
107104
</body>
108105
</html>

docs/_modules/pythonzimbra/communication.html

+90-21
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
2-
31
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
42
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
53

@@ -49,38 +47,76 @@ <h3>Navigation</h3>
4947
<div class="body">
5048

5149
<h1>Source code for pythonzimbra.communication</h1><div class="highlight"><pre>
52-
<span class="sd">&quot;&quot;&quot; Zimbra communication handler &quot;&quot;&quot;</span>
50+
<span class="sd">&quot;&quot;&quot; Zimbra communication handler. &quot;&quot;&quot;</span>
5351

5452
<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>
5558

5659

5760
<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>
5861

59-
<span class="sd">&quot;&quot;&quot; Zimbra communication handler</span>
62+
<span class="sd">&quot;&quot;&quot; Zimbra communication handler.</span>
6063

6164
<span class="sd"> Sends requests to the zimbra SOAP server and returns the responses in a</span>
6265
<span class="sd"> dictionary.</span>
63-
<span class="sd"> &quot;&quot;&quot;</span>
6466

65-
<span class="c"># URL to the zimbra soap interface</span>
67+
<span class="sd"> &quot;&quot;&quot;</span>
6668

6769
<span class="n">url</span> <span class="o">=</span> <span class="bp">None</span>
6870

69-
<span class="c"># Timeout of the request</span>
71+
<span class="sd">&quot;&quot;&quot; URL to the zimbra soap interface &quot;&quot;&quot;</span>
7072

7173
<span class="n">timeout</span> <span class="o">=</span> <span class="bp">None</span>
7274

75+
<span class="sd">&quot;&quot;&quot; Timeout of the request &quot;&quot;&quot;</span>
76+
7377
<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>
7478

75-
<span class="sd">&quot;&quot;&quot; Initialize the communication handler</span>
79+
<span class="sd">&quot;&quot;&quot; Initialize the communication handler.</span>
7680
<span class="sd"> &quot;&quot;&quot;</span>
7781

7882
<span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">url</span>
7983
<span class="bp">self</span><span class="o">.</span><span class="n">timeout</span> <span class="o">=</span> <span class="n">timeout</span>
8084

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">&quot;json&quot;</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">&quot;&quot;&quot; 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"> &quot;&quot;&quot;</span>
96+
97+
<span class="k">if</span> <span class="n">request_type</span> <span class="o">==</span> <span class="s">&quot;json&quot;</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">&quot;xml&quot;</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>
82118

83-
<span class="sd">&quot;&quot;&quot; Send the request</span>
119+
<span class="sd">&quot;&quot;&quot; Send the request.</span>
84120

85121
<span class="sd"> Sends the request and retrieves the results, formats them and returns</span>
86122
<span class="sd"> them in a dict or a list (when it&#39;s a batchresponse). If something</span>
@@ -96,25 +132,58 @@ <h1>Source code for pythonzimbra.communication</h1><div class="highlight"><pre>
96132
<span class="sd"> urllib2.HTTPError</span>
97133
<span class="sd"> &quot;&quot;&quot;</span>
98134

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">&quot;json&quot;</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">&quot;xml&quot;</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>
104150

105151
<span class="k">try</span><span class="p">:</span>
106152

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>
108166

109167
<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>
110168

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>
112180

113-
<span class="k">raise</span> <span class="n">e</span>
181+
<span class="k">else</span><span class="p">:</span>
114182

115-
<span class="c"># Find the response for</span>
183+
<span class="k">raise</span> <span class="n">e</span>
116184

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>
118187
</pre></div>
119188

120189
</div>
@@ -154,7 +223,7 @@ <h3>Navigation</h3>
154223
</div>
155224
<div class="footer">
156225
&copy; Copyright 2013, Dennis Ploeger &lt;[email protected]&gt;.
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.
158227
</div>
159228
</body>
160229
</html>

docs/_modules/pythonzimbra/exceptions/request.html

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
2-
31
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
42
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
53

@@ -55,10 +53,19 @@ <h1>Source code for pythonzimbra.exceptions.request</h1><div class="highlight"><
5553

5654

5755
<div class="viewcode-block" id="RequestHeaderContextException"><a class="viewcode-back" href="../../../pythonzimbra.exceptions.html#pythonzimbra.exceptions.request.RequestHeaderContextException">[docs]</a><span class="k">class</span> <span class="nc">RequestHeaderContextException</span><span class="p">(</span><span class="n">exceptions</span><span class="o">.</span><span class="n">BaseException</span><span class="p">):</span>
56+
57+
<span class="sd">&quot;&quot;&quot; Invalid context parameter specified</span>
58+
59+
<span class="sd"> &quot;&quot;&quot;</span>
60+
5861
<span class="k">pass</span>
5962

6063
</div>
61-
<div class="viewcode-block" id="NoXMLNSGiven"><a class="viewcode-back" href="../../../pythonzimbra.exceptions.html#pythonzimbra.exceptions.request.NoXMLNSGiven">[docs]</a><span class="k">class</span> <span class="nc">NoXMLNSGiven</span><span class="p">(</span><span class="n">exceptions</span><span class="o">.</span><span class="n">BaseException</span><span class="p">):</span>
64+
<div class="viewcode-block" id="NoNamespaceGiven"><a class="viewcode-back" href="../../../pythonzimbra.exceptions.html#pythonzimbra.exceptions.request.NoNamespaceGiven">[docs]</a><span class="k">class</span> <span class="nc">NoNamespaceGiven</span><span class="p">(</span><span class="n">exceptions</span><span class="o">.</span><span class="n">BaseException</span><span class="p">):</span>
65+
66+
<span class="sd">&quot;&quot;&quot; No namespace specified, when it should be</span>
67+
<span class="sd"> &quot;&quot;&quot;</span>
68+
6269
<span class="k">pass</span></div>
6370
</pre></div>
6471

@@ -99,7 +106,7 @@ <h3>Navigation</h3>
99106
</div>
100107
<div class="footer">
101108
&copy; Copyright 2013, Dennis Ploeger &lt;[email protected]&gt;.
102-
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
109+
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
103110
</div>
104111
</body>
105112
</html>

0 commit comments

Comments
 (0)