1
0

MimeTypes.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. //
  2. // MimeTypes.swift
  3. // Swifter
  4. //
  5. // Created by Daniel Große on 16.02.18.
  6. //
  7. import Foundation
  8. internal let DEFAULT_MIME_TYPE = "application/octet-stream"
  9. internal let mimeTypes = [
  10. "html": "text/html",
  11. "htm": "text/html",
  12. "shtml": "text/html",
  13. "css": "text/css",
  14. "xml": "text/xml",
  15. "gif": "image/gif",
  16. "jpeg": "image/jpeg",
  17. "jpg": "image/jpeg",
  18. "js": "application/javascript",
  19. "atom": "application/atom+xml",
  20. "rss": "application/rss+xml",
  21. "mml": "text/mathml",
  22. "txt": "text/plain",
  23. "jad": "text/vnd.sun.j2me.app-descriptor",
  24. "wml": "text/vnd.wap.wml",
  25. "htc": "text/x-component",
  26. "png": "image/png",
  27. "tif": "image/tiff",
  28. "tiff": "image/tiff",
  29. "wbmp": "image/vnd.wap.wbmp",
  30. "ico": "image/x-icon",
  31. "jng": "image/x-jng",
  32. "bmp": "image/x-ms-bmp",
  33. "svg": "image/svg+xml",
  34. "svgz": "image/svg+xml",
  35. "webp": "image/webp",
  36. "woff": "application/font-woff",
  37. "jar": "application/java-archive",
  38. "war": "application/java-archive",
  39. "ear": "application/java-archive",
  40. "json": "application/json",
  41. "hqx": "application/mac-binhex40",
  42. "doc": "application/msword",
  43. "pdf": "application/pdf",
  44. "ps": "application/postscript",
  45. "eps": "application/postscript",
  46. "ai": "application/postscript",
  47. "rtf": "application/rtf",
  48. "m3u8": "application/vnd.apple.mpegurl",
  49. "xls": "application/vnd.ms-excel",
  50. "eot": "application/vnd.ms-fontobject",
  51. "ppt": "application/vnd.ms-powerpoint",
  52. "wmlc": "application/vnd.wap.wmlc",
  53. "kml": "application/vnd.google-earth.kml+xml",
  54. "kmz": "application/vnd.google-earth.kmz",
  55. "7z": "application/x-7z-compressed",
  56. "cco": "application/x-cocoa",
  57. "jardiff": "application/x-java-archive-diff",
  58. "jnlp": "application/x-java-jnlp-file",
  59. "run": "application/x-makeself",
  60. "pl": "application/x-perl",
  61. "pm": "application/x-perl",
  62. "prc": "application/x-pilot",
  63. "pdb": "application/x-pilot",
  64. "rar": "application/x-rar-compressed",
  65. "rpm": "application/x-redhat-package-manager",
  66. "sea": "application/x-sea",
  67. "swf": "application/x-shockwave-flash",
  68. "sit": "application/x-stuffit",
  69. "tcl": "application/x-tcl",
  70. "tk": "application/x-tcl",
  71. "der": "application/x-x509-ca-cert",
  72. "pem": "application/x-x509-ca-cert",
  73. "crt": "application/x-x509-ca-cert",
  74. "xpi": "application/x-xpinstall",
  75. "xhtml": "application/xhtml+xml",
  76. "xspf": "application/xspf+xml",
  77. "zip": "application/zip",
  78. "bin": "application/octet-stream",
  79. "exe": "application/octet-stream",
  80. "dll": "application/octet-stream",
  81. "deb": "application/octet-stream",
  82. "dmg": "application/octet-stream",
  83. "iso": "application/octet-stream",
  84. "img": "application/octet-stream",
  85. "msi": "application/octet-stream",
  86. "msp": "application/octet-stream",
  87. "msm": "application/octet-stream",
  88. "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
  89. "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  90. "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
  91. "mid": "audio/midi",
  92. "midi": "audio/midi",
  93. "kar": "audio/midi",
  94. "mp3": "audio/mpeg",
  95. "ogg": "audio/ogg",
  96. "m4a": "audio/x-m4a",
  97. "ra": "audio/x-realaudio",
  98. "3gpp": "video/3gpp",
  99. "3gp": "video/3gpp",
  100. "ts": "video/mp2t",
  101. "mp4": "video/mp4",
  102. "mpeg": "video/mpeg",
  103. "mpg": "video/mpeg",
  104. "mov": "video/quicktime",
  105. "webm": "video/webm",
  106. "flv": "video/x-flv",
  107. "m4v": "video/x-m4v",
  108. "mng": "video/x-mng",
  109. "asx": "video/x-ms-asf",
  110. "asf": "video/x-ms-asf",
  111. "wmv": "video/x-ms-wmv",
  112. "avi": "video/x-msvideo"
  113. ]
  114. internal func matchMimeType(extens: String?) -> String {
  115. if extens != nil && mimeTypes.contains(where: { $0.0 == extens!.lowercased() }) {
  116. return mimeTypes[extens!.lowercased()]!
  117. }
  118. return DEFAULT_MIME_TYPE
  119. }
  120. extension NSURL {
  121. public func mimeType() -> String {
  122. return matchMimeType(extens: self.pathExtension)
  123. }
  124. }
  125. extension NSString {
  126. public func mimeType() -> String {
  127. return matchMimeType(extens: self.pathExtension)
  128. }
  129. }
  130. extension String {
  131. public func mimeType() -> String {
  132. return (NSString(string: self)).mimeType()
  133. }
  134. }