MIMEParse Port to C# Posted
2009-02-18
I posted a full port of Joe Gregorio's
MIMEParse utilty.
The primary method of this utility accepts two inputs:
- A string array of MIME types
- Such as those supported by a web server for a selected resource
- A single string of acceptable MIME types
- Sush as those sent by common browsers in the Accept Header when requesting a resource from a web server
The utility evaluates the options based on rules in the RFC2616 section 14.1 and returns the
"best match" as a result (or no result if no match can be found). Below are some test examples:
mimeTypesSupported = new string[] { "application/xbel+xml", "text/xml" };
// match using a type versus a lower weighted subtype
Debug.Assert(MimeParse.BestMatch(mimeTypesSupported, "text/*;q=0.5,*/*; q=0.1") == "text/xml");
// fail to match anything
Debug.Assert(MimeParse.BestMatch(mimeTypesSupported, "text/html,application/atom+xml; q=0.9") == string.Empty);
Some other links:
TO-DO Sample Posted
2009-02-01
I posted a simple TO-DO app to show how easy it is to support the HTTP DELETE
method using modern
browsers. I did this as a follow up to my rant after find (yet another) example of mis-using
POST
in an ASP.NET/MVC code snippet.
This first step is to render the TO-DO item as HTML. Below is my example using XSLT to convert raw data
(from SDS into the proper HTML:
<xsl:template match="todo">
<dt>
<xsl:value-of select="message"/>
</dt>
<dd>
<form name="delete-form" class="delete-form" action="{s:Id}" method="get"
rel="delete" refresh="/{$root}/" style="display:none;">
<input type="submit" value="Delete" />
</form>
</dd>
</xsl:template>
The important code in my example is the following client-side Javascript (in response to a FORM POST
:
function deleteItem()
{
var formName,refreshUrl;
formName = this.getAttribute('name');
refreshUrl = this.getAttribute('refresh');
ajax.showStatus=false;
ajax.httpDeleteForm(null, null, deleteCallback, false, refreshUrl,formName);
return false;
}
function deleteCallback(response,headers,context,status,msg)
{
location.href=context
return false;
}
The point here is that you can use standard FORM POST
HTML markup to render the UI and use javascript
to link an Ajax DELETE
to the FORM
. There is no need to 'overload' POST
with other meanings (like
'delete this thing' or 'update this thing' or 'wash my socks', etc.)
Feel free to download the code example from GitHub (see link above) and play around with it. Feedback is welcome, too.