blob: 0ce36c1c0d5f7e36bc37c27e0440b58bc44b4296 [file] [log] [blame]
Joe Gregoriob9e63ff2011-06-30 12:38:10 -04001
2<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
3<html><head><title>Python: module apiclient.mimeparse</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>.mimeparse</strong></big></big> (version 0.1.3)</font></td
10><td align=right valign=bottom
Joe Gregorioa8451672011-09-15 09:53:21 -040011><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiclient/apiclient/mimeparse.py">/usr/local/google/home/jcgregorio/projects/apiclient/apiclient/mimeparse.py</a></font></td></tr></table>
Joe Gregoriob9e63ff2011-06-30 12:38:10 -040012 <p><tt>MIME-Type&nbsp;Parser<br>
13&nbsp;<br>
14This&nbsp;module&nbsp;provides&nbsp;basic&nbsp;functions&nbsp;for&nbsp;handling&nbsp;mime-types.&nbsp;It&nbsp;can&nbsp;handle<br>
15matching&nbsp;mime-types&nbsp;against&nbsp;a&nbsp;list&nbsp;of&nbsp;media-ranges.&nbsp;See&nbsp;section&nbsp;14.1&nbsp;of&nbsp;the<br>
16HTTP&nbsp;specification&nbsp;[<a href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC&nbsp;2616</a>]&nbsp;for&nbsp;a&nbsp;complete&nbsp;explanation.<br>
17&nbsp;<br>
18&nbsp;&nbsp;&nbsp;<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1</a><br>
19&nbsp;<br>
20Contents:<br>
21&nbsp;-&nbsp;<a href="#-parse_mime_type">parse_mime_type</a>():&nbsp;&nbsp;&nbsp;Parses&nbsp;a&nbsp;mime-type&nbsp;into&nbsp;its&nbsp;component&nbsp;parts.<br>
22&nbsp;-&nbsp;<a href="#-parse_media_range">parse_media_range</a>():&nbsp;Media-ranges&nbsp;are&nbsp;mime-types&nbsp;with&nbsp;wild-cards&nbsp;and&nbsp;a&nbsp;'q'<br>
23&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;quality&nbsp;parameter.<br>
24&nbsp;-&nbsp;<a href="#-quality">quality</a>():&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines&nbsp;the&nbsp;quality&nbsp;('q')&nbsp;of&nbsp;a&nbsp;mime-type&nbsp;when<br>
25&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;compared&nbsp;against&nbsp;a&nbsp;list&nbsp;of&nbsp;media-ranges.<br>
26&nbsp;-&nbsp;<a href="#-quality_parsed">quality_parsed</a>():&nbsp;&nbsp;&nbsp;&nbsp;Just&nbsp;like&nbsp;<a href="#-quality">quality</a>()&nbsp;except&nbsp;the&nbsp;second&nbsp;parameter&nbsp;must&nbsp;be<br>
27&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;pre-parsed.<br>
28&nbsp;-&nbsp;<a href="#-best_match">best_match</a>():&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Choose&nbsp;the&nbsp;mime-type&nbsp;with&nbsp;the&nbsp;highest&nbsp;quality&nbsp;('q')<br>
29&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;from&nbsp;a&nbsp;list&nbsp;of&nbsp;candidates.</tt></p>
30<p>
31<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
32<tr bgcolor="#eeaa77">
33<td colspan=3 valign=bottom>&nbsp;<br>
34<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
35
36<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
37<td width="100%"><dl><dt><a name="-best_match"><strong>best_match</strong></a>(supported, header)</dt><dd><tt>Return&nbsp;mime-type&nbsp;with&nbsp;the&nbsp;highest&nbsp;quality&nbsp;('q')&nbsp;from&nbsp;list&nbsp;of&nbsp;candidates.<br>
38&nbsp;<br>
39Takes&nbsp;a&nbsp;list&nbsp;of&nbsp;supported&nbsp;mime-types&nbsp;and&nbsp;finds&nbsp;the&nbsp;best&nbsp;match&nbsp;for&nbsp;all&nbsp;the<br>
40media-ranges&nbsp;listed&nbsp;in&nbsp;header.&nbsp;The&nbsp;value&nbsp;of&nbsp;header&nbsp;must&nbsp;be&nbsp;a&nbsp;string&nbsp;that<br>
41conforms&nbsp;to&nbsp;the&nbsp;format&nbsp;of&nbsp;the&nbsp;HTTP&nbsp;Accept:&nbsp;header.&nbsp;The&nbsp;value&nbsp;of&nbsp;'supported'<br>
42is&nbsp;a&nbsp;list&nbsp;of&nbsp;mime-types.&nbsp;The&nbsp;list&nbsp;of&nbsp;supported&nbsp;mime-types&nbsp;should&nbsp;be&nbsp;sorted<br>
43in&nbsp;order&nbsp;of&nbsp;increasing&nbsp;desirability,&nbsp;in&nbsp;case&nbsp;of&nbsp;a&nbsp;situation&nbsp;where&nbsp;there&nbsp;is<br>
44a&nbsp;tie.<br>
45&nbsp;<br>
46&gt;&gt;&gt;&nbsp;<a href="#-best_match">best_match</a>(['application/xbel+xml',&nbsp;'text/xml'],<br>
47&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'text/*;q=0.5,*/*;&nbsp;q=0.1')<br>
48'text/xml'</tt></dd></dl>
49 <dl><dt><a name="-fitness_and_quality_parsed"><strong>fitness_and_quality_parsed</strong></a>(mime_type, parsed_ranges)</dt><dd><tt>Find&nbsp;the&nbsp;best&nbsp;match&nbsp;for&nbsp;a&nbsp;mime-type&nbsp;amongst&nbsp;parsed&nbsp;media-ranges.<br>
50&nbsp;<br>
51Find&nbsp;the&nbsp;best&nbsp;match&nbsp;for&nbsp;a&nbsp;given&nbsp;mime-type&nbsp;against&nbsp;a&nbsp;list&nbsp;of&nbsp;media_ranges<br>
52that&nbsp;have&nbsp;already&nbsp;been&nbsp;parsed&nbsp;by&nbsp;<a href="#-parse_media_range">parse_media_range</a>().&nbsp;Returns&nbsp;a&nbsp;tuple&nbsp;of<br>
53the&nbsp;fitness&nbsp;value&nbsp;and&nbsp;the&nbsp;value&nbsp;of&nbsp;the&nbsp;'q'&nbsp;quality&nbsp;parameter&nbsp;of&nbsp;the&nbsp;best<br>
54match,&nbsp;or&nbsp;(-1,&nbsp;0)&nbsp;if&nbsp;no&nbsp;match&nbsp;was&nbsp;found.&nbsp;Just&nbsp;as&nbsp;for&nbsp;<a href="#-quality_parsed">quality_parsed</a>(),<br>
55'parsed_ranges'&nbsp;must&nbsp;be&nbsp;a&nbsp;list&nbsp;of&nbsp;parsed&nbsp;media&nbsp;ranges.</tt></dd></dl>
56 <dl><dt><a name="-parse_media_range"><strong>parse_media_range</strong></a>(range)</dt><dd><tt>Parse&nbsp;a&nbsp;media-range&nbsp;into&nbsp;its&nbsp;component&nbsp;parts.<br>
57&nbsp;<br>
58Carves&nbsp;up&nbsp;a&nbsp;media&nbsp;range&nbsp;and&nbsp;returns&nbsp;a&nbsp;tuple&nbsp;of&nbsp;the&nbsp;(type,&nbsp;subtype,<br>
59params)&nbsp;where&nbsp;'params'&nbsp;is&nbsp;a&nbsp;dictionary&nbsp;of&nbsp;all&nbsp;the&nbsp;parameters&nbsp;for&nbsp;the&nbsp;media<br>
60range.&nbsp;&nbsp;For&nbsp;example,&nbsp;the&nbsp;media&nbsp;range&nbsp;'application/*;q=0.5'&nbsp;would&nbsp;get&nbsp;parsed<br>
61into:<br>
62&nbsp;<br>
63&nbsp;&nbsp;&nbsp;('application',&nbsp;'*',&nbsp;{'q',&nbsp;'0.5'})<br>
64&nbsp;<br>
65In&nbsp;addition&nbsp;this&nbsp;function&nbsp;also&nbsp;guarantees&nbsp;that&nbsp;there&nbsp;is&nbsp;a&nbsp;value&nbsp;for&nbsp;'q'<br>
66in&nbsp;the&nbsp;params&nbsp;dictionary,&nbsp;filling&nbsp;it&nbsp;in&nbsp;with&nbsp;a&nbsp;proper&nbsp;default&nbsp;if<br>
67necessary.</tt></dd></dl>
68 <dl><dt><a name="-parse_mime_type"><strong>parse_mime_type</strong></a>(mime_type)</dt><dd><tt>Parses&nbsp;a&nbsp;mime-type&nbsp;into&nbsp;its&nbsp;component&nbsp;parts.<br>
69&nbsp;<br>
70Carves&nbsp;up&nbsp;a&nbsp;mime-type&nbsp;and&nbsp;returns&nbsp;a&nbsp;tuple&nbsp;of&nbsp;the&nbsp;(type,&nbsp;subtype,&nbsp;params)<br>
71where&nbsp;'params'&nbsp;is&nbsp;a&nbsp;dictionary&nbsp;of&nbsp;all&nbsp;the&nbsp;parameters&nbsp;for&nbsp;the&nbsp;media&nbsp;range.<br>
72For&nbsp;example,&nbsp;the&nbsp;media&nbsp;range&nbsp;'application/xhtml;q=0.5'&nbsp;would&nbsp;get&nbsp;parsed<br>
73into:<br>
74&nbsp;<br>
75&nbsp;&nbsp;&nbsp;('application',&nbsp;'xhtml',&nbsp;{'q',&nbsp;'0.5'})</tt></dd></dl>
76 <dl><dt><a name="-quality"><strong>quality</strong></a>(mime_type, ranges)</dt><dd><tt>Return&nbsp;the&nbsp;quality&nbsp;('q')&nbsp;of&nbsp;a&nbsp;mime-type&nbsp;against&nbsp;a&nbsp;list&nbsp;of&nbsp;media-ranges.<br>
77&nbsp;<br>
78Returns&nbsp;the&nbsp;quality&nbsp;'q'&nbsp;of&nbsp;a&nbsp;mime-type&nbsp;when&nbsp;compared&nbsp;against&nbsp;the<br>
79media-ranges&nbsp;in&nbsp;ranges.&nbsp;For&nbsp;example:<br>
80&nbsp;<br>
81&gt;&gt;&gt;&nbsp;<a href="#-quality">quality</a>('text/html','text/*;q=0.3,&nbsp;text/html;q=0.7,<br>
82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text/html;level=1,&nbsp;text/html;level=2;q=0.4,&nbsp;*/*;q=0.5')<br>
830.7</tt></dd></dl>
84 <dl><dt><a name="-quality_parsed"><strong>quality_parsed</strong></a>(mime_type, parsed_ranges)</dt><dd><tt>Find&nbsp;the&nbsp;best&nbsp;match&nbsp;for&nbsp;a&nbsp;mime-type&nbsp;amongst&nbsp;parsed&nbsp;media-ranges.<br>
85&nbsp;<br>
86Find&nbsp;the&nbsp;best&nbsp;match&nbsp;for&nbsp;a&nbsp;given&nbsp;mime-type&nbsp;against&nbsp;a&nbsp;list&nbsp;of&nbsp;media_ranges<br>
87that&nbsp;have&nbsp;already&nbsp;been&nbsp;parsed&nbsp;by&nbsp;<a href="#-parse_media_range">parse_media_range</a>().&nbsp;Returns&nbsp;the&nbsp;'q'<br>
88quality&nbsp;parameter&nbsp;of&nbsp;the&nbsp;best&nbsp;match,&nbsp;0&nbsp;if&nbsp;no&nbsp;match&nbsp;was&nbsp;found.&nbsp;This&nbsp;function<br>
89bahaves&nbsp;the&nbsp;same&nbsp;as&nbsp;<a href="#-quality">quality</a>()&nbsp;except&nbsp;that&nbsp;'parsed_ranges'&nbsp;must&nbsp;be&nbsp;a&nbsp;list&nbsp;of<br>
90parsed&nbsp;media&nbsp;ranges.</tt></dd></dl>
91</td></tr></table><p>
92<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
93<tr bgcolor="#55aa55">
94<td colspan=3 valign=bottom>&nbsp;<br>
95<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
96
97<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
98<td width="100%"><strong>__author__</strong> = 'Joe Gregorio'<br>
99<strong>__credits__</strong> = ''<br>
100<strong>__email__</strong> = 'joe@bitworking.org'<br>
101<strong>__license__</strong> = 'MIT License'<br>
102<strong>__version__</strong> = '0.1.3'</td></tr></table><p>
103<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
104<tr bgcolor="#7799ee">
105<td colspan=3 valign=bottom>&nbsp;<br>
106<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
107
108<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
109<td width="100%">Joe&nbsp;Gregorio</td></tr></table><p>
110<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
111<tr bgcolor="#7799ee">
112<td colspan=3 valign=bottom>&nbsp;<br>
113<font color="#ffffff" face="helvetica, arial"><big><strong>Credits</strong></big></font></td></tr>
114
115<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
116<td width="100%"></td></tr></table>
117</body></html>