blob: a4b675177c9ba18ae9c0239b79b809541dce6e82 [file] [log] [blame]
John Asmuth614db982014-04-24 15:46:26 -04001<?xml version="1.0" encoding="ascii"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "DTD/xhtml1-transitional.dtd">
4<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5<head>
6 <title>googleapiclient.mimeparse</title>
7 <link rel="stylesheet" href="epydoc.css" type="text/css" />
8 <script type="text/javascript" src="epydoc.js"></script>
9</head>
10
11<body bgcolor="white" text="black" link="blue" vlink="#204080"
12 alink="#204080">
13<!-- ==================== NAVIGATION BAR ==================== -->
14<table class="navbar" border="0" width="100%" cellpadding="0"
15 bgcolor="#a0c0ff" cellspacing="0">
16 <tr valign="middle">
17 <!-- Home link -->
18 <th>&nbsp;&nbsp;&nbsp;<a
19 href="googleapiclient-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
20
21 <!-- Tree link -->
22 <th>&nbsp;&nbsp;&nbsp;<a
23 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
24
25 <!-- Index link -->
26 <th>&nbsp;&nbsp;&nbsp;<a
27 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
28
29 <!-- Help link -->
30 <th>&nbsp;&nbsp;&nbsp;<a
31 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
32
33 <th class="navbar" width="100%"></th>
34 </tr>
35</table>
36<table width="100%" cellpadding="0" cellspacing="0">
37 <tr valign="top">
38 <td width="100%">
39 <span class="breadcrumbs">
40 <a href="googleapiclient-module.html">Package&nbsp;googleapiclient</a> ::
41 Module&nbsp;mimeparse
42 </span>
43 </td>
44 <td>
45 <table cellpadding="0" cellspacing="0">
46 <!-- hide/show private -->
47 <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
48 onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
49 <tr><td align="right"><span class="options"
50 >[<a href="frames.html" target="_top">frames</a
51 >]&nbsp;|&nbsp;<a href="googleapiclient.mimeparse-module.html"
52 target="_top">no&nbsp;frames</a>]</span></td></tr>
53 </table>
54 </td>
55 </tr>
56</table>
57<!-- ==================== MODULE DESCRIPTION ==================== -->
58<h1 class="epydoc">Module mimeparse</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html">source&nbsp;code</a></span></p>
59<pre class="literalblock">
60MIME-Type Parser
61
62This module provides basic functions for handling mime-types. It can handle
63matching mime-types against a list of media-ranges. See section 14.1 of the
64HTTP specification [RFC 2616] for a complete explanation.
65
66 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
67
68Contents:
69 - parse_mime_type(): Parses a mime-type into its component parts.
70 - parse_media_range(): Media-ranges are mime-types with wild-cards and a 'q'
71 quality parameter.
72 - quality(): Determines the quality ('q') of a mime-type when
73 compared against a list of media-ranges.
74 - quality_parsed(): Just like quality() except the second parameter must be
75 pre-parsed.
76 - best_match(): Choose the mime-type with the highest quality ('q')
77 from a list of candidates.
78
79</pre>
80
81<hr />
82<div class="fields"> <p><strong>Version:</strong>
83 0.1.3
84 </p>
85 <p><strong>Author:</strong>
86 Joe Gregorio
87 </p>
88 <p><strong>License:</strong>
89 MIT License
90 </p>
91</div><!-- ==================== FUNCTIONS ==================== -->
92<a name="section-Functions"></a>
93<table class="summary" border="1" cellpadding="3"
94 cellspacing="0" width="100%" bgcolor="white">
95<tr bgcolor="#70b0f0" class="table-header">
96 <td colspan="2" class="table-header">
97 <table border="0" cellpadding="0" cellspacing="0" width="100%">
98 <tr valign="top">
99 <td align="left"><span class="table-header">Functions</span></td>
100 <td align="right" valign="top"
101 ><span class="options">[<a href="#section-Functions"
102 class="privatelink" onclick="toggle_private();"
103 >hide private</a>]</span></td>
104 </tr>
105 </table>
106 </td>
107</tr>
108<tr>
109 <td width="15%" align="right" valign="top" class="summary">
110 <span class="summary-type">&nbsp;</span>
111 </td><td class="summary">
112 <table width="100%" cellpadding="0" cellspacing="0" border="0">
113 <tr>
114 <td><span class="summary-sig"><a href="googleapiclient.mimeparse-module.html#parse_mime_type" class="summary-sig-name">parse_mime_type</a>(<span class="summary-sig-arg">mime_type</span>)</span><br />
115 Parses a mime-type into its component parts.</td>
116 <td align="right" valign="top">
117 <span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#parse_mime_type">source&nbsp;code</a></span>
118
119 </td>
120 </tr>
121 </table>
122
123 </td>
124 </tr>
125<tr>
126 <td width="15%" align="right" valign="top" class="summary">
127 <span class="summary-type">&nbsp;</span>
128 </td><td class="summary">
129 <table width="100%" cellpadding="0" cellspacing="0" border="0">
130 <tr>
131 <td><span class="summary-sig"><a href="googleapiclient.mimeparse-module.html#parse_media_range" class="summary-sig-name">parse_media_range</a>(<span class="summary-sig-arg">range</span>)</span><br />
132 Parse a media-range into its component parts.</td>
133 <td align="right" valign="top">
134 <span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#parse_media_range">source&nbsp;code</a></span>
135
136 </td>
137 </tr>
138 </table>
139
140 </td>
141 </tr>
142<tr>
143 <td width="15%" align="right" valign="top" class="summary">
144 <span class="summary-type">&nbsp;</span>
145 </td><td class="summary">
146 <table width="100%" cellpadding="0" cellspacing="0" border="0">
147 <tr>
148 <td><span class="summary-sig"><a href="googleapiclient.mimeparse-module.html#fitness_and_quality_parsed" class="summary-sig-name">fitness_and_quality_parsed</a>(<span class="summary-sig-arg">mime_type</span>,
149 <span class="summary-sig-arg">parsed_ranges</span>)</span><br />
150 Find the best match for a mime-type amongst parsed media-ranges.</td>
151 <td align="right" valign="top">
152 <span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#fitness_and_quality_parsed">source&nbsp;code</a></span>
153
154 </td>
155 </tr>
156 </table>
157
158 </td>
159 </tr>
160<tr>
161 <td width="15%" align="right" valign="top" class="summary">
162 <span class="summary-type">&nbsp;</span>
163 </td><td class="summary">
164 <table width="100%" cellpadding="0" cellspacing="0" border="0">
165 <tr>
166 <td><span class="summary-sig"><a href="googleapiclient.mimeparse-module.html#quality_parsed" class="summary-sig-name">quality_parsed</a>(<span class="summary-sig-arg">mime_type</span>,
167 <span class="summary-sig-arg">parsed_ranges</span>)</span><br />
168 Find the best match for a mime-type amongst parsed media-ranges.</td>
169 <td align="right" valign="top">
170 <span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#quality_parsed">source&nbsp;code</a></span>
171
172 </td>
173 </tr>
174 </table>
175
176 </td>
177 </tr>
178<tr>
179 <td width="15%" align="right" valign="top" class="summary">
180 <span class="summary-type">&nbsp;</span>
181 </td><td class="summary">
182 <table width="100%" cellpadding="0" cellspacing="0" border="0">
183 <tr>
184 <td><span class="summary-sig"><a href="googleapiclient.mimeparse-module.html#quality" class="summary-sig-name">quality</a>(<span class="summary-sig-arg">mime_type</span>,
185 <span class="summary-sig-arg">ranges</span>)</span><br />
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700186 Return the quality ('q') of a mime-type against a list of
187 media-ranges.</td>
John Asmuth614db982014-04-24 15:46:26 -0400188 <td align="right" valign="top">
189 <span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#quality">source&nbsp;code</a></span>
190
191 </td>
192 </tr>
193 </table>
194
195 </td>
196 </tr>
197<tr>
198 <td width="15%" align="right" valign="top" class="summary">
199 <span class="summary-type">&nbsp;</span>
200 </td><td class="summary">
201 <table width="100%" cellpadding="0" cellspacing="0" border="0">
202 <tr>
203 <td><span class="summary-sig"><a href="googleapiclient.mimeparse-module.html#best_match" class="summary-sig-name">best_match</a>(<span class="summary-sig-arg">supported</span>,
204 <span class="summary-sig-arg">header</span>)</span><br />
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700205 Return mime-type with the highest quality ('q') from list of
206 candidates.</td>
John Asmuth614db982014-04-24 15:46:26 -0400207 <td align="right" valign="top">
208 <span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#best_match">source&nbsp;code</a></span>
209
210 </td>
211 </tr>
212 </table>
213
214 </td>
215 </tr>
216<tr class="private">
217 <td width="15%" align="right" valign="top" class="summary">
218 <span class="summary-type">&nbsp;</span>
219 </td><td class="summary">
220 <table width="100%" cellpadding="0" cellspacing="0" border="0">
221 <tr>
222 <td><span class="summary-sig"><a name="_filter_blank"></a><span class="summary-sig-name">_filter_blank</span>(<span class="summary-sig-arg">i</span>)</span></td>
223 <td align="right" valign="top">
224 <span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#_filter_blank">source&nbsp;code</a></span>
225
226 </td>
227 </tr>
228 </table>
229
230 </td>
231 </tr>
232</table>
233<!-- ==================== VARIABLES ==================== -->
234<a name="section-Variables"></a>
235<table class="summary" border="1" cellpadding="3"
236 cellspacing="0" width="100%" bgcolor="white">
237<tr bgcolor="#70b0f0" class="table-header">
238 <td colspan="2" class="table-header">
239 <table border="0" cellpadding="0" cellspacing="0" width="100%">
240 <tr valign="top">
241 <td align="left"><span class="table-header">Variables</span></td>
242 <td align="right" valign="top"
243 ><span class="options">[<a href="#section-Variables"
244 class="privatelink" onclick="toggle_private();"
245 >hide private</a>]</span></td>
246 </tr>
247 </table>
248 </td>
249</tr>
250<tr>
251 <td width="15%" align="right" valign="top" class="summary">
252 <span class="summary-type">&nbsp;</span>
253 </td><td class="summary">
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700254 <a name="__email__"></a><span class="summary-name">__email__</span> = <code title="'joe@bitworking.org'"><code class="variable-quote">'</code><code class="variable-string">joe@bitworking.org</code><code class="variable-quote">'</code></code>
John Asmuth614db982014-04-24 15:46:26 -0400255 </td>
256 </tr>
257<tr>
258 <td width="15%" align="right" valign="top" class="summary">
259 <span class="summary-type">&nbsp;</span>
260 </td><td class="summary">
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700261 <a name="__credits__"></a><span class="summary-name">__credits__</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
262 </td>
263 </tr>
264<tr>
265 <td width="15%" align="right" valign="top" class="summary">
266 <span class="summary-type">&nbsp;</span>
267 </td><td class="summary">
268 <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="None">None</code>
John Asmuth614db982014-04-24 15:46:26 -0400269 </td>
270 </tr>
271</table>
272<!-- ==================== FUNCTION DETAILS ==================== -->
273<a name="section-FunctionDetails"></a>
274<table class="details" border="1" cellpadding="3"
275 cellspacing="0" width="100%" bgcolor="white">
276<tr bgcolor="#70b0f0" class="table-header">
277 <td colspan="2" class="table-header">
278 <table border="0" cellpadding="0" cellspacing="0" width="100%">
279 <tr valign="top">
280 <td align="left"><span class="table-header">Function Details</span></td>
281 <td align="right" valign="top"
282 ><span class="options">[<a href="#section-FunctionDetails"
283 class="privatelink" onclick="toggle_private();"
284 >hide private</a>]</span></td>
285 </tr>
286 </table>
287 </td>
288</tr>
289</table>
290<a name="parse_mime_type"></a>
291<div>
292<table class="details" border="1" cellpadding="3"
293 cellspacing="0" width="100%" bgcolor="white">
294<tr><td>
295 <table width="100%" cellpadding="0" cellspacing="0" border="0">
296 <tr valign="top"><td>
297 <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_mime_type</span>(<span class="sig-arg">mime_type</span>)</span>
298 </h3>
299 </td><td align="right" valign="top"
300 ><span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#parse_mime_type">source&nbsp;code</a></span>&nbsp;
301 </td>
302 </tr></table>
303
304 <pre class="literalblock">
305Parses a mime-type into its component parts.
306
307Carves up a mime-type and returns a tuple of the (type, subtype, params)
308where 'params' is a dictionary of all the parameters for the media range.
309For example, the media range 'application/xhtml;q=0.5' would get parsed
310into:
311
312 ('application', 'xhtml', {'q', '0.5'})
313
314
315</pre>
316 <dl class="fields">
317 </dl>
318</td></tr></table>
319</div>
320<a name="parse_media_range"></a>
321<div>
322<table class="details" border="1" cellpadding="3"
323 cellspacing="0" width="100%" bgcolor="white">
324<tr><td>
325 <table width="100%" cellpadding="0" cellspacing="0" border="0">
326 <tr valign="top"><td>
327 <h3 class="epydoc"><span class="sig"><span class="sig-name">parse_media_range</span>(<span class="sig-arg">range</span>)</span>
328 </h3>
329 </td><td align="right" valign="top"
330 ><span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#parse_media_range">source&nbsp;code</a></span>&nbsp;
331 </td>
332 </tr></table>
333
334 <pre class="literalblock">
335Parse a media-range into its component parts.
336
337Carves up a media range and returns a tuple of the (type, subtype,
338params) where 'params' is a dictionary of all the parameters for the media
339range. For example, the media range 'application/*;q=0.5' would get parsed
340into:
341
342 ('application', '*', {'q', '0.5'})
343
344In addition this function also guarantees that there is a value for 'q'
345in the params dictionary, filling it in with a proper default if
346necessary.
347
348</pre>
349 <dl class="fields">
350 </dl>
351</td></tr></table>
352</div>
353<a name="fitness_and_quality_parsed"></a>
354<div>
355<table class="details" border="1" cellpadding="3"
356 cellspacing="0" width="100%" bgcolor="white">
357<tr><td>
358 <table width="100%" cellpadding="0" cellspacing="0" border="0">
359 <tr valign="top"><td>
360 <h3 class="epydoc"><span class="sig"><span class="sig-name">fitness_and_quality_parsed</span>(<span class="sig-arg">mime_type</span>,
361 <span class="sig-arg">parsed_ranges</span>)</span>
362 </h3>
363 </td><td align="right" valign="top"
364 ><span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#fitness_and_quality_parsed">source&nbsp;code</a></span>&nbsp;
365 </td>
366 </tr></table>
367
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700368 <p>Find the best match for a mime-type amongst parsed media-ranges.</p>
369 <p>Find the best match for a given mime-type against a list of
370 media_ranges that have already been parsed by parse_media_range().
371 Returns a tuple of the fitness value and the value of the 'q' quality
372 parameter of the best match, or (-1, 0) if no match was found. Just as
373 for quality_parsed(), 'parsed_ranges' must be a list of parsed media
374 ranges.</p>
John Asmuth614db982014-04-24 15:46:26 -0400375 <dl class="fields">
376 </dl>
377</td></tr></table>
378</div>
379<a name="quality_parsed"></a>
380<div>
381<table class="details" border="1" cellpadding="3"
382 cellspacing="0" width="100%" bgcolor="white">
383<tr><td>
384 <table width="100%" cellpadding="0" cellspacing="0" border="0">
385 <tr valign="top"><td>
386 <h3 class="epydoc"><span class="sig"><span class="sig-name">quality_parsed</span>(<span class="sig-arg">mime_type</span>,
387 <span class="sig-arg">parsed_ranges</span>)</span>
388 </h3>
389 </td><td align="right" valign="top"
390 ><span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#quality_parsed">source&nbsp;code</a></span>&nbsp;
391 </td>
392 </tr></table>
393
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700394 <p>Find the best match for a mime-type amongst parsed media-ranges.</p>
395 <p>Find the best match for a given mime-type against a list of
396 media_ranges that have already been parsed by parse_media_range().
397 Returns the 'q' quality parameter of the best match, 0 if no match was
398 found. This function bahaves the same as quality() except that
399 'parsed_ranges' must be a list of parsed media ranges.</p>
John Asmuth614db982014-04-24 15:46:26 -0400400 <dl class="fields">
401 </dl>
402</td></tr></table>
403</div>
404<a name="quality"></a>
405<div>
406<table class="details" border="1" cellpadding="3"
407 cellspacing="0" width="100%" bgcolor="white">
408<tr><td>
409 <table width="100%" cellpadding="0" cellspacing="0" border="0">
410 <tr valign="top"><td>
411 <h3 class="epydoc"><span class="sig"><span class="sig-name">quality</span>(<span class="sig-arg">mime_type</span>,
412 <span class="sig-arg">ranges</span>)</span>
413 </h3>
414 </td><td align="right" valign="top"
415 ><span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#quality">source&nbsp;code</a></span>&nbsp;
416 </td>
417 </tr></table>
418
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700419 <p>Return the quality ('q') of a mime-type against a list of
420 media-ranges.</p>
421 <p>Returns the quality 'q' of a mime-type when compared against the
422 media-ranges in ranges. For example:</p>
423<pre class="py-doctest">
424<span class="py-prompt">&gt;&gt;&gt; </span>quality(<span class="py-string">'text/html'</span>,'text/*;q=0.3, text/html;q=0.7,
425<span class="py-output"> text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5')</span>
426<span class="py-output">0.7</span></pre>
John Asmuth614db982014-04-24 15:46:26 -0400427 <dl class="fields">
428 </dl>
429</td></tr></table>
430</div>
431<a name="best_match"></a>
432<div>
433<table class="details" border="1" cellpadding="3"
434 cellspacing="0" width="100%" bgcolor="white">
435<tr><td>
436 <table width="100%" cellpadding="0" cellspacing="0" border="0">
437 <tr valign="top"><td>
438 <h3 class="epydoc"><span class="sig"><span class="sig-name">best_match</span>(<span class="sig-arg">supported</span>,
439 <span class="sig-arg">header</span>)</span>
440 </h3>
441 </td><td align="right" valign="top"
442 ><span class="codelink"><a href="googleapiclient.mimeparse-pysrc.html#best_match">source&nbsp;code</a></span>&nbsp;
443 </td>
444 </tr></table>
445
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700446 <p>Return mime-type with the highest quality ('q') from list of
447 candidates.</p>
448 <p>Takes a list of supported mime-types and finds the best match for all
449 the media-ranges listed in header. The value of header must be a string
450 that conforms to the format of the HTTP Accept: header. The value of
451 'supported' is a list of mime-types. The list of supported mime-types
452 should be sorted in order of increasing desirability, in case of a
453 situation where there is a tie.</p>
454<pre class="py-doctest">
455<span class="py-prompt">&gt;&gt;&gt; </span>best_match([<span class="py-string">'application/xbel+xml'</span>, <span class="py-string">'text/xml'</span>],
456<span class="py-output"> 'text/*;q=0.5,*/*; q=0.1')</span>
457<span class="py-output">'text/xml'</span></pre>
John Asmuth614db982014-04-24 15:46:26 -0400458 <dl class="fields">
459 </dl>
460</td></tr></table>
461</div>
462<br />
463<!-- ==================== NAVIGATION BAR ==================== -->
464<table class="navbar" border="0" width="100%" cellpadding="0"
465 bgcolor="#a0c0ff" cellspacing="0">
466 <tr valign="middle">
467 <!-- Home link -->
468 <th>&nbsp;&nbsp;&nbsp;<a
469 href="googleapiclient-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
470
471 <!-- Tree link -->
472 <th>&nbsp;&nbsp;&nbsp;<a
473 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
474
475 <!-- Index link -->
476 <th>&nbsp;&nbsp;&nbsp;<a
477 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
478
479 <!-- Help link -->
480 <th>&nbsp;&nbsp;&nbsp;<a
481 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
482
483 <th class="navbar" width="100%"></th>
484 </tr>
485</table>
486<table border="0" cellpadding="0" cellspacing="0" width="100%%">
487 <tr>
488 <td align="left" class="footer">
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700489 Generated by Epydoc 3.0.1 on Fri Oct 2 20:46:22 2020
John Asmuth614db982014-04-24 15:46:26 -0400490 </td>
491 <td align="right" class="footer">
492 <a target="mainFrame" href="http://epydoc.sourceforge.net"
493 >http://epydoc.sourceforge.net</a>
494 </td>
495 </tr>
496</table>
497
498<script type="text/javascript">
499 <!--
500 // Private objects are initially displayed (because if
501 // javascript is turned off then we want them to be
502 // visible); but by default, we want to hide them. So hide
503 // them unless we have a cookie that says to show them.
504 checkCookie();
505 // -->
506</script>
507</body>
508</html>