[Zope-dev] Proposal: cleaning up the content-type story
Thomas Lotze
tl at gocept.com
Thu Oct 1 10:44:06 EDT 2009
Tres Seaver wrote:
> Thomas Lotze wrote:
>> Following up to Martijn's observations on the ZTK, I'd like to propose a
>> clean-up of how we handle content types. There are several unrelated
>> pieces of code concerned with content types, these include at least
>> zope.contenttype, zope.mimetype and zope.publisher.contenttype.
>>
>> - zope.contenttype does some content-type guessing from file names. It's
>> just a few lines of code and comes with a table of some 30
>> associations of file-name extensions with content types.
>>
>> - zope.mimetype is a more substantial package that deals with
>> content-type specific marker interfaces.
I actually forgot to mention that zope.mimetype comes with another table
associating content types with file name suffixes and other information.
It would certainly be a good idea to have only one such data collection to
maintain.
>> - zope.publisher.contenttype contains a parser for content-type
>> specifications.
>>
>> I propose merging those two packages and one module into one package,
>> zope.contenttype.
[...]
>
> - How do 'zope.file' and 'zope.filerepresentation' interact with these
> modules?
zope.file uses zope.mimetype to have a structured way of talking about
content-type-related properties of file objects, and
zope.publisher.contenttype for parsing content-type strings.
zope.filerepresentation only defines some interfaces and uses none of the
modules in question.
> - How do these modules interact with the standard library's 'mimetypes'
> module?
Both zope.contenttype and zope.mimetype use the mimetypes module to guess
content-types from file names. In fact, both even do some guesswork based
on the first bytes of file content. Probably merging the two involves
essentially dropping one of the implementations.
I also wonder whether it might make sense to utilise the /etc/mime.types
database (or the system's equivalent) for guessing based on the file-name
extension, and libmagic (if available) for magic-number tests based on
file contents. But of course, these ideas don't have much to do with the
restructuring discussed in this thread.
--
Thomas
More information about the Zope-Dev
mailing list