testtools: Fix included testtools, for systems that don't have it.
[nivanova/samba-autobuild/.git] / lib / testtools / testtools / content_type.py
diff --git a/lib/testtools/testtools/content_type.py b/lib/testtools/testtools/content_type.py
new file mode 100644 (file)
index 0000000..aded81b
--- /dev/null
@@ -0,0 +1,30 @@
+# Copyright (c) 2009 Jonathan M. Lange. See LICENSE for details.
+
+"""ContentType - a MIME Content Type."""
+
+
+class ContentType(object):
+    """A content type from http://www.iana.org/assignments/media-types/
+
+    :ivar type: The primary type, e.g. "text" or "application"
+    :ivar subtype: The subtype, e.g. "plain" or "octet-stream"
+    :ivar parameters: A dict of additional parameters specific to the
+        content type.
+    """
+
+    def __init__(self, primary_type, sub_type, parameters=None):
+        """Create a ContentType."""
+        if None in (primary_type, sub_type):
+            raise ValueError("None not permitted in %r, %r" % (
+                primary_type, sub_type))
+        self.type = primary_type
+        self.subtype = sub_type
+        self.parameters = parameters or {}
+
+    def __eq__(self, other):
+        if type(other) != ContentType:
+            return False
+        return self.__dict__ == other.__dict__
+
+    def __repr__(self):
+        return "%s/%s params=%s" % (self.type, self.subtype, self.parameters)