blob: b4c2cc82e3fe9878b9283d791afb8f524e697b8f [file] [log] [blame]
Joe Gregorio30dfdc32010-12-09 16:34:22 -05001
2<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
3<html><head><title>Python: module apiclient.http</title>
4</head><body bgcolor="#f0f0f8">
5
6<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
7<tr bgcolor="#7799ee">
8<td valign=bottom>&nbsp;<br>
9<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.http</strong></big></big></font></td
10><td align=right valign=bottom
Joe Gregorio6121dd92012-04-13 07:50:04 -040011><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/jcgregorio/projects/apiclient/apiclient/http.py">/home/jcgregorio/projects/apiclient/apiclient/http.py</a></font></td></tr></table>
Joe Gregorio30dfdc32010-12-09 16:34:22 -050012 <p><tt>Classes&nbsp;to&nbsp;encapsulate&nbsp;a&nbsp;single&nbsp;HTTP&nbsp;request.<br>
13&nbsp;<br>
14The&nbsp;classes&nbsp;implement&nbsp;a&nbsp;command&nbsp;pattern,&nbsp;with&nbsp;every<br>
15<a href="__builtin__.html#object">object</a>&nbsp;supporting&nbsp;an&nbsp;execute()&nbsp;method&nbsp;that&nbsp;does&nbsp;the<br>
16actuall&nbsp;HTTP&nbsp;request.</tt></p>
17<p>
18<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
Joe Gregorio6e537032011-02-09 23:04:26 -050019<tr bgcolor="#aa55cc">
20<td colspan=3 valign=bottom>&nbsp;<br>
21<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
22
23<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
Joe Gregoriob417caf2011-12-08 12:04:24 -050024<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="StringIO.html">StringIO</a><br>
Joe Gregorio3d55ac52012-02-21 10:11:19 -050025<a href="base64.html">base64</a><br>
Joe Gregoriob417caf2011-12-08 12:04:24 -050026<a href="copy.html">copy</a><br>
Joe Gregorio3d55ac52012-02-21 10:11:19 -050027</td><td width="25%" valign=top><a href="gzip.html">gzip</a><br>
28<a href="httplib2.html">httplib2</a><br>
Joe Gregoriob417caf2011-12-08 12:04:24 -050029<a href="apiclient.mimeparse.html">apiclient.mimeparse</a><br>
Joe Gregorio3d55ac52012-02-21 10:11:19 -050030</td><td width="25%" valign=top><a href="mimetypes.html">mimetypes</a><br>
31<a href="os.html">os</a><br>
32<a href="json.html">json</a><br>
33</td><td width="25%" valign=top><a href="urllib.html">urllib</a><br>
34<a href="urlparse.html">urlparse</a><br>
Joe Gregoriob417caf2011-12-08 12:04:24 -050035<a href="uuid.html">uuid</a><br>
36</td></tr></table></td></tr></table><p>
Joe Gregorio6e537032011-02-09 23:04:26 -050037<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
Joe Gregorio30dfdc32010-12-09 16:34:22 -050038<tr bgcolor="#ee77aa">
39<td colspan=3 valign=bottom>&nbsp;<br>
40<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
41
42<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
43<td width="100%"><dl>
44<dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
45</font></dt><dd>
46<dl>
Joe Gregoriod9d00902012-04-13 07:58:30 -040047<dt><font face="helvetica, arial"><a href="apiclient.http.html#BatchHttpRequest">BatchHttpRequest</a>
48</font></dt><dt><font face="helvetica, arial"><a href="apiclient.http.html#HttpMock">HttpMock</a>
49</font></dt><dt><font face="helvetica, arial"><a href="apiclient.http.html#HttpMockSequence">HttpMockSequence</a>
50</font></dt><dt><font face="helvetica, arial"><a href="apiclient.http.html#HttpRequest">HttpRequest</a>
51</font></dt><dt><font face="helvetica, arial"><a href="apiclient.http.html#HttpRequestMock">HttpRequestMock</a>
52</font></dt><dt><font face="helvetica, arial"><a href="apiclient.http.html#MediaUpload">MediaUpload</a>
53</font></dt><dd>
54<dl>
55<dt><font face="helvetica, arial"><a href="apiclient.http.html#MediaFileUpload">MediaFileUpload</a>
56</font></dt><dt><font face="helvetica, arial"><a href="apiclient.http.html#MediaInMemoryUpload">MediaInMemoryUpload</a>
57</font></dt></dl>
58</dd>
59<dt><font face="helvetica, arial"><a href="apiclient.http.html#MediaUploadProgress">MediaUploadProgress</a>
Joe Gregorio30dfdc32010-12-09 16:34:22 -050060</font></dt><dt><font face="helvetica, arial"><a href="apiclient.http.html#RequestMockBuilder">RequestMockBuilder</a>
61</font></dt></dl>
62</dd>
63</dl>
64 <p>
65<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
66<tr bgcolor="#ffc8d8">
67<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregoriod9d00902012-04-13 07:58:30 -040068<font color="#000000" face="helvetica, arial"><a name="BatchHttpRequest">class <strong>BatchHttpRequest</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
69
70<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
71<td colspan=2><tt>Batches&nbsp;multiple&nbsp;<a href="#HttpRequest">HttpRequest</a>&nbsp;objects&nbsp;into&nbsp;a&nbsp;single&nbsp;HTTP&nbsp;request.<br>&nbsp;</tt></td></tr>
72<tr><td>&nbsp;</td>
73<td width="100%">Methods defined here:<br>
74<dl><dt><a name="BatchHttpRequest-__init__"><strong>__init__</strong></a>(self, callback<font color="#909090">=None</font>, batch_uri<font color="#909090">=None</font>)</dt><dd><tt>Constructor&nbsp;for&nbsp;a&nbsp;<a href="#BatchHttpRequest">BatchHttpRequest</a>.<br>
75&nbsp;<br>
76Args:<br>
77&nbsp;&nbsp;callback:&nbsp;callable,&nbsp;A&nbsp;callback&nbsp;to&nbsp;be&nbsp;called&nbsp;for&nbsp;each&nbsp;response,&nbsp;of&nbsp;the<br>
78&nbsp;&nbsp;&nbsp;&nbsp;form&nbsp;callback(id,&nbsp;response).&nbsp;The&nbsp;first&nbsp;parameter&nbsp;is&nbsp;the&nbsp;request&nbsp;id,&nbsp;and<br>
79&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;second&nbsp;is&nbsp;the&nbsp;deserialized&nbsp;response&nbsp;<a href="__builtin__.html#object">object</a>.<br>
80&nbsp;&nbsp;batch_uri:&nbsp;string,&nbsp;URI&nbsp;to&nbsp;send&nbsp;batch&nbsp;requests&nbsp;to.</tt></dd></dl>
81
82<dl><dt><a name="BatchHttpRequest-add"><strong>add</strong></a>(self, request, callback<font color="#909090">=None</font>, request_id<font color="#909090">=None</font>)</dt><dd><tt>Add&nbsp;a&nbsp;new&nbsp;request.<br>
83&nbsp;<br>
84Every&nbsp;callback&nbsp;added&nbsp;will&nbsp;be&nbsp;paired&nbsp;with&nbsp;a&nbsp;unique&nbsp;id,&nbsp;the&nbsp;request_id.&nbsp;That<br>
85unique&nbsp;id&nbsp;will&nbsp;be&nbsp;passed&nbsp;back&nbsp;to&nbsp;the&nbsp;callback&nbsp;when&nbsp;the&nbsp;response&nbsp;comes&nbsp;back<br>
86from&nbsp;the&nbsp;server.&nbsp;The&nbsp;default&nbsp;behavior&nbsp;is&nbsp;to&nbsp;have&nbsp;the&nbsp;library&nbsp;generate&nbsp;it's<br>
87own&nbsp;unique&nbsp;id.&nbsp;If&nbsp;the&nbsp;caller&nbsp;passes&nbsp;in&nbsp;a&nbsp;request_id&nbsp;then&nbsp;they&nbsp;must&nbsp;ensure<br>
88uniqueness&nbsp;for&nbsp;each&nbsp;request_id,&nbsp;and&nbsp;if&nbsp;they&nbsp;are&nbsp;not&nbsp;an&nbsp;exception&nbsp;is<br>
89raised.&nbsp;Callers&nbsp;should&nbsp;either&nbsp;supply&nbsp;all&nbsp;request_ids&nbsp;or&nbsp;nevery&nbsp;supply&nbsp;a<br>
90request&nbsp;id,&nbsp;to&nbsp;avoid&nbsp;such&nbsp;an&nbsp;error.<br>
91&nbsp;<br>
92Args:<br>
93&nbsp;&nbsp;request:&nbsp;<a href="#HttpRequest">HttpRequest</a>,&nbsp;Request&nbsp;to&nbsp;add&nbsp;to&nbsp;the&nbsp;batch.<br>
94&nbsp;&nbsp;callback:&nbsp;callable,&nbsp;A&nbsp;callback&nbsp;to&nbsp;be&nbsp;called&nbsp;for&nbsp;this&nbsp;response,&nbsp;of&nbsp;the<br>
95&nbsp;&nbsp;&nbsp;&nbsp;form&nbsp;callback(id,&nbsp;response).&nbsp;The&nbsp;first&nbsp;parameter&nbsp;is&nbsp;the&nbsp;request&nbsp;id,&nbsp;and<br>
96&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;second&nbsp;is&nbsp;the&nbsp;deserialized&nbsp;response&nbsp;<a href="__builtin__.html#object">object</a>.<br>
97&nbsp;&nbsp;request_id:&nbsp;string,&nbsp;A&nbsp;unique&nbsp;id&nbsp;for&nbsp;the&nbsp;request.&nbsp;The&nbsp;id&nbsp;will&nbsp;be&nbsp;passed&nbsp;to<br>
98&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;callback&nbsp;with&nbsp;the&nbsp;response.<br>
99&nbsp;<br>
100Returns:<br>
101&nbsp;&nbsp;None<br>
102&nbsp;<br>
103Raises:<br>
104&nbsp;&nbsp;BatchError&nbsp;if&nbsp;a&nbsp;resumable&nbsp;request&nbsp;is&nbsp;added&nbsp;to&nbsp;a&nbsp;batch.<br>
105&nbsp;&nbsp;KeyError&nbsp;is&nbsp;the&nbsp;request_id&nbsp;is&nbsp;not&nbsp;unique.</tt></dd></dl>
106
107<dl><dt><a name="BatchHttpRequest-execute"><strong>execute</strong></a>(self, http<font color="#909090">=None</font>)</dt><dd><tt>Execute&nbsp;all&nbsp;the&nbsp;requests&nbsp;as&nbsp;a&nbsp;single&nbsp;batched&nbsp;HTTP&nbsp;request.<br>
108&nbsp;<br>
109Args:<br>
110&nbsp;&nbsp;http:&nbsp;httplib2.Http,&nbsp;an&nbsp;http&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;to&nbsp;be&nbsp;used&nbsp;in&nbsp;place&nbsp;of&nbsp;the&nbsp;one&nbsp;the<br>
111&nbsp;&nbsp;&nbsp;&nbsp;<a href="#HttpRequest">HttpRequest</a>&nbsp;request&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;was&nbsp;constructed&nbsp;with.&nbsp;&nbsp;If&nbsp;one&nbsp;isn't&nbsp;supplied<br>
112&nbsp;&nbsp;&nbsp;&nbsp;then&nbsp;use&nbsp;a&nbsp;http&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;from&nbsp;the&nbsp;requests&nbsp;in&nbsp;this&nbsp;batch.<br>
113&nbsp;<br>
114Returns:<br>
115&nbsp;&nbsp;None<br>
116&nbsp;<br>
117Raises:<br>
118&nbsp;&nbsp;httplib2.Error&nbsp;if&nbsp;a&nbsp;transport&nbsp;error&nbsp;has&nbsp;occured.<br>
119&nbsp;&nbsp;apiclient.errors.BatchError&nbsp;if&nbsp;the&nbsp;response&nbsp;is&nbsp;the&nbsp;wrong&nbsp;format.</tt></dd></dl>
120
121<hr>
122Data descriptors defined here:<br>
123<dl><dt><strong>__dict__</strong></dt>
124<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
125</dl>
126<dl><dt><strong>__weakref__</strong></dt>
127<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
128</dl>
129</td></tr></table> <p>
130<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
131<tr bgcolor="#ffc8d8">
132<td colspan=3 valign=bottom>&nbsp;<br>
133<font color="#000000" face="helvetica, arial"><a name="HttpMock">class <strong>HttpMock</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
134
135<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
136<td colspan=2><tt>Mock&nbsp;of&nbsp;httplib2.Http<br>&nbsp;</tt></td></tr>
137<tr><td>&nbsp;</td>
138<td width="100%">Methods defined here:<br>
139<dl><dt><a name="HttpMock-__init__"><strong>__init__</strong></a>(self, filename, headers<font color="#909090">=None</font>)</dt><dd><tt>Args:<br>
140&nbsp;&nbsp;filename:&nbsp;string,&nbsp;absolute&nbsp;filename&nbsp;to&nbsp;read&nbsp;response&nbsp;from<br>
141&nbsp;&nbsp;headers:&nbsp;dict,&nbsp;header&nbsp;to&nbsp;return&nbsp;with&nbsp;response</tt></dd></dl>
142
143<dl><dt><a name="HttpMock-request"><strong>request</strong></a>(self, uri, method<font color="#909090">='GET'</font>, body<font color="#909090">=None</font>, headers<font color="#909090">=None</font>, redirections<font color="#909090">=1</font>, connection_type<font color="#909090">=None</font>)</dt></dl>
144
145<hr>
146Data descriptors defined here:<br>
147<dl><dt><strong>__dict__</strong></dt>
148<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
149</dl>
150<dl><dt><strong>__weakref__</strong></dt>
151<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
152</dl>
153</td></tr></table> <p>
154<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
155<tr bgcolor="#ffc8d8">
156<td colspan=3 valign=bottom>&nbsp;<br>
157<font color="#000000" face="helvetica, arial"><a name="HttpMockSequence">class <strong>HttpMockSequence</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
158
159<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
160<td colspan=2><tt>Mock&nbsp;of&nbsp;httplib2.Http<br>
161&nbsp;<br>
162Mocks&nbsp;a&nbsp;sequence&nbsp;of&nbsp;calls&nbsp;to&nbsp;request&nbsp;returning&nbsp;different&nbsp;responses&nbsp;for&nbsp;each<br>
163call.&nbsp;Create&nbsp;an&nbsp;instance&nbsp;initialized&nbsp;with&nbsp;the&nbsp;desired&nbsp;response&nbsp;headers<br>
164and&nbsp;content&nbsp;and&nbsp;then&nbsp;use&nbsp;as&nbsp;if&nbsp;an&nbsp;httplib2.Http&nbsp;instance.<br>
165&nbsp;<br>
166&nbsp;&nbsp;http&nbsp;=&nbsp;<a href="#HttpMockSequence">HttpMockSequence</a>([<br>
167&nbsp;&nbsp;&nbsp;&nbsp;({'status':&nbsp;'401'},&nbsp;''),<br>
168&nbsp;&nbsp;&nbsp;&nbsp;({'status':&nbsp;'200'},&nbsp;'{"access_token":"1/3w","expires_in":3600}'),<br>
169&nbsp;&nbsp;&nbsp;&nbsp;({'status':&nbsp;'200'},&nbsp;'echo_request_headers'),<br>
170&nbsp;&nbsp;&nbsp;&nbsp;])<br>
171&nbsp;&nbsp;resp,&nbsp;content&nbsp;=&nbsp;http.<a href="#HttpMockSequence-request">request</a>("<a href="http://examples.com">http://examples.com</a>")<br>
172&nbsp;<br>
173There&nbsp;are&nbsp;special&nbsp;values&nbsp;you&nbsp;can&nbsp;pass&nbsp;in&nbsp;for&nbsp;content&nbsp;to&nbsp;trigger<br>
174behavours&nbsp;that&nbsp;are&nbsp;helpful&nbsp;in&nbsp;testing.<br>
175&nbsp;<br>
176'echo_request_headers'&nbsp;means&nbsp;return&nbsp;the&nbsp;request&nbsp;headers&nbsp;in&nbsp;the&nbsp;response&nbsp;body<br>
177'echo_request_headers_as_json'&nbsp;means&nbsp;return&nbsp;the&nbsp;request&nbsp;headers&nbsp;in<br>
178&nbsp;&nbsp;&nbsp;the&nbsp;response&nbsp;body<br>
179'echo_request_body'&nbsp;means&nbsp;return&nbsp;the&nbsp;request&nbsp;body&nbsp;in&nbsp;the&nbsp;response&nbsp;body<br>
180'echo_request_uri'&nbsp;means&nbsp;return&nbsp;the&nbsp;request&nbsp;uri&nbsp;in&nbsp;the&nbsp;response&nbsp;body<br>&nbsp;</tt></td></tr>
181<tr><td>&nbsp;</td>
182<td width="100%">Methods defined here:<br>
183<dl><dt><a name="HttpMockSequence-__init__"><strong>__init__</strong></a>(self, iterable)</dt><dd><tt>Args:<br>
184&nbsp;&nbsp;iterable:&nbsp;iterable,&nbsp;a&nbsp;sequence&nbsp;of&nbsp;pairs&nbsp;of&nbsp;(headers,&nbsp;body)</tt></dd></dl>
185
186<dl><dt><a name="HttpMockSequence-request"><strong>request</strong></a>(self, uri, method<font color="#909090">='GET'</font>, body<font color="#909090">=None</font>, headers<font color="#909090">=None</font>, redirections<font color="#909090">=1</font>, connection_type<font color="#909090">=None</font>)</dt></dl>
187
188<hr>
189Data descriptors defined here:<br>
190<dl><dt><strong>__dict__</strong></dt>
191<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
192</dl>
193<dl><dt><strong>__weakref__</strong></dt>
194<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
195</dl>
196</td></tr></table> <p>
197<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
198<tr bgcolor="#ffc8d8">
199<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500200<font color="#000000" face="helvetica, arial"><a name="HttpRequest">class <strong>HttpRequest</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
201
202<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
203<td colspan=2><tt>Encapsulates&nbsp;a&nbsp;single&nbsp;HTTP&nbsp;request.<br>&nbsp;</tt></td></tr>
204<tr><td>&nbsp;</td>
205<td width="100%">Methods defined here:<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500206<dl><dt><a name="HttpRequest-__init__"><strong>__init__</strong></a>(self, http, postproc, uri, method<font color="#909090">='GET'</font>, body<font color="#909090">=None</font>, headers<font color="#909090">=None</font>, methodId<font color="#909090">=None</font>, resumable<font color="#909090">=None</font>)</dt><dd><tt>Constructor&nbsp;for&nbsp;an&nbsp;<a href="#HttpRequest">HttpRequest</a>.<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500207&nbsp;<br>
208Args:<br>
209&nbsp;&nbsp;http:&nbsp;httplib2.Http,&nbsp;the&nbsp;transport&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;to&nbsp;use&nbsp;to&nbsp;make&nbsp;a&nbsp;request<br>
Joe Gregorioabda96f2011-02-11 20:19:33 -0500210&nbsp;&nbsp;postproc:&nbsp;callable,&nbsp;called&nbsp;on&nbsp;the&nbsp;HTTP&nbsp;response&nbsp;and&nbsp;content&nbsp;to&nbsp;transform<br>
211&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it&nbsp;into&nbsp;a&nbsp;data&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;before&nbsp;returning,&nbsp;or&nbsp;raising&nbsp;an&nbsp;exception<br>
212&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;an&nbsp;error.<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500213&nbsp;&nbsp;uri:&nbsp;string,&nbsp;the&nbsp;absolute&nbsp;URI&nbsp;to&nbsp;send&nbsp;the&nbsp;request&nbsp;to<br>
214&nbsp;&nbsp;method:&nbsp;string,&nbsp;the&nbsp;HTTP&nbsp;method&nbsp;to&nbsp;use<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500215&nbsp;&nbsp;body:&nbsp;string,&nbsp;the&nbsp;request&nbsp;body&nbsp;of&nbsp;the&nbsp;HTTP&nbsp;request,<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500216&nbsp;&nbsp;headers:&nbsp;dict,&nbsp;the&nbsp;HTTP&nbsp;request&nbsp;headers<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500217&nbsp;&nbsp;methodId:&nbsp;string,&nbsp;a&nbsp;unique&nbsp;identifier&nbsp;for&nbsp;the&nbsp;API&nbsp;method&nbsp;being&nbsp;called.<br>
Joe Gregoriod9d00902012-04-13 07:58:30 -0400218&nbsp;&nbsp;resumable:&nbsp;<a href="#MediaUpload">MediaUpload</a>,&nbsp;None&nbsp;if&nbsp;this&nbsp;is&nbsp;not&nbsp;a&nbsp;resumbale&nbsp;request.</tt></dd></dl>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500219
220<dl><dt><a name="HttpRequest-execute"><strong>execute</strong></a>(self, http<font color="#909090">=None</font>)</dt><dd><tt>Execute&nbsp;the&nbsp;request.<br>
221&nbsp;<br>
222Args:<br>
223&nbsp;&nbsp;http:&nbsp;httplib2.Http,&nbsp;an&nbsp;http&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;to&nbsp;be&nbsp;used&nbsp;in&nbsp;place&nbsp;of&nbsp;the<br>
224&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;one&nbsp;the&nbsp;<a href="#HttpRequest">HttpRequest</a>&nbsp;request&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;was&nbsp;constructed&nbsp;with.<br>
225&nbsp;<br>
226Returns:<br>
227&nbsp;&nbsp;A&nbsp;deserialized&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;model&nbsp;of&nbsp;the&nbsp;response&nbsp;body&nbsp;as&nbsp;determined<br>
228&nbsp;&nbsp;by&nbsp;the&nbsp;postproc.<br>
229&nbsp;<br>
230Raises:<br>
231&nbsp;&nbsp;apiclient.errors.HttpError&nbsp;if&nbsp;the&nbsp;response&nbsp;was&nbsp;not&nbsp;a&nbsp;2xx.<br>
232&nbsp;&nbsp;httplib2.Error&nbsp;if&nbsp;a&nbsp;transport&nbsp;error&nbsp;has&nbsp;occured.</tt></dd></dl>
233
Joe Gregoriob417caf2011-12-08 12:04:24 -0500234<dl><dt><a name="HttpRequest-next_chunk"><strong>next_chunk</strong></a>(self, http<font color="#909090">=None</font>)</dt><dd><tt>Execute&nbsp;the&nbsp;next&nbsp;step&nbsp;of&nbsp;a&nbsp;resumable&nbsp;upload.<br>
235&nbsp;<br>
236Can&nbsp;only&nbsp;be&nbsp;used&nbsp;if&nbsp;the&nbsp;method&nbsp;being&nbsp;executed&nbsp;supports&nbsp;media&nbsp;uploads&nbsp;and<br>
Joe Gregoriod9d00902012-04-13 07:58:30 -0400237the&nbsp;<a href="#MediaUpload">MediaUpload</a>&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;passed&nbsp;in&nbsp;was&nbsp;flagged&nbsp;as&nbsp;using&nbsp;resumable&nbsp;upload.<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500238&nbsp;<br>
239Example:<br>
240&nbsp;<br>
Joe Gregoriod9d00902012-04-13 07:58:30 -0400241&nbsp;&nbsp;media&nbsp;=&nbsp;<a href="#MediaFileUpload">MediaFileUpload</a>('smiley.png',&nbsp;mimetype='image/png',<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500242&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chunksize=1000,&nbsp;resumable=True)<br>
243&nbsp;&nbsp;request&nbsp;=&nbsp;service.objects().insert(<br>
244&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bucket=buckets['items'][0]['id'],<br>
245&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name='smiley.png',<br>
246&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;media_body=media)<br>
247&nbsp;<br>
248&nbsp;&nbsp;response&nbsp;=&nbsp;None<br>
249&nbsp;&nbsp;while&nbsp;response&nbsp;is&nbsp;None:<br>
250&nbsp;&nbsp;&nbsp;&nbsp;status,&nbsp;response&nbsp;=&nbsp;request.<a href="#HttpRequest-next_chunk">next_chunk</a>()<br>
251&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;status:<br>
252&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"Upload&nbsp;%d%%&nbsp;complete."&nbsp;%&nbsp;int(status.progress()&nbsp;*&nbsp;100)<br>
253&nbsp;<br>
254&nbsp;<br>
255Returns:<br>
256&nbsp;&nbsp;(status,&nbsp;body):&nbsp;(ResumableMediaStatus,&nbsp;<a href="__builtin__.html#object">object</a>)<br>
257&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;body&nbsp;will&nbsp;be&nbsp;None&nbsp;until&nbsp;the&nbsp;resumable&nbsp;media&nbsp;is&nbsp;fully&nbsp;uploaded.</tt></dd></dl>
258
259<dl><dt><a name="HttpRequest-to_json"><strong>to_json</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;JSON&nbsp;representation&nbsp;of&nbsp;the&nbsp;<a href="#HttpRequest">HttpRequest</a>.</tt></dd></dl>
260
261<hr>
262Static methods defined here:<br>
263<dl><dt><a name="HttpRequest-from_json"><strong>from_json</strong></a>(s, http, postproc)</dt><dd><tt>Returns&nbsp;an&nbsp;<a href="#HttpRequest">HttpRequest</a>&nbsp;populated&nbsp;with&nbsp;info&nbsp;from&nbsp;a&nbsp;JSON&nbsp;<a href="__builtin__.html#object">object</a>.</tt></dd></dl>
264
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500265<hr>
266Data descriptors defined here:<br>
267<dl><dt><strong>__dict__</strong></dt>
268<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
269</dl>
270<dl><dt><strong>__weakref__</strong></dt>
271<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
272</dl>
273</td></tr></table> <p>
274<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
275<tr bgcolor="#ffc8d8">
276<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregoriod9d00902012-04-13 07:58:30 -0400277<font color="#000000" face="helvetica, arial"><a name="HttpRequestMock">class <strong>HttpRequestMock</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
278
279<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
280<td colspan=2><tt>Mock&nbsp;of&nbsp;<a href="#HttpRequest">HttpRequest</a>.<br>
281&nbsp;<br>
282Do&nbsp;not&nbsp;construct&nbsp;directly,&nbsp;instead&nbsp;use&nbsp;<a href="#RequestMockBuilder">RequestMockBuilder</a>.<br>&nbsp;</tt></td></tr>
283<tr><td>&nbsp;</td>
284<td width="100%">Methods defined here:<br>
285<dl><dt><a name="HttpRequestMock-__init__"><strong>__init__</strong></a>(self, resp, content, postproc)</dt><dd><tt>Constructor&nbsp;for&nbsp;<a href="#HttpRequestMock">HttpRequestMock</a><br>
286&nbsp;<br>
287Args:<br>
288&nbsp;&nbsp;resp:&nbsp;httplib2.Response,&nbsp;the&nbsp;response&nbsp;to&nbsp;emulate&nbsp;coming&nbsp;from&nbsp;the&nbsp;request<br>
289&nbsp;&nbsp;content:&nbsp;string,&nbsp;the&nbsp;response&nbsp;body<br>
290&nbsp;&nbsp;postproc:&nbsp;callable,&nbsp;the&nbsp;post&nbsp;processing&nbsp;function&nbsp;usually&nbsp;supplied&nbsp;by<br>
291&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;model&nbsp;class.&nbsp;See&nbsp;model.JsonModel.response()&nbsp;as&nbsp;an&nbsp;example.</tt></dd></dl>
292
293<dl><dt><a name="HttpRequestMock-execute"><strong>execute</strong></a>(self, http<font color="#909090">=None</font>)</dt><dd><tt>Execute&nbsp;the&nbsp;request.<br>
294&nbsp;<br>
295Same&nbsp;behavior&nbsp;as&nbsp;<a href="#HttpRequest">HttpRequest</a>.<a href="#HttpRequestMock-execute">execute</a>(),&nbsp;but&nbsp;the&nbsp;response&nbsp;is<br>
296mocked&nbsp;and&nbsp;not&nbsp;really&nbsp;from&nbsp;an&nbsp;HTTP&nbsp;request/response.</tt></dd></dl>
297
298<hr>
299Data descriptors defined here:<br>
300<dl><dt><strong>__dict__</strong></dt>
301<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
302</dl>
303<dl><dt><strong>__weakref__</strong></dt>
304<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
305</dl>
306</td></tr></table> <p>
307<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
308<tr bgcolor="#ffc8d8">
309<td colspan=3 valign=bottom>&nbsp;<br>
310<font color="#000000" face="helvetica, arial"><a name="MediaFileUpload">class <strong>MediaFileUpload</strong></a>(<a href="apiclient.http.html#MediaUpload">MediaUpload</a>)</font></td></tr>
311
312<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
313<td colspan=2><tt>A&nbsp;<a href="#MediaUpload">MediaUpload</a>&nbsp;for&nbsp;a&nbsp;file.<br>
314&nbsp;<br>
315Construct&nbsp;a&nbsp;<a href="#MediaFileUpload">MediaFileUpload</a>&nbsp;and&nbsp;pass&nbsp;as&nbsp;the&nbsp;media_body&nbsp;parameter&nbsp;of&nbsp;the<br>
316method.&nbsp;For&nbsp;example,&nbsp;if&nbsp;we&nbsp;had&nbsp;a&nbsp;service&nbsp;that&nbsp;allowed&nbsp;uploading&nbsp;images:<br>
317&nbsp;<br>
318&nbsp;<br>
319&nbsp;&nbsp;media&nbsp;=&nbsp;<a href="#MediaFileUpload">MediaFileUpload</a>('smiley.png',&nbsp;mimetype='image/png',&nbsp;chunksize=1000,<br>
320&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resumable=True)<br>
321&nbsp;&nbsp;service.objects().insert(<br>
322&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bucket=buckets['items'][0]['id'],<br>
323&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name='smiley.png',<br>
324&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;media_body=media).execute()<br>&nbsp;</tt></td></tr>
325<tr><td>&nbsp;</td>
326<td width="100%"><dl><dt>Method resolution order:</dt>
327<dd><a href="apiclient.http.html#MediaFileUpload">MediaFileUpload</a></dd>
328<dd><a href="apiclient.http.html#MediaUpload">MediaUpload</a></dd>
329<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
330</dl>
331<hr>
332Methods defined here:<br>
333<dl><dt><a name="MediaFileUpload-__init__"><strong>__init__</strong></a>(self, filename, mimetype<font color="#909090">=None</font>, chunksize<font color="#909090">=262144</font>, resumable<font color="#909090">=False</font>)</dt><dd><tt>Constructor.<br>
334&nbsp;<br>
335Args:<br>
336&nbsp;&nbsp;filename:&nbsp;string,&nbsp;Name&nbsp;of&nbsp;the&nbsp;file.<br>
337&nbsp;&nbsp;mimetype:&nbsp;string,&nbsp;Mime-type&nbsp;of&nbsp;the&nbsp;file.&nbsp;If&nbsp;None&nbsp;then&nbsp;a&nbsp;mime-type&nbsp;will&nbsp;be<br>
338&nbsp;&nbsp;&nbsp;&nbsp;guessed&nbsp;from&nbsp;the&nbsp;file&nbsp;extension.<br>
339&nbsp;&nbsp;chunksize:&nbsp;int,&nbsp;File&nbsp;will&nbsp;be&nbsp;uploaded&nbsp;in&nbsp;chunks&nbsp;of&nbsp;this&nbsp;many&nbsp;bytes.&nbsp;Only<br>
340&nbsp;&nbsp;&nbsp;&nbsp;used&nbsp;if&nbsp;resumable=True.<br>
341&nbsp;&nbsp;resumable:&nbsp;bool,&nbsp;True&nbsp;if&nbsp;this&nbsp;is&nbsp;a&nbsp;resumable&nbsp;upload.&nbsp;False&nbsp;means&nbsp;upload<br>
342&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;a&nbsp;single&nbsp;request.</tt></dd></dl>
343
344<dl><dt><a name="MediaFileUpload-chunksize"><strong>chunksize</strong></a>(self)</dt></dl>
345
346<dl><dt><a name="MediaFileUpload-getbytes"><strong>getbytes</strong></a>(self, begin, length)</dt><dd><tt>Get&nbsp;bytes&nbsp;from&nbsp;the&nbsp;media.<br>
347&nbsp;<br>
348Args:<br>
349&nbsp;&nbsp;begin:&nbsp;int,&nbsp;offset&nbsp;from&nbsp;beginning&nbsp;of&nbsp;file.<br>
350&nbsp;&nbsp;length:&nbsp;int,&nbsp;number&nbsp;of&nbsp;bytes&nbsp;to&nbsp;read,&nbsp;starting&nbsp;at&nbsp;begin.<br>
351&nbsp;<br>
352Returns:<br>
353&nbsp;&nbsp;A&nbsp;string&nbsp;of&nbsp;bytes&nbsp;read.&nbsp;May&nbsp;be&nbsp;shorted&nbsp;than&nbsp;length&nbsp;if&nbsp;EOF&nbsp;was&nbsp;reached<br>
354&nbsp;&nbsp;first.</tt></dd></dl>
355
356<dl><dt><a name="MediaFileUpload-mimetype"><strong>mimetype</strong></a>(self)</dt></dl>
357
358<dl><dt><a name="MediaFileUpload-resumable"><strong>resumable</strong></a>(self)</dt></dl>
359
360<dl><dt><a name="MediaFileUpload-size"><strong>size</strong></a>(self)</dt></dl>
361
362<dl><dt><a name="MediaFileUpload-to_json"><strong>to_json</strong></a>(self)</dt><dd><tt>Creating&nbsp;a&nbsp;JSON&nbsp;representation&nbsp;of&nbsp;an&nbsp;instance&nbsp;of&nbsp;Credentials.<br>
363&nbsp;<br>
364Returns:<br>
365&nbsp;&nbsp;&nbsp;string,&nbsp;a&nbsp;JSON&nbsp;representation&nbsp;of&nbsp;this&nbsp;instance,&nbsp;suitable&nbsp;to&nbsp;pass&nbsp;to<br>
366&nbsp;&nbsp;&nbsp;<a href="#MediaFileUpload-from_json">from_json</a>().</tt></dd></dl>
367
368<hr>
369Static methods defined here:<br>
370<dl><dt><a name="MediaFileUpload-from_json"><strong>from_json</strong></a>(s)</dt></dl>
371
372<hr>
373Class methods inherited from <a href="apiclient.http.html#MediaUpload">MediaUpload</a>:<br>
374<dl><dt><a name="MediaFileUpload-new_from_json"><strong>new_from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Utility&nbsp;class&nbsp;method&nbsp;to&nbsp;instantiate&nbsp;a&nbsp;<a href="#MediaUpload">MediaUpload</a>&nbsp;subclass&nbsp;from&nbsp;a&nbsp;JSON<br>
375representation&nbsp;produced&nbsp;by&nbsp;<a href="#MediaFileUpload-to_json">to_json</a>().<br>
376&nbsp;<br>
377Args:<br>
378&nbsp;&nbsp;s:&nbsp;string,&nbsp;JSON&nbsp;from&nbsp;<a href="#MediaFileUpload-to_json">to_json</a>().<br>
379&nbsp;<br>
380Returns:<br>
381&nbsp;&nbsp;An&nbsp;instance&nbsp;of&nbsp;the&nbsp;subclass&nbsp;of&nbsp;<a href="#MediaUpload">MediaUpload</a>&nbsp;that&nbsp;was&nbsp;serialized&nbsp;with<br>
382&nbsp;&nbsp;<a href="#MediaFileUpload-to_json">to_json</a>().</tt></dd></dl>
383
384<hr>
385Data descriptors inherited from <a href="apiclient.http.html#MediaUpload">MediaUpload</a>:<br>
386<dl><dt><strong>__dict__</strong></dt>
387<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
388</dl>
389<dl><dt><strong>__weakref__</strong></dt>
390<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
391</dl>
392</td></tr></table> <p>
393<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
394<tr bgcolor="#ffc8d8">
395<td colspan=3 valign=bottom>&nbsp;<br>
396<font color="#000000" face="helvetica, arial"><a name="MediaInMemoryUpload">class <strong>MediaInMemoryUpload</strong></a>(<a href="apiclient.http.html#MediaUpload">MediaUpload</a>)</font></td></tr>
397
398<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
399<td colspan=2><tt><a href="#MediaUpload">MediaUpload</a>&nbsp;for&nbsp;a&nbsp;chunk&nbsp;of&nbsp;bytes.<br>
400&nbsp;<br>
401Construct&nbsp;a&nbsp;<a href="#MediaFileUpload">MediaFileUpload</a>&nbsp;and&nbsp;pass&nbsp;as&nbsp;the&nbsp;media_body&nbsp;parameter&nbsp;of&nbsp;the<br>
402method.&nbsp;For&nbsp;example,&nbsp;if&nbsp;we&nbsp;had&nbsp;a&nbsp;service&nbsp;that&nbsp;allowed&nbsp;plain&nbsp;text:<br>&nbsp;</tt></td></tr>
403<tr><td>&nbsp;</td>
404<td width="100%"><dl><dt>Method resolution order:</dt>
405<dd><a href="apiclient.http.html#MediaInMemoryUpload">MediaInMemoryUpload</a></dd>
406<dd><a href="apiclient.http.html#MediaUpload">MediaUpload</a></dd>
407<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
408</dl>
409<hr>
410Methods defined here:<br>
411<dl><dt><a name="MediaInMemoryUpload-__init__"><strong>__init__</strong></a>(self, body, mimetype<font color="#909090">='application/octet-stream'</font>, chunksize<font color="#909090">=262144</font>, resumable<font color="#909090">=False</font>)</dt><dd><tt>Create&nbsp;a&nbsp;new&nbsp;MediaBytesUpload.<br>
412&nbsp;<br>
413Args:<br>
414&nbsp;&nbsp;body:&nbsp;string,&nbsp;Bytes&nbsp;of&nbsp;body&nbsp;content.<br>
415&nbsp;&nbsp;mimetype:&nbsp;string,&nbsp;Mime-type&nbsp;of&nbsp;the&nbsp;file&nbsp;or&nbsp;default&nbsp;of<br>
416&nbsp;&nbsp;&nbsp;&nbsp;'application/octet-stream'.<br>
417&nbsp;&nbsp;chunksize:&nbsp;int,&nbsp;File&nbsp;will&nbsp;be&nbsp;uploaded&nbsp;in&nbsp;chunks&nbsp;of&nbsp;this&nbsp;many&nbsp;bytes.&nbsp;Only<br>
418&nbsp;&nbsp;&nbsp;&nbsp;used&nbsp;if&nbsp;resumable=True.<br>
419&nbsp;&nbsp;resumable:&nbsp;bool,&nbsp;True&nbsp;if&nbsp;this&nbsp;is&nbsp;a&nbsp;resumable&nbsp;upload.&nbsp;False&nbsp;means&nbsp;upload<br>
420&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;a&nbsp;single&nbsp;request.</tt></dd></dl>
421
422<dl><dt><a name="MediaInMemoryUpload-chunksize"><strong>chunksize</strong></a>(self)</dt><dd><tt>Chunk&nbsp;size&nbsp;for&nbsp;resumable&nbsp;uploads.<br>
423&nbsp;<br>
424Returns:<br>
425&nbsp;&nbsp;Chunk&nbsp;size&nbsp;in&nbsp;bytes.</tt></dd></dl>
426
427<dl><dt><a name="MediaInMemoryUpload-getbytes"><strong>getbytes</strong></a>(self, begin, length)</dt><dd><tt>Get&nbsp;bytes&nbsp;from&nbsp;the&nbsp;media.<br>
428&nbsp;<br>
429Args:<br>
430&nbsp;&nbsp;begin:&nbsp;int,&nbsp;offset&nbsp;from&nbsp;beginning&nbsp;of&nbsp;file.<br>
431&nbsp;&nbsp;length:&nbsp;int,&nbsp;number&nbsp;of&nbsp;bytes&nbsp;to&nbsp;read,&nbsp;starting&nbsp;at&nbsp;begin.<br>
432&nbsp;<br>
433Returns:<br>
434&nbsp;&nbsp;A&nbsp;string&nbsp;of&nbsp;bytes&nbsp;read.&nbsp;May&nbsp;be&nbsp;shorter&nbsp;than&nbsp;length&nbsp;if&nbsp;EOF&nbsp;was&nbsp;reached<br>
435&nbsp;&nbsp;first.</tt></dd></dl>
436
437<dl><dt><a name="MediaInMemoryUpload-mimetype"><strong>mimetype</strong></a>(self)</dt><dd><tt>Mime&nbsp;type&nbsp;of&nbsp;the&nbsp;body.<br>
438&nbsp;<br>
439Returns:<br>
440&nbsp;&nbsp;Mime&nbsp;type.</tt></dd></dl>
441
442<dl><dt><a name="MediaInMemoryUpload-resumable"><strong>resumable</strong></a>(self)</dt><dd><tt>Whether&nbsp;this&nbsp;upload&nbsp;is&nbsp;resumable.<br>
443&nbsp;<br>
444Returns:<br>
445&nbsp;&nbsp;True&nbsp;if&nbsp;resumable&nbsp;upload&nbsp;or&nbsp;False.</tt></dd></dl>
446
447<dl><dt><a name="MediaInMemoryUpload-size"><strong>size</strong></a>(self)</dt><dd><tt>Size&nbsp;of&nbsp;upload.<br>
448&nbsp;<br>
449Returns:<br>
450&nbsp;&nbsp;Size&nbsp;of&nbsp;the&nbsp;body.</tt></dd></dl>
451
452<dl><dt><a name="MediaInMemoryUpload-to_json"><strong>to_json</strong></a>(self)</dt><dd><tt>Create&nbsp;a&nbsp;JSON&nbsp;representation&nbsp;of&nbsp;a&nbsp;<a href="#MediaInMemoryUpload">MediaInMemoryUpload</a>.<br>
453&nbsp;<br>
454Returns:<br>
455&nbsp;&nbsp;&nbsp;string,&nbsp;a&nbsp;JSON&nbsp;representation&nbsp;of&nbsp;this&nbsp;instance,&nbsp;suitable&nbsp;to&nbsp;pass&nbsp;to<br>
456&nbsp;&nbsp;&nbsp;<a href="#MediaInMemoryUpload-from_json">from_json</a>().</tt></dd></dl>
457
458<hr>
459Static methods defined here:<br>
460<dl><dt><a name="MediaInMemoryUpload-from_json"><strong>from_json</strong></a>(s)</dt></dl>
461
462<hr>
463Class methods inherited from <a href="apiclient.http.html#MediaUpload">MediaUpload</a>:<br>
464<dl><dt><a name="MediaInMemoryUpload-new_from_json"><strong>new_from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Utility&nbsp;class&nbsp;method&nbsp;to&nbsp;instantiate&nbsp;a&nbsp;<a href="#MediaUpload">MediaUpload</a>&nbsp;subclass&nbsp;from&nbsp;a&nbsp;JSON<br>
465representation&nbsp;produced&nbsp;by&nbsp;<a href="#MediaInMemoryUpload-to_json">to_json</a>().<br>
466&nbsp;<br>
467Args:<br>
468&nbsp;&nbsp;s:&nbsp;string,&nbsp;JSON&nbsp;from&nbsp;<a href="#MediaInMemoryUpload-to_json">to_json</a>().<br>
469&nbsp;<br>
470Returns:<br>
471&nbsp;&nbsp;An&nbsp;instance&nbsp;of&nbsp;the&nbsp;subclass&nbsp;of&nbsp;<a href="#MediaUpload">MediaUpload</a>&nbsp;that&nbsp;was&nbsp;serialized&nbsp;with<br>
472&nbsp;&nbsp;<a href="#MediaInMemoryUpload-to_json">to_json</a>().</tt></dd></dl>
473
474<hr>
475Data descriptors inherited from <a href="apiclient.http.html#MediaUpload">MediaUpload</a>:<br>
476<dl><dt><strong>__dict__</strong></dt>
477<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
478</dl>
479<dl><dt><strong>__weakref__</strong></dt>
480<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
481</dl>
482</td></tr></table> <p>
483<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
484<tr bgcolor="#ffc8d8">
485<td colspan=3 valign=bottom>&nbsp;<br>
486<font color="#000000" face="helvetica, arial"><a name="MediaUpload">class <strong>MediaUpload</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
487
488<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
489<td colspan=2><tt>Describes&nbsp;a&nbsp;media&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;to&nbsp;upload.<br>
490&nbsp;<br>
491Base&nbsp;class&nbsp;that&nbsp;defines&nbsp;the&nbsp;interface&nbsp;of&nbsp;<a href="#MediaUpload">MediaUpload</a>&nbsp;subclasses.<br>&nbsp;</tt></td></tr>
492<tr><td>&nbsp;</td>
493<td width="100%">Methods defined here:<br>
494<dl><dt><a name="MediaUpload-chunksize"><strong>chunksize</strong></a>(self)</dt></dl>
495
496<dl><dt><a name="MediaUpload-getbytes"><strong>getbytes</strong></a>(self, begin, end)</dt></dl>
497
498<dl><dt><a name="MediaUpload-mimetype"><strong>mimetype</strong></a>(self)</dt></dl>
499
500<dl><dt><a name="MediaUpload-resumable"><strong>resumable</strong></a>(self)</dt></dl>
501
502<dl><dt><a name="MediaUpload-size"><strong>size</strong></a>(self)</dt></dl>
503
504<dl><dt><a name="MediaUpload-to_json"><strong>to_json</strong></a>(self)</dt><dd><tt>Create&nbsp;a&nbsp;JSON&nbsp;representation&nbsp;of&nbsp;an&nbsp;instance&nbsp;of&nbsp;<a href="#MediaUpload">MediaUpload</a>.<br>
505&nbsp;<br>
506Returns:<br>
507&nbsp;&nbsp;&nbsp;string,&nbsp;a&nbsp;JSON&nbsp;representation&nbsp;of&nbsp;this&nbsp;instance,&nbsp;suitable&nbsp;to&nbsp;pass&nbsp;to<br>
508&nbsp;&nbsp;&nbsp;from_json().</tt></dd></dl>
509
510<hr>
511Class methods defined here:<br>
512<dl><dt><a name="MediaUpload-new_from_json"><strong>new_from_json</strong></a>(cls, s)<font color="#909090"><font face="helvetica, arial"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt><dd><tt>Utility&nbsp;class&nbsp;method&nbsp;to&nbsp;instantiate&nbsp;a&nbsp;<a href="#MediaUpload">MediaUpload</a>&nbsp;subclass&nbsp;from&nbsp;a&nbsp;JSON<br>
513representation&nbsp;produced&nbsp;by&nbsp;<a href="#MediaUpload-to_json">to_json</a>().<br>
514&nbsp;<br>
515Args:<br>
516&nbsp;&nbsp;s:&nbsp;string,&nbsp;JSON&nbsp;from&nbsp;<a href="#MediaUpload-to_json">to_json</a>().<br>
517&nbsp;<br>
518Returns:<br>
519&nbsp;&nbsp;An&nbsp;instance&nbsp;of&nbsp;the&nbsp;subclass&nbsp;of&nbsp;<a href="#MediaUpload">MediaUpload</a>&nbsp;that&nbsp;was&nbsp;serialized&nbsp;with<br>
520&nbsp;&nbsp;<a href="#MediaUpload-to_json">to_json</a>().</tt></dd></dl>
521
522<hr>
523Data descriptors defined here:<br>
524<dl><dt><strong>__dict__</strong></dt>
525<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
526</dl>
527<dl><dt><strong>__weakref__</strong></dt>
528<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
529</dl>
530</td></tr></table> <p>
531<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
532<tr bgcolor="#ffc8d8">
533<td colspan=3 valign=bottom>&nbsp;<br>
534<font color="#000000" face="helvetica, arial"><a name="MediaUploadProgress">class <strong>MediaUploadProgress</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
535
536<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
537<td colspan=2><tt>Status&nbsp;of&nbsp;a&nbsp;resumable&nbsp;upload.<br>&nbsp;</tt></td></tr>
538<tr><td>&nbsp;</td>
539<td width="100%">Methods defined here:<br>
540<dl><dt><a name="MediaUploadProgress-__init__"><strong>__init__</strong></a>(self, resumable_progress, total_size)</dt><dd><tt>Constructor.<br>
541&nbsp;<br>
542Args:<br>
543&nbsp;&nbsp;resumable_progress:&nbsp;int,&nbsp;bytes&nbsp;sent&nbsp;so&nbsp;far.<br>
544&nbsp;&nbsp;total_size:&nbsp;int,&nbsp;total&nbsp;bytes&nbsp;in&nbsp;complete&nbsp;upload.</tt></dd></dl>
545
546<dl><dt><a name="MediaUploadProgress-progress"><strong>progress</strong></a>(self)</dt><dd><tt>Percent&nbsp;of&nbsp;upload&nbsp;completed,&nbsp;as&nbsp;a&nbsp;float.</tt></dd></dl>
547
548<hr>
549Data descriptors defined here:<br>
550<dl><dt><strong>__dict__</strong></dt>
551<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
552</dl>
553<dl><dt><strong>__weakref__</strong></dt>
554<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
555</dl>
556</td></tr></table> <p>
557<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
558<tr bgcolor="#ffc8d8">
559<td colspan=3 valign=bottom>&nbsp;<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500560<font color="#000000" face="helvetica, arial"><a name="RequestMockBuilder">class <strong>RequestMockBuilder</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
561
562<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
563<td colspan=2><tt>A&nbsp;simple&nbsp;mock&nbsp;of&nbsp;<a href="#HttpRequest">HttpRequest</a><br>
564&nbsp;<br>
565Pass&nbsp;in&nbsp;a&nbsp;dictionary&nbsp;to&nbsp;the&nbsp;constructor&nbsp;that&nbsp;maps&nbsp;request&nbsp;methodIds&nbsp;to<br>
Joe Gregorioa8451672011-09-15 09:53:21 -0400566tuples&nbsp;of&nbsp;(httplib2.Response,&nbsp;content,&nbsp;opt_expected_body)&nbsp;that&nbsp;should&nbsp;be<br>
567returned&nbsp;when&nbsp;that&nbsp;method&nbsp;is&nbsp;called.&nbsp;None&nbsp;may&nbsp;also&nbsp;be&nbsp;passed&nbsp;in&nbsp;for&nbsp;the<br>
568httplib2.Response,&nbsp;in&nbsp;which&nbsp;case&nbsp;a&nbsp;200&nbsp;OK&nbsp;response&nbsp;will&nbsp;be&nbsp;generated.<br>
569If&nbsp;an&nbsp;opt_expected_body&nbsp;(str&nbsp;or&nbsp;dict)&nbsp;is&nbsp;provided,&nbsp;it&nbsp;will&nbsp;be&nbsp;compared&nbsp;to<br>
570the&nbsp;body&nbsp;and&nbsp;UnexpectedBodyError&nbsp;will&nbsp;be&nbsp;raised&nbsp;on&nbsp;inequality.<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500571&nbsp;<br>
572Example:<br>
573&nbsp;&nbsp;response&nbsp;=&nbsp;'{"data":&nbsp;{"id":&nbsp;"tag:google.c...'<br>
574&nbsp;&nbsp;requestBuilder&nbsp;=&nbsp;<a href="#RequestMockBuilder">RequestMockBuilder</a>(<br>
575&nbsp;&nbsp;&nbsp;&nbsp;{<br>
Joe Gregorioc4fc0952011-11-09 12:21:11 -0500576&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'plus.activities.get':&nbsp;(None,&nbsp;response),<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500577&nbsp;&nbsp;&nbsp;&nbsp;}<br>
578&nbsp;&nbsp;)<br>
Joe Gregorioc4fc0952011-11-09 12:21:11 -0500579&nbsp;&nbsp;apiclient.discovery.build("plus",&nbsp;"v1",&nbsp;requestBuilder=requestBuilder)<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500580&nbsp;<br>
581Methods&nbsp;that&nbsp;you&nbsp;do&nbsp;not&nbsp;supply&nbsp;a&nbsp;response&nbsp;for&nbsp;will&nbsp;return&nbsp;a<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500582200&nbsp;OK&nbsp;with&nbsp;an&nbsp;empty&nbsp;string&nbsp;as&nbsp;the&nbsp;response&nbsp;content&nbsp;or&nbsp;raise&nbsp;an&nbsp;excpetion<br>
583if&nbsp;check_unexpected&nbsp;is&nbsp;set&nbsp;to&nbsp;True.&nbsp;The&nbsp;methodId&nbsp;is&nbsp;taken&nbsp;from&nbsp;the&nbsp;rpcName<br>
Joe Gregorioa8451672011-09-15 09:53:21 -0400584in&nbsp;the&nbsp;discovery&nbsp;document.<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500585&nbsp;<br>
586For&nbsp;more&nbsp;details&nbsp;see&nbsp;the&nbsp;project&nbsp;wiki.<br>&nbsp;</tt></td></tr>
587<tr><td>&nbsp;</td>
588<td width="100%">Methods defined here:<br>
Joe Gregoriob417caf2011-12-08 12:04:24 -0500589<dl><dt><a name="RequestMockBuilder-__call__"><strong>__call__</strong></a>(self, http, postproc, uri, method<font color="#909090">='GET'</font>, body<font color="#909090">=None</font>, headers<font color="#909090">=None</font>, methodId<font color="#909090">=None</font>, resumable<font color="#909090">=None</font>)</dt><dd><tt>Implements&nbsp;the&nbsp;callable&nbsp;interface&nbsp;that&nbsp;discovery.build()&nbsp;expects<br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500590of&nbsp;requestBuilder,&nbsp;which&nbsp;is&nbsp;to&nbsp;build&nbsp;an&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;compatible&nbsp;with<br>
591<a href="#HttpRequest">HttpRequest</a>.execute().&nbsp;See&nbsp;that&nbsp;method&nbsp;for&nbsp;the&nbsp;description&nbsp;of&nbsp;the<br>
592parameters&nbsp;and&nbsp;the&nbsp;expected&nbsp;response.</tt></dd></dl>
593
Joe Gregorioa8451672011-09-15 09:53:21 -0400594<dl><dt><a name="RequestMockBuilder-__init__"><strong>__init__</strong></a>(self, responses, check_unexpected<font color="#909090">=False</font>)</dt><dd><tt>Constructor&nbsp;for&nbsp;<a href="#RequestMockBuilder">RequestMockBuilder</a><br>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500595&nbsp;<br>
596The&nbsp;constructed&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;should&nbsp;be&nbsp;a&nbsp;callable&nbsp;<a href="__builtin__.html#object">object</a><br>
597that&nbsp;can&nbsp;replace&nbsp;the&nbsp;class&nbsp;HttpResponse.<br>
598&nbsp;<br>
599responses&nbsp;-&nbsp;A&nbsp;dictionary&nbsp;that&nbsp;maps&nbsp;methodIds&nbsp;into&nbsp;tuples<br>
600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;(httplib2.Response,&nbsp;content).&nbsp;The&nbsp;methodId<br>
601&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comes&nbsp;from&nbsp;the&nbsp;'rpcName'&nbsp;field&nbsp;in&nbsp;the&nbsp;discovery<br>
Joe Gregorioa8451672011-09-15 09:53:21 -0400602&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.<br>
603check_unexpected&nbsp;-&nbsp;A&nbsp;boolean&nbsp;setting&nbsp;whether&nbsp;or&nbsp;not&nbsp;UnexpectedMethodError<br>
604&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;should&nbsp;be&nbsp;raised&nbsp;on&nbsp;unsupplied&nbsp;method.</tt></dd></dl>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500605
606<hr>
607Data descriptors defined here:<br>
608<dl><dt><strong>__dict__</strong></dt>
609<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
610</dl>
611<dl><dt><strong>__weakref__</strong></dt>
612<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
613</dl>
614</td></tr></table></td></tr></table><p>
615<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
Joe Gregorio20a5aa92011-04-01 17:44:25 -0400616<tr bgcolor="#eeaa77">
617<td colspan=3 valign=bottom>&nbsp;<br>
618<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
619
620<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
Joe Gregoriod9d00902012-04-13 07:58:30 -0400621<td width="100%"><dl><dt><a name="-set_user_agent"><strong>set_user_agent</strong></a>(http, user_agent)</dt><dd><tt>Set&nbsp;the&nbsp;user-agent&nbsp;on&nbsp;every&nbsp;request.<br>
622&nbsp;<br>
623Args:<br>
624&nbsp;&nbsp;&nbsp;http&nbsp;-&nbsp;An&nbsp;instance&nbsp;of&nbsp;httplib2.Http<br>
625&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;something&nbsp;that&nbsp;acts&nbsp;like&nbsp;it.<br>
626&nbsp;&nbsp;&nbsp;user_agent:&nbsp;string,&nbsp;the&nbsp;value&nbsp;for&nbsp;the&nbsp;user-agent&nbsp;header.<br>
627&nbsp;<br>
628Returns:<br>
629&nbsp;&nbsp;&nbsp;A&nbsp;modified&nbsp;instance&nbsp;of&nbsp;http&nbsp;that&nbsp;was&nbsp;passed&nbsp;in.<br>
630&nbsp;<br>
631Example:<br>
632&nbsp;<br>
633&nbsp;&nbsp;h&nbsp;=&nbsp;httplib2.Http()<br>
634&nbsp;&nbsp;h&nbsp;=&nbsp;<a href="#-set_user_agent">set_user_agent</a>(h,&nbsp;"my-app-name/6.0")<br>
635&nbsp;<br>
636Most&nbsp;of&nbsp;the&nbsp;time&nbsp;the&nbsp;user-agent&nbsp;will&nbsp;be&nbsp;set&nbsp;doing&nbsp;auth,&nbsp;this&nbsp;is&nbsp;for&nbsp;the&nbsp;rare<br>
637cases&nbsp;where&nbsp;you&nbsp;are&nbsp;accessing&nbsp;an&nbsp;unauthenticated&nbsp;endpoint.</tt></dd></dl>
638 <dl><dt><a name="-tunnel_patch"><strong>tunnel_patch</strong></a>(http)</dt><dd><tt>Tunnel&nbsp;PATCH&nbsp;requests&nbsp;over&nbsp;POST.<br>
Joe Gregorio20a5aa92011-04-01 17:44:25 -0400639Args:<br>
640&nbsp;&nbsp;&nbsp;http&nbsp;-&nbsp;An&nbsp;instance&nbsp;of&nbsp;httplib2.Http<br>
641&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;something&nbsp;that&nbsp;acts&nbsp;like&nbsp;it.<br>
642&nbsp;<br>
643Returns:<br>
644&nbsp;&nbsp;&nbsp;A&nbsp;modified&nbsp;instance&nbsp;of&nbsp;http&nbsp;that&nbsp;was&nbsp;passed&nbsp;in.<br>
645&nbsp;<br>
646Example:<br>
647&nbsp;<br>
648&nbsp;&nbsp;h&nbsp;=&nbsp;httplib2.Http()<br>
649&nbsp;&nbsp;h&nbsp;=&nbsp;<a href="#-tunnel_patch">tunnel_patch</a>(h,&nbsp;"my-app-name/6.0")<br>
650&nbsp;<br>
651Useful&nbsp;if&nbsp;you&nbsp;are&nbsp;running&nbsp;on&nbsp;a&nbsp;platform&nbsp;that&nbsp;doesn't&nbsp;support&nbsp;PATCH.<br>
652Apply&nbsp;this&nbsp;last&nbsp;if&nbsp;you&nbsp;are&nbsp;using&nbsp;OAuth&nbsp;1.0,&nbsp;as&nbsp;changing&nbsp;the&nbsp;method<br>
653will&nbsp;result&nbsp;in&nbsp;a&nbsp;different&nbsp;signature.</tt></dd></dl>
654</td></tr></table><p>
655<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500656<tr bgcolor="#55aa55">
657<td colspan=3 valign=bottom>&nbsp;<br>
658<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
659
660<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
Joe Gregoriod9d00902012-04-13 07:58:30 -0400661<td width="100%"><strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'</td></tr></table><p>
Joe Gregorio30dfdc32010-12-09 16:34:22 -0500662<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
663<tr bgcolor="#7799ee">
664<td colspan=3 valign=bottom>&nbsp;<br>
665<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
666
667<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
668<td width="100%">jcgregorio@google.com&nbsp;(Joe&nbsp;Gregorio)</td></tr></table>
669</body></html>