Repository: syncope
Updated Branches:
  refs/heads/2_0_X 1855b0b4d -> 0b5da3865


[SYNCOPE-1097] Downloaded files for binary attributes have a better naming


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/0b5da386
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/0b5da386
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/0b5da386

Branch: refs/heads/2_0_X
Commit: 0b5da38650747b2ae7eb218f65d9e161d3f0bb5a
Parents: 1855b0b
Author: skylark17 <matteo.alessandr...@tirasa.net>
Authored: Tue Aug 8 16:24:53 2017 +0200
Committer: skylark17 <matteo.alessandr...@tirasa.net>
Committed: Tue Aug 8 16:25:42 2017 +0200

----------------------------------------------------------------------
 .../client/console/init/MIMETypesLoader.java    |   38 +-
 .../console/panels/PlainSchemaDetails.java      |    5 +-
 .../wicket/markup/html/form/AjaxDownload.java   |   27 +-
 .../markup/html/form/BinaryFieldPanel.java      |   19 +-
 .../client/console/wizards/any/PlainAttrs.java  |   16 +-
 client/console/src/main/resources/MIMETypes     |  671 ---------
 .../console/src/main/resources/MIMETypes.json   | 1285 ++++++++++++++++++
 7 files changed, 1360 insertions(+), 701 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/0b5da386/client/console/src/main/java/org/apache/syncope/client/console/init/MIMETypesLoader.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/init/MIMETypesLoader.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/init/MIMETypesLoader.java
index db47844..c48bbc6 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/init/MIMETypesLoader.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/init/MIMETypesLoader.java
@@ -18,13 +18,13 @@
  */
 package org.apache.syncope.client.console.init;
 
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
+import java.util.HashMap;
 import java.util.List;
-import java.util.Set;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
+import java.util.Map;
 import org.apache.wicket.util.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,21 +33,23 @@ public class MIMETypesLoader {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(MIMETypesLoader.class);
 
-    private List<String> mimeTypes;
+    private Map<String, String> mimeTypes;
+
+    private static final ObjectMapper MAPPER = new ObjectMapper();
 
     public void load() {
-        if (CollectionUtils.isEmpty(mimeTypes)) {
-            Set<String> mediaTypes = new HashSet<>();
-            this.mimeTypes = new ArrayList<>();
+        if (mimeTypes == null || mimeTypes.isEmpty()) {
+            mimeTypes = new HashMap<>();
             try {
-                final String mimeTypesFile = 
IOUtils.toString(getClass().getResourceAsStream("/MIMETypes"));
-                for (String fileRow : mimeTypesFile.split("\n")) {
-                    if (StringUtils.isNotBlank(fileRow) && 
!fileRow.startsWith("#")) {
-                        mediaTypes.add(fileRow);
+                JsonNode jsonNode = MAPPER.readTree(
+                        
IOUtils.toString(getClass().getResourceAsStream("/MIMETypes.json")));
+                for (JsonNode node : jsonNode) {
+                    JsonNode type = node.path("name");
+                    JsonNode ext = node.path("extension");
+                    if (!type.isMissingNode()) {
+                        mimeTypes.put(type.asText(), !ext.isMissingNode() ? 
ext.asText() : "");
                     }
                 }
-                this.mimeTypes.addAll(mediaTypes);
-                Collections.sort(this.mimeTypes);
             } catch (Exception e) {
                 LOG.error("Error reading file MIMETypes from resources", e);
             }
@@ -56,6 +58,12 @@ public class MIMETypesLoader {
 
     public List<String> getMimeTypes() {
         LOG.debug("Returning loaded MIME types list {}", mimeTypes);
-        return mimeTypes;
+        List<String> list = new ArrayList<>(mimeTypes.keySet());
+        Collections.sort(list);
+        return list;
+    }
+
+    public String getExtensionByMimeType(final String mimeType) {
+        return mimeTypes.get(mimeType);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0b5da386/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
index d67ae8f..7d9d18c 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
@@ -25,6 +25,7 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleApplication;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.PropertyList;
@@ -53,7 +54,8 @@ public class PlainSchemaDetails extends 
AbstractSchemaDetailsPanel {
 
     private static final long serialVersionUID = 5378100729213456451L;
 
-    private static final MIMETypesLoader MIME_TYPES_INITIALIZER = new 
MIMETypesLoader();
+    private static final MIMETypesLoader MIME_TYPES_INITIALIZER = 
(MIMETypesLoader) SyncopeConsoleApplication.get().
+            getServletContext().getAttribute("MIMETYPES_LOADER");
 
     private final MultiFieldPanel<String> enumerationValues;
 
@@ -391,7 +393,6 @@ public class PlainSchemaDetails extends 
AbstractSchemaDetailsPanel {
             cipherAlgorithm.setModelObject(null);
 
             binaryParams.setVisible(true);
-            MIME_TYPES_INITIALIZER.load();
             mimeType.setChoices(MIME_TYPES_INITIALIZER.getMimeTypes());
         } else {
             conversionParams.setVisible(false);

http://git-wip-us.apache.org/repos/asf/syncope/blob/0b5da386/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDownload.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDownload.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDownload.java
index 20a1d25..57a9b59 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDownload.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDownload.java
@@ -18,7 +18,11 @@
  */
 package org.apache.syncope.client.console.wicket.markup.html.form;
 
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleApplication;
 import org.apache.syncope.client.console.commons.HttpResourceStream;
+import org.apache.syncope.client.console.init.MIMETypesLoader;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
@@ -30,6 +34,13 @@ public abstract class AjaxDownload extends 
AbstractAjaxBehavior {
 
     private final String name;
 
+    private static final MIMETypesLoader MIME_TYPES_INITIALIZER = 
(MIMETypesLoader) SyncopeConsoleApplication.get().
+            getServletContext().getAttribute("MIMETYPES_LOADER");
+
+    private String fileKey;
+
+    private String mimeType;
+
     private final boolean addAntiCache;
 
     public AjaxDownload(final String name, final boolean addAntiCache) {
@@ -38,6 +49,12 @@ public abstract class AjaxDownload extends 
AbstractAjaxBehavior {
         this.addAntiCache = addAntiCache;
     }
 
+    public AjaxDownload(final String name, final String fileKey, final String 
mimeType, final boolean addAntiCache) {
+        this(name, addAntiCache);
+        this.fileKey = fileKey;
+        this.mimeType = mimeType;
+    }
+
     public void initiate(final AjaxRequestTarget target) {
 
         String url = getCallbackUrl().toString();
@@ -52,7 +69,15 @@ public abstract class AjaxDownload extends 
AbstractAjaxBehavior {
     public void onRequest() {
         HttpResourceStream stream = getResourceStream();
         ResourceStreamRequestHandler handler = new 
ResourceStreamRequestHandler(stream);
-        handler.setFileName(stream.getFilename() == null ? name : 
stream.getFilename());
+        String key = StringUtils.isNotBlank(fileKey) ? fileKey + "_" : "";
+        String ext = "";
+        if (StringUtils.isNotBlank(mimeType)) {
+            String extByMimeType = 
MIME_TYPES_INITIALIZER.getExtensionByMimeType(mimeType);
+            ext = !extByMimeType.isEmpty() ? ("." + extByMimeType) : ".bin";
+        }
+        String fileName = key + (stream.getFilename() == null ? name : 
stream.getFilename()) + ext;
+
+        handler.setFileName(fileName);
         handler.setContentDisposition(ContentDisposition.ATTACHMENT);
         
getComponent().getRequestCycle().scheduleRequestHandlerAfterCurrent(handler);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0b5da386/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
index eae8a2d..5edea5b 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
@@ -80,11 +80,10 @@ public class BinaryFieldPanel extends FieldPanel<String> {
 
     private final AbstractBinaryPreviewer previewer;
 
-    private final Label previewLabel;
-
     private final IndicatingAjaxLink<Void> resetLink;
 
-    public BinaryFieldPanel(final String id, final String name, final 
IModel<String> model, final String mimeType) {
+    public BinaryFieldPanel(final String id, final String name, final 
IModel<String> model, final String mimeType,
+            final String fileKey) {
         super(id, name, model);
         this.mimeType = mimeType;
 
@@ -129,10 +128,9 @@ public class BinaryFieldPanel extends FieldPanel<String> {
         field = new TextField<>("textField", model);
         add(field.setLabel(new Model<>(name)).setOutputMarkupId(true));
 
-        previewLabel = new Label("preview", StringUtils.isBlank(mimeType) ? 
StringUtils.EMPTY : "(" + mimeType + ")");
-        uploadForm.add(previewLabel);
+        uploadForm.add(new Label("preview", StringUtils.isBlank(mimeType) ? 
StringUtils.EMPTY : "(" + mimeType + ")"));
 
-        fileDownload = new AjaxDownload(name, true) {
+        fileDownload = new AjaxDownload(name, fileKey, mimeType, true) {
 
             private static final long serialVersionUID = 7203445884857810583L;
 
@@ -192,7 +190,7 @@ public class BinaryFieldPanel extends FieldPanel<String> {
                         uploadForm.addOrReplace(fileUpload);
                     }
 
-                    setVisiblePhotoButtons(StringUtils.isNotBlank(uploaded));
+                    setVisibleFileButtons(StringUtils.isNotBlank(uploaded));
                     downloadLink.setEnabled(StringUtils.isNotBlank(uploaded));
 
                     target.add(uploadForm);
@@ -211,7 +209,7 @@ public class BinaryFieldPanel extends FieldPanel<String> {
                 target.add(field);
                 downloadLink.setEnabled(false);
                 container.addOrReplace(emptyFragment);
-                setVisiblePhotoButtons(false);
+                setVisibleFileButtons(false);
                 target.add(uploadForm);
             }
 
@@ -236,8 +234,7 @@ public class BinaryFieldPanel extends FieldPanel<String> {
         uploadForm.addOrReplace(container);
     }
 
-    private void setVisiblePhotoButtons(final boolean visible) {
-        previewLabel.setVisible(visible);
+    private void setVisibleFileButtons(final boolean visible) {
         resetLink.setVisible(visible);
         downloadLink.setVisible(visible);
     }
@@ -266,7 +263,7 @@ public class BinaryFieldPanel extends FieldPanel<String> {
         }
 
         downloadLink.setEnabled(StringUtils.isNotBlank(modelObj));
-        setVisiblePhotoButtons(StringUtils.isNotBlank(modelObj));
+        setVisibleFileButtons(StringUtils.isNotBlank(modelObj));
         return this;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/0b5da386/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
----------------------------------------------------------------------
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
index 250930a..9348589 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
@@ -43,10 +43,13 @@ import 
org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel
 import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AttrTO;
+import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
@@ -71,6 +74,8 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
 
     protected final AnyTO previousObject;
 
+    protected String fileKey = "";
+
     public <T extends AnyTO> PlainAttrs(
             final AnyWrapper<T> modelObject,
             final Form<?> form,
@@ -81,6 +86,14 @@ public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> 
{
         super(modelObject, anyTypeClasses, whichPlainAttrs);
         this.mode = mode;
 
+        if (modelObject.getInnerObject() instanceof UserTO) {
+            fileKey = 
UserTO.class.cast(modelObject.getInnerObject()).getUsername();
+        } else if (modelObject.getInnerObject() instanceof GroupTO) {
+            fileKey = 
GroupTO.class.cast(modelObject.getInnerObject()).getName();
+        } else if (modelObject.getInnerObject() instanceof AnyObjectTO) {
+            fileKey = 
AnyObjectTO.class.cast(modelObject.getInnerObject()).getName();
+        }
+
         if (modelObject instanceof UserWrapper) {
             previousObject = 
UserWrapper.class.cast(modelObject).getPreviousUserTO();
         } else {
@@ -298,7 +311,8 @@ public class PlainAttrs extends 
AbstractAttrs<PlainSchemaTO> {
                 break;
 
             case Binary:
-                panel = new BinaryFieldPanel("panel", schemaTO.getKey(), new 
Model<String>(), schemaTO.getMimeType());
+                panel = new BinaryFieldPanel("panel", schemaTO.getKey(), new 
Model<String>(), schemaTO.getMimeType(),
+                        fileKey);
 
                 if (required) {
                     panel.addRequiredLabel();

http://git-wip-us.apache.org/repos/asf/syncope/blob/0b5da386/client/console/src/main/resources/MIMETypes
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/MIMETypes 
b/client/console/src/main/resources/MIMETypes
deleted file mode 100644
index 9571823..0000000
--- a/client/console/src/main/resources/MIMETypes
+++ /dev/null
@@ -1,671 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-x-world/x-3dmf
-x-world/x-3dmf
-application/octet-stream
-application/x-authorware-bin
-application/x-authorware-map
-application/x-authorware-seg
-text/vnd.abc
-text/html
-video/animaflex
-application/postscript
-audio/aiff
-audio/x-aiff
-audio/aiff
-audio/x-aiff
-audio/aiff
-audio/x-aiff
-application/x-aim
-text/x-audiosoft-intra
-application/x-navi-animation
-application/x-nokia-9000-communicator-add-on-software
-application/mime
-application/octet-stream
-application/arj
-application/octet-stream
-image/x-jg
-video/x-ms-asf
-text/x-asm
-text/asp
-application/x-mplayer2
-video/x-ms-asf
-video/x-ms-asf-plugin
-audio/basic
-audio/x-au
-application/x-troff-msvideo
-video/avi
-video/msvideo
-video/x-msvideo
-video/avs-video
-application/x-bcpio
-application/mac-binary
-application/macbinary
-application/octet-stream
-application/x-binary
-application/x-macbinary
-image/bmp
-image/bmp
-image/x-windows-bmp
-application/book
-application/book
-application/x-bzip2
-application/x-bsh
-application/x-bzip
-application/x-bzip2
-text/plain
-text/x-c
-text/plain
-application/vnd.ms-pki.seccat
-text/plain
-text/x-c
-application/clariscad
-application/x-cocoa
-application/cdf
-application/x-cdf
-application/x-netcdf
-application/pkix-cert
-application/x-x509-ca-cert
-application/x-chat
-application/x-chat
-application/java
-application/java-byte-code
-application/x-java-class
-application/octet-stream
-text/plain
-text/plain
-application/x-cpio
-text/x-c
-application/mac-compactpro
-application/x-compactpro
-application/x-cpt
-application/pkcs-crl
-application/pkix-crl
-application/pkix-cert
-application/x-x509-ca-cert
-application/x-x509-user-cert
-application/x-csh
-text/x-script.csh
-application/x-pointplus
-text/css
-text/plain
-application/x-director
-application/x-deepv
-text/plain
-application/x-x509-ca-cert
-video/x-dv
-application/x-director
-video/dl
-video/x-dl
-application/msword
-application/msword
-application/commonground
-application/drafting
-application/octet-stream
-video/x-dv
-application/x-dvi
-drawing/x-dwf (old)
-model/vnd.dwf
-application/acad
-image/vnd.dwg
-image/x-dwg
-application/dxf
-image/vnd.dwg
-image/x-dwg
-application/x-director
-text/x-script.elisp
-application/x-bytecode.elisp (compiled elisp)
-application/x-elc
-application/x-envoy
-application/postscript
-application/x-esrehber
-text/x-setext
-application/envoy
-application/x-envoy
-application/octet-stream
-text/plain
-text/x-fortran
-text/x-fortran
-text/plain
-text/x-fortran
-application/vnd.fdf
-application/fractals
-image/fif
-video/fli
-video/x-fli
-image/florian
-text/vnd.fmi.flexstor
-video/x-atomic3d-feature
-text/plain
-text/x-fortran
-image/vnd.fpx
-image/vnd.net-fpx
-application/freeloader
-audio/make
-text/plain
-image/g3fax
-image/gif
-video/gl
-video/x-gl
-audio/x-gsm
-audio/x-gsm
-application/x-gsp
-application/x-gss
-application/x-gtar
-application/x-compressed
-application/x-gzip
-application/x-gzip
-multipart/x-gzip
-text/plain
-text/x-h
-application/x-hdf
-application/x-helpfile
-application/vnd.hp-hpgl
-text/plain
-text/x-h
-text/x-script
-application/hlp
-application/x-helpfile
-application/x-winhelp
-application/vnd.hp-hpgl
-application/vnd.hp-hpgl
-application/binhex
-application/binhex4
-application/mac-binhex
-application/mac-binhex40
-application/x-binhex40
-application/x-mac-binhex40
-application/hta
-text/x-component
-text/html
-text/html
-text/html
-text/webviewhtml
-text/html
-x-conference/x-cooltalk
-image/x-icon
-text/plain
-image/ief
-image/ief
-application/iges
-model/iges
-application/iges
-model/iges
-application/x-ima
-application/x-httpd-imap
-application/inf
-application/x-internett-signup
-application/x-ip2
-video/x-isvideo
-audio/it
-application/x-inventor
-i-world/i-vrml
-application/x-livescreen
-audio/x-jam
-text/plain
-text/x-java-source
-text/plain
-text/x-java-source
-application/x-java-commerce
-image/jpeg
-image/pjpeg
-image/jpeg
-image/jpeg
-image/pjpeg
-image/jpeg
-image/pjpeg
-image/jpeg
-image/pjpeg
-image/x-jps
-application/x-javascript
-application/javascript
-application/ecmascript
-text/javascript
-text/ecmascript
-image/jutvision
-audio/midi
-music/x-karaoke
-application/x-ksh
-text/x-script.ksh
-audio/nspaudio
-audio/x-nspaudio
-audio/x-liveaudio
-application/x-latex
-application/lha
-application/octet-stream
-application/x-lha
-application/octet-stream
-text/plain
-audio/nspaudio
-audio/x-nspaudio
-text/plain
-application/x-lisp
-text/x-script.lisp
-text/plain
-text/x-la-asf
-application/x-latex
-application/octet-stream
-application/x-lzh
-application/lzx
-application/octet-stream
-application/x-lzx
-text/plain
-text/x-m
-video/mpeg
-audio/mpeg
-video/mpeg
-audio/x-mpequrl
-application/x-troff-man
-application/x-navimap
-text/plain
-application/mbedlet
-application/x-magic-cap-package-1.0
-application/mcad
-application/x-mathcad
-image/vasa
-text/mcf
-application/netmc
-application/x-troff-me
-message/rfc822
-message/rfc822
-application/x-midi
-audio/midi
-audio/x-mid
-audio/x-midi
-music/crescendo
-x-music/x-midi
-application/x-midi
-audio/midi
-audio/x-mid
-audio/x-midi
-music/crescendo
-x-music/x-midi
-application/x-frame
-application/x-mif
-message/rfc822
-www/mime
-audio/x-vnd.audioexplosion.mjuicemediafile
-video/x-motion-jpeg
-application/base64
-application/x-meme
-application/base64
-audio/mod
-audio/x-mod
-video/quicktime
-video/quicktime
-video/x-sgi-movie
-audio/mpeg
-audio/x-mpeg
-video/mpeg
-video/x-mpeg
-video/x-mpeq2a
-audio/mpeg3
-audio/x-mpeg-3
-video/mpeg
-video/x-mpeg
-audio/mpeg
-video/mpeg
-application/x-project
-video/mpeg
-video/mpeg
-audio/mpeg
-video/mpeg
-audio/mpeg
-application/vnd.ms-project
-application/x-project
-application/x-project
-application/x-project
-application/marc
-application/x-troff-ms
-video/x-sgi-movie
-audio/make
-application/x-vnd.audioexplosion.mzz
-image/naplps
-image/naplps
-application/x-netcdf
-application/vnd.nokia.configuration-message
-image/x-niff
-image/x-niff
-application/x-mix-transfer
-application/x-conference
-application/x-navidoc
-application/octet-stream
-application/oda
-application/x-omc
-application/x-omcdatamaker
-application/x-omcregerator
-text/x-pascal
-application/pkcs10
-application/x-pkcs10
-application/pkcs-12
-application/x-pkcs12
-application/x-pkcs7-signature
-application/pkcs7-mime
-application/x-pkcs7-mime
-application/pkcs7-mime
-application/x-pkcs7-mime
-application/x-pkcs7-certreqresp
-application/pkcs7-signature
-application/pro_eng
-text/pascal
-image/x-portable-bitmap
-application/vnd.hp-pcl
-application/x-pcl
-image/x-pict
-image/x-pcx
-chemical/x-pdb
-application/pdf
-audio/make
-audio/make.my.funk
-image/x-portable-graymap
-image/x-portable-greymap
-image/pict
-image/pict
-application/x-newton-compatible-pkg
-application/vnd.ms-pki.pko
-text/plain
-text/x-script.perl
-application/x-pixclscript
-image/x-xpixmap
-text/x-script.perl-module
-application/x-pagemaker
-application/x-pagemaker
-image/png
-application/x-portable-anymap
-image/x-portable-anymap
-application/mspowerpoint
-application/vnd.ms-powerpoint
-model/x-pov
-application/vnd.ms-powerpoint
-image/x-portable-pixmap
-application/mspowerpoint
-application/vnd.ms-powerpoint
-application/mspowerpoint
-application/powerpoint
-application/vnd.ms-powerpoint
-application/x-mspowerpoint
-application/mspowerpoint
-application/x-freelance
-application/pro_eng
-application/postscript
-application/octet-stream
-paleovu/x-pv
-application/vnd.ms-powerpoint
-text/x-script.phyton
-application/x-bytecode.python
-audio/vnd.qcelp
-x-world/x-3dmf
-x-world/x-3dmf
-image/x-quicktime
-video/quicktime
-video/x-qtc
-image/x-quicktime
-image/x-quicktime
-audio/x-pn-realaudio
-audio/x-pn-realaudio-plugin
-audio/x-realaudio
-audio/x-pn-realaudio
-application/x-cmu-raster
-image/cmu-raster
-image/x-cmu-raster
-image/cmu-raster
-text/x-script.rexx
-image/vnd.rn-realflash
-image/x-rgb
-application/vnd.rn-realmedia
-audio/x-pn-realaudio
-audio/mid
-audio/x-pn-realaudio
-audio/x-pn-realaudio
-audio/x-pn-realaudio-plugin
-application/ringing-tones
-application/vnd.nokia.ringing-tone
-application/vnd.rn-realplayer
-application/x-troff
-image/vnd.rn-realpix
-audio/x-pn-realaudio-plugin
-text/richtext
-text/vnd.rn-realtext
-application/rtf
-application/x-rtf
-text/richtext
-application/rtf
-text/richtext
-video/vnd.rn-realvideo
-text/x-asm
-audio/s3m
-application/octet-stream
-application/x-tbook
-application/x-lotusscreencam
-text/x-script.guile
-text/x-script.scheme
-video/x-scm
-text/plain
-application/sdp
-application/x-sdp
-application/sounder
-application/sea
-application/x-sea
-application/set
-text/sgml
-text/x-sgml
-text/sgml
-text/x-sgml
-application/x-bsh
-application/x-sh
-application/x-shar
-text/x-script.sh
-application/x-bsh
-application/x-shar
-text/html
-text/x-server-parsed-html
-audio/x-psid
-application/x-sit
-application/x-stuffit
-application/x-koan
-application/x-koan
-application/x-koan
-application/x-koan
-application/x-seelogo
-application/smil
-application/smil
-audio/basic
-audio/x-adpcm
-application/solids
-application/x-pkcs7-certificates
-text/x-speech
-application/futuresplash
-application/x-sprite
-application/x-sprite
-application/x-wais-source
-text/x-server-parsed-html
-application/streamingmedia
-application/vnd.ms-pki.certstore
-application/step
-application/sla
-application/vnd.ms-pki.stl
-application/x-navistyle
-application/step
-application/x-sv4cpio
-application/x-sv4crc
-image/vnd.dwg
-image/x-dwg
-application/x-world
-x-world/x-svr
-application/x-shockwave-flash
-application/x-troff
-text/x-speech
-application/x-tar
-application/toolbook
-application/x-tbook
-application/x-tcl
-text/x-script.tcl
-text/x-script.tcsh
-application/x-tex
-application/x-texinfo
-application/x-texinfo
-application/plain
-text/plain
-application/gnutar
-application/x-compressed
-image/tiff
-image/x-tiff
-image/tiff
-image/x-tiff
-application/x-troff
-audio/tsp-audio
-application/dsptype
-audio/tsplayer
-text/tab-separated-values
-image/florian
-text/plain
-text/x-uil
-text/uri-list
-text/uri-list
-application/i-deas
-text/uri-list
-text/uri-list
-application/x-ustar
-multipart/x-ustar
-application/octet-stream
-text/x-uuencode
-text/x-uuencode
-application/x-cdlink
-text/x-vcalendar
-application/vda
-video/vdo
-application/groupwise
-video/vivo
-video/vnd.vivo
-video/vivo
-video/vnd.vivo
-application/vocaltec-media-desc
-application/vocaltec-media-file
-audio/voc
-audio/x-voc
-video/vosaic
-audio/voxware
-audio/x-twinvq-plugin
-audio/x-twinvq
-audio/x-twinvq-plugin
-application/x-vrml
-model/vrml
-x-world/x-vrml
-x-world/x-vrt
-application/x-visio
-application/x-visio
-application/x-visio
-application/wordperfect6.0
-application/wordperfect6.1
-application/msword
-audio/wav
-audio/x-wav
-application/x-qpro
-image/vnd.wap.wbmp
-application/vnd.xara
-application/msword
-application/x-123
-windows/metafile
-text/vnd.wap.wml
-application/vnd.wap.wmlc
-text/vnd.wap.wmlscript
-application/vnd.wap.wmlscriptc
-application/msword
-application/wordperfect
-application/wordperfect
-application/wordperfect6.0
-application/wordperfect
-application/wordperfect
-application/x-wpwin
-application/x-lotus
-application/mswrite
-application/x-wri
-application/x-world
-model/vrml
-x-world/x-vrml
-model/vrml
-x-world/x-vrml
-text/scriplet
-application/x-wais-source
-application/x-wintalk
-image/x-xbitmap
-image/x-xbm
-image/xbm
-video/x-amt-demorun
-xgl/drawing
-image/vnd.xiff
-application/excel
-application/excel
-application/x-excel
-application/x-msexcel
-application/excel
-application/vnd.ms-excel
-application/x-excel
-application/excel
-application/vnd.ms-excel
-application/x-excel
-application/excel
-application/x-excel
-application/excel
-application/x-excel
-application/excel
-application/vnd.ms-excel
-application/x-excel
-application/excel
-application/vnd.ms-excel
-application/x-excel
-application/excel
-application/vnd.ms-excel
-application/x-excel
-application/x-msexcel
-application/excel
-application/x-excel
-application/excel
-application/x-excel
-application/excel
-application/vnd.ms-excel
-application/x-excel
-application/x-msexcel
-audio/xm
-application/xml
-text/xml
-xgl/movie
-application/x-vnd.ls-xpix
-image/x-xpixmap
-image/xpm
-image/png
-video/x-amt-showrun
-image/x-xwd
-image/x-xwindowdump
-chemical/x-pdb
-application/x-compress
-application/x-compressed
-application/x-compressed
-application/x-zip-compressed
-application/zip
-multipart/x-zip
-application/octet-stream
-text/x-script.zsh
-application/vnd.oasis.opendocument.text
-application/vnd.oasis.opendocument.graphics
-application/vnd.oasis.opendocument.presentation
-application/vnd.oasis.opendocument.spreadsheet
-application/vnd.oasis.opendocument.chart
-application/vnd.oasis.opendocument.formula
-application/vnd.oasis.opendocument.database
-application/vnd.oasis.opendocument.image
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/0b5da386/client/console/src/main/resources/MIMETypes.json
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/MIMETypes.json 
b/client/console/src/main/resources/MIMETypes.json
new file mode 100644
index 0000000..3c6fa8a
--- /dev/null
+++ b/client/console/src/main/resources/MIMETypes.json
@@ -0,0 +1,1285 @@
+[
+  {
+    "name": "application/acad"
+  },
+  {
+    "name": "application/arj"
+  },
+  {
+    "name": "application/base64"
+  },
+  {
+    "name": "application/binhex"
+  },
+  {
+    "name": "application/binhex4"
+  },
+  {
+    "name": "application/book"
+  },
+  {
+    "name": "application/cdf"
+  },
+  {
+    "name": "application/clariscad"
+  },
+  {
+    "name": "application/commonground"
+  },
+  {
+    "name": "application/drafting"
+  },
+  {
+    "name": "application/dsptype"
+  },
+  {
+    "name": "application/dxf"
+  },
+  {
+    "name": "application/ecmascript"
+  },
+  {
+    "name": "application/envoy"
+  },
+  {
+    "name": "application/excel"
+  },
+  {
+    "name": "application/fractals"
+  },
+  {
+    "name": "application/freeloader"
+  },
+  {
+    "name": "application/futuresplash"
+  },
+  {
+    "name": "application/gnutar"
+  },
+  {
+    "name": "application/groupwise"
+  },
+  {
+    "name": "application/hlp"
+  },
+  {
+    "name": "application/hta"
+  },
+  {
+    "name": "application/i-deas"
+  },
+  {
+    "name": "application/iges"
+  },
+  {
+    "name": "application/inf"
+  },
+  {
+    "name": "application/java"
+  },
+  {
+    "name": "application/java-byte-code"
+  },
+  {
+    "name": "application/javascript"
+  },
+  {
+    "name": "application/lha"
+  },
+  {
+    "name": "application/lzx"
+  },
+  {
+    "name": "application/macbinary"
+  },
+  {
+    "name": "application/mac-binary"
+  },
+  {
+    "name": "application/mac-binhex"
+  },
+  {
+    "name": "application/mac-binhex40"
+  },
+  {
+    "name": "application/mac-compactpro"
+  },
+  {
+    "name": "application/marc"
+  },
+  {
+    "name": "application/mbedlet"
+  },
+  {
+    "name": "application/mcad"
+  },
+  {
+    "name": "application/mime"
+  },
+  {
+    "name": "application/mspowerpoint"
+  },
+  {
+    "name": "application/msword"
+  },
+  {
+    "name": "application/mswrite"
+  },
+  {
+    "name": "application/netmc"
+  },
+  {
+    "name": "application/octet-stream"
+  },
+  {
+    "name": "application/oda"
+  },
+  {
+    "name": "application/pdf"
+  },
+  {
+    "name": "application/pkcs10"
+  },
+  {
+    "name": "application/pkcs-12"
+  },
+  {
+    "name": "application/pkcs7-mime"
+  },
+  {
+    "name": "application/pkcs7-signature"
+  },
+  {
+    "name": "application/pkcs-crl"
+  },
+  {
+    "name": "application/pkix-cert"
+  },
+  {
+    "name": "application/pkix-crl"
+  },
+  {
+    "name": "application/plain"
+  },
+  {
+    "name": "application/postscript"
+  },
+  {
+    "name": "application/powerpoint"
+  },
+  {
+    "name": "application/pro_eng"
+  },
+  {
+    "name": "application/ringing-tones"
+  },
+  {
+    "name": "application/rtf"
+  },
+  {
+    "name": "application/sdp"
+  },
+  {
+    "name": "application/sea"
+  },
+  {
+    "name": "application/set"
+  },
+  {
+    "name": "application/sla"
+  },
+  {
+    "name": "application/smil"
+  },
+  {
+    "name": "application/solids"
+  },
+  {
+    "name": "application/sounder"
+  },
+  {
+    "name": "application/step"
+  },
+  {
+    "name": "application/streamingmedia"
+  },
+  {
+    "name": "application/toolbook"
+  },
+  {
+    "name": "application/vda"
+  },
+  {
+    "name": "application/vnd.fdf"
+  },
+  {
+    "name": "application/vnd.hp-hpgl"
+  },
+  {
+    "name": "application/vnd.hp-pcl"
+  },
+  {
+    "name": "application/vnd.ms-excel"
+  },
+  {
+    "name": "application/vnd.ms-pki.certstore"
+  },
+  {
+    "name": "application/vnd.ms-pki.pko"
+  },
+  {
+    "name": "application/vnd.ms-pki.seccat"
+  },
+  {
+    "name": "application/vnd.ms-pki.stl"
+  },
+  {
+    "name": "application/vnd.ms-powerpoint"
+  },
+  {
+    "name": "application/vnd.ms-project"
+  },
+  {
+    "name": "application/vnd.nokia.configuration-message"
+  },
+  {
+    "name": "application/vnd.nokia.ringing-tone"
+  },
+  {
+    "name": "application/vnd.oasis.opendocument.chart"
+  },
+  {
+    "name": "application/vnd.oasis.opendocument.database"
+  },
+  {
+    "name": "application/vnd.oasis.opendocument.formula"
+  },
+  {
+    "name": "application/vnd.oasis.opendocument.graphics"
+  },
+  {
+    "name": "application/vnd.oasis.opendocument.image"
+  },
+  {
+    "name": "application/vnd.oasis.opendocument.presentation"
+  },
+  {
+    "name": "application/vnd.oasis.opendocument.spreadsheet"
+  },
+  {
+    "name": "application/vnd.oasis.opendocument.text"
+  },
+  {
+    "name": "application/vnd.rn-realmedia"
+  },
+  {
+    "name": "application/vnd.rn-realplayer"
+  },
+  {
+    "name": "application/vnd.wap.wmlc"
+  },
+  {
+    "name": "application/vnd.wap.wmlscriptc"
+  },
+  {
+    "name": "application/vnd.xara"
+  },
+  {
+    "name": "application/vocaltec-media-desc"
+  },
+  {
+    "name": "application/vocaltec-media-file"
+  },
+  {
+    "name": "application/wordperfect"
+  },
+  {
+    "name": "application/wordperfect6.0"
+  },
+  {
+    "name": "application/wordperfect6.1"
+  },
+  {
+    "name": "application/x-123"
+  },
+  {
+    "name": "application/x-aim"
+  },
+  {
+    "name": "application/x-authorware-bin"
+  },
+  {
+    "name": "application/x-authorware-map"
+  },
+  {
+    "name": "application/x-authorware-seg"
+  },
+  {
+    "name": "application/x-bcpio"
+  },
+  {
+    "name": "application/x-binary"
+  },
+  {
+    "name": "application/x-binhex40"
+  },
+  {
+    "name": "application/x-bsh"
+  },
+  {
+    "name": "application/x-bytecode.elisp (compiled elisp)"
+  },
+  {
+    "name": "application/x-bytecode.python"
+  },
+  {
+    "name": "application/x-bzip"
+  },
+  {
+    "name": "application/x-bzip2"
+  },
+  {
+    "name": "application/x-cdf"
+  },
+  {
+    "name": "application/x-cdlink"
+  },
+  {
+    "name": "application/x-chat"
+  },
+  {
+    "name": "application/x-cmu-raster"
+  },
+  {
+    "name": "application/x-cocoa"
+  },
+  {
+    "name": "application/x-compactpro"
+  },
+  {
+    "name": "application/x-compress"
+  },
+  {
+    "name": "application/x-compressed"
+  },
+  {
+    "name": "application/x-conference"
+  },
+  {
+    "name": "application/x-cpio"
+  },
+  {
+    "name": "application/x-cpt"
+  },
+  {
+    "name": "application/x-csh"
+  },
+  {
+    "name": "application/x-deepv"
+  },
+  {
+    "name": "application/x-director"
+  },
+  {
+    "name": "application/x-dvi"
+  },
+  {
+    "name": "application/x-elc"
+  },
+  {
+    "name": "application/x-envoy"
+  },
+  {
+    "name": "application/x-esrehber"
+  },
+  {
+    "name": "application/x-excel"
+  },
+  {
+    "name": "application/x-frame"
+  },
+  {
+    "name": "application/x-freelance"
+  },
+  {
+    "name": "application/x-gsp"
+  },
+  {
+    "name": "application/x-gss"
+  },
+  {
+    "name": "application/x-gtar"
+  },
+  {
+    "name": "application/x-gzip"
+  },
+  {
+    "name": "application/x-hdf"
+  },
+  {
+    "name": "application/x-helpfile"
+  },
+  {
+    "name": "application/x-httpd-imap"
+  },
+  {
+    "name": "application/x-ima"
+  },
+  {
+    "name": "application/x-internett-signup"
+  },
+  {
+    "name": "application/x-inventor"
+  },
+  {
+    "name": "application/x-ip2"
+  },
+  {
+    "name": "application/x-java-class"
+  },
+  {
+    "name": "application/x-java-commerce"
+  },
+  {
+    "name": "application/x-javascript"
+  },
+  {
+    "name": "application/x-koan"
+  },
+  {
+    "name": "application/x-ksh"
+  },
+  {
+    "name": "application/x-latex"
+  },
+  {
+    "name": "application/x-lha"
+  },
+  {
+    "name": "application/x-lisp"
+  },
+  {
+    "name": "application/x-livescreen"
+  },
+  {
+    "name": "application/x-lotus"
+  },
+  {
+    "name": "application/x-lotusscreencam"
+  },
+  {
+    "name": "application/x-lzh"
+  },
+  {
+    "name": "application/x-lzx"
+  },
+  {
+    "name": "application/x-macbinary"
+  },
+  {
+    "name": "application/x-mac-binhex40"
+  },
+  {
+    "name": "application/x-magic-cap-package-1.0"
+  },
+  {
+    "name": "application/x-mathcad"
+  },
+  {
+    "name": "application/x-meme"
+  },
+  {
+    "name": "application/x-midi"
+  },
+  {
+    "name": "application/x-mif"
+  },
+  {
+    "name": "application/x-mix-transfer"
+  },
+  {
+    "name": "application/xml"
+  },
+  {
+    "name": "application/x-mplayer2"
+  },
+  {
+    "name": "application/x-msexcel"
+  },
+  {
+    "name": "application/x-mspowerpoint"
+  },
+  {
+    "name": "application/x-navi-animation"
+  },
+  {
+    "name": "application/x-navidoc"
+  },
+  {
+    "name": "application/x-navimap"
+  },
+  {
+    "name": "application/x-navistyle"
+  },
+  {
+    "name": "application/x-netcdf"
+  },
+  {
+    "name": "application/x-newton-compatible-pkg"
+  },
+  {
+    "name": "application/x-nokia-9000-communicator-add-on-software"
+  },
+  {
+    "name": "application/x-omc"
+  },
+  {
+    "name": "application/x-omcdatamaker"
+  },
+  {
+    "name": "application/x-omcregerator"
+  },
+  {
+    "name": "application/x-pagemaker"
+  },
+  {
+    "name": "application/x-pcl"
+  },
+  {
+    "name": "application/x-pixclscript"
+  },
+  {
+    "name": "application/x-pkcs10"
+  },
+  {
+    "name": "application/x-pkcs12"
+  },
+  {
+    "name": "application/x-pkcs7-certificates"
+  },
+  {
+    "name": "application/x-pkcs7-certreqresp"
+  },
+  {
+    "name": "application/x-pkcs7-mime"
+  },
+  {
+    "name": "application/x-pkcs7-signature"
+  },
+  {
+    "name": "application/x-pointplus"
+  },
+  {
+    "name": "application/x-portable-anymap"
+  },
+  {
+    "name": "application/x-project"
+  },
+  {
+    "name": "application/x-qpro"
+  },
+  {
+    "name": "application/x-rtf"
+  },
+  {
+    "name": "application/x-sdp"
+  },
+  {
+    "name": "application/x-sea"
+  },
+  {
+    "name": "application/x-seelogo"
+  },
+  {
+    "name": "application/x-sh"
+  },
+  {
+    "name": "application/x-shar"
+  },
+  {
+    "name": "application/x-shockwave-flash"
+  },
+  {
+    "name": "application/x-sit"
+  },
+  {
+    "name": "application/x-sprite"
+  },
+  {
+    "name": "application/x-stuffit"
+  },
+  {
+    "name": "application/x-sv4cpio"
+  },
+  {
+    "name": "application/x-sv4crc"
+  },
+  {
+    "name": "application/x-tar"
+  },
+  {
+    "name": "application/x-tbook"
+  },
+  {
+    "name": "application/x-tcl"
+  },
+  {
+    "name": "application/x-tex"
+  },
+  {
+    "name": "application/x-texinfo"
+  },
+  {
+    "name": "application/x-troff"
+  },
+  {
+    "name": "application/x-troff-man"
+  },
+  {
+    "name": "application/x-troff-me"
+  },
+  {
+    "name": "application/x-troff-ms"
+  },
+  {
+    "name": "application/x-troff-msvideo"
+  },
+  {
+    "name": "application/x-ustar"
+  },
+  {
+    "name": "application/x-visio"
+  },
+  {
+    "name": "application/x-vnd.audioexplosion.mzz"
+  },
+  {
+    "name": "application/x-vnd.ls-xpix"
+  },
+  {
+    "name": "application/x-vrml"
+  },
+  {
+    "name": "application/x-wais-source"
+  },
+  {
+    "name": "application/x-winhelp"
+  },
+  {
+    "name": "application/x-wintalk"
+  },
+  {
+    "name": "application/x-world"
+  },
+  {
+    "name": "application/x-wpwin"
+  },
+  {
+    "name": "application/x-wri"
+  },
+  {
+    "name": "application/x-x509-ca-cert"
+  },
+  {
+    "name": "application/x-x509-user-cert"
+  },
+  {
+    "name": "application/x-zip-compressed"
+  },
+  {
+    "name": "application/zip"
+  },
+  {
+    "name": "audio/aiff"
+  },
+  {
+    "name": "audio/basic"
+  },
+  {
+    "name": "audio/it"
+  },
+  {
+    "name": "audio/make"
+  },
+  {
+    "name": "audio/make.my.funk"
+  },
+  {
+    "name": "audio/mid"
+  },
+  {
+    "name": "audio/midi"
+  },
+  {
+    "name": "audio/mod"
+  },
+  {
+    "name": "audio/mpeg"
+  },
+  {
+    "name": "audio/mpeg3"
+  },
+  {
+    "name": "audio/nspaudio"
+  },
+  {
+    "name": "audio/s3m"
+  },
+  {
+    "name": "audio/tsp-audio"
+  },
+  {
+    "name": "audio/tsplayer"
+  },
+  {
+    "name": "audio/vnd.qcelp"
+  },
+  {
+    "name": "audio/voc"
+  },
+  {
+    "name": "audio/voxware"
+  },
+  {
+    "name": "audio/wav"
+  },
+  {
+    "name": "audio/x-adpcm"
+  },
+  {
+    "name": "audio/x-aiff"
+  },
+  {
+    "name": "audio/x-au"
+  },
+  {
+    "name": "audio/x-gsm"
+  },
+  {
+    "name": "audio/x-jam"
+  },
+  {
+    "name": "audio/x-liveaudio"
+  },
+  {
+    "name": "audio/xm"
+  },
+  {
+    "name": "audio/x-mid"
+  },
+  {
+    "name": "audio/x-midi"
+  },
+  {
+    "name": "audio/x-mod"
+  },
+  {
+    "name": "audio/x-mpeg"
+  },
+  {
+    "name": "audio/x-mpeg-3"
+  },
+  {
+    "name": "audio/x-mpequrl"
+  },
+  {
+    "name": "audio/x-nspaudio"
+  },
+  {
+    "name": "audio/x-pn-realaudio"
+  },
+  {
+    "name": "audio/x-pn-realaudio-plugin"
+  },
+  {
+    "name": "audio/x-psid"
+  },
+  {
+    "name": "audio/x-realaudio"
+  },
+  {
+    "name": "audio/x-twinvq"
+  },
+  {
+    "name": "audio/x-twinvq-plugin"
+  },
+  {
+    "name": "audio/x-vnd.audioexplosion.mjuicemediafile"
+  },
+  {
+    "name": "audio/x-voc"
+  },
+  {
+    "name": "audio/x-wav",
+    "extension": "wav"
+  },
+  {
+    "name": "chemical/x-pdb"
+  },
+  {
+    "name": "drawing/x-dwf (old)"
+  },
+  {
+    "name": "image/bmp",
+    "extension": "bmp"
+  },
+  {
+    "name": "image/cmu-raster"
+  },
+  {
+    "name": "image/fif"
+  },
+  {
+    "name": "image/florian"
+  },
+  {
+    "name": "image/g3fax"
+  },
+  {
+    "name": "image/gif",
+    "extension": "gif"
+  },
+  {
+    "name": "image/ief",
+    "extension": "ief"
+  },
+  {
+    "name": "image/jpeg",
+    "extension": "jpeg"
+  },
+  {
+    "name": "image/jutvision"
+  },
+  {
+    "name": "image/naplps"
+  },
+  {
+    "name": "image/pict",
+    "extension": "pict"
+  },
+  {
+    "name": "image/pjpeg",
+    "extension": "jpeg"
+  },
+  {
+    "name": "image/png",
+    "extension": "png"
+  },
+  {
+    "name": "image/tiff",
+    "extension": "tiff"
+  },
+  {
+    "name": "image/vasa"
+  },
+  {
+    "name": "image/vnd.dwg"
+  },
+  {
+    "name": "image/vnd.fpx"
+  },
+  {
+    "name": "image/vnd.net-fpx"
+  },
+  {
+    "name": "image/vnd.rn-realflash"
+  },
+  {
+    "name": "image/vnd.rn-realpix"
+  },
+  {
+    "name": "image/vnd.wap.wbmp"
+  },
+  {
+    "name": "image/vnd.xiff"
+  },
+  {
+    "name": "image/xbm"
+  },
+  {
+    "name": "image/x-cmu-raster"
+  },
+  {
+    "name": "image/x-dwg"
+  },
+  {
+    "name": "image/x-icon"
+  },
+  {
+    "name": "image/x-jg"
+  },
+  {
+    "name": "image/x-jps"
+  },
+  {
+    "name": "image/x-niff"
+  },
+  {
+    "name": "image/x-pcx"
+  },
+  {
+    "name": "image/x-pict"
+  },
+  {
+    "name": "image/xpm"
+  },
+  {
+    "name": "image/x-portable-anymap"
+  },
+  {
+    "name": "image/x-portable-bitmap"
+  },
+  {
+    "name": "image/x-portable-graymap"
+  },
+  {
+    "name": "image/x-portable-greymap"
+  },
+  {
+    "name": "image/x-portable-pixmap"
+  },
+  {
+    "name": "image/x-quicktime"
+  },
+  {
+    "name": "image/x-rgb"
+  },
+  {
+    "name": "image/x-tiff"
+  },
+  {
+    "name": "image/x-windows-bmp"
+  },
+  {
+    "name": "image/x-xbitmap"
+  },
+  {
+    "name": "image/x-xbm"
+  },
+  {
+    "name": "image/x-xpixmap"
+  },
+  {
+    "name": "image/x-xwd"
+  },
+  {
+    "name": "image/x-xwindowdump"
+  },
+  {
+    "name": "i-world/i-vrml"
+  },
+  {
+    "name": "message/rfc822"
+  },
+  {
+    "name": "model/iges"
+  },
+  {
+    "name": "model/vnd.dwf"
+  },
+  {
+    "name": "model/vrml"
+  },
+  {
+    "name": "model/x-pov"
+  },
+  {
+    "name": "multipart/x-gzip"
+  },
+  {
+    "name": "multipart/x-ustar"
+  },
+  {
+    "name": "multipart/x-zip"
+  },
+  {
+    "name": "music/crescendo"
+  },
+  {
+    "name": "music/x-karaoke"
+  },
+  {
+    "name": "paleovu/x-pv"
+  },
+  {
+    "name": "text/asp"
+  },
+  {
+    "name": "text/css"
+  },
+  {
+    "name": "text/ecmascript"
+  },
+  {
+    "name": "text/html",
+    "extension": "html"
+  },
+  {
+    "name": "text/javascript",
+    "extension": "js"
+  },
+  {
+    "name": "text/mcf"
+  },
+  {
+    "name": "text/pascal"
+  },
+  {
+    "name": "text/plain"
+  },
+  {
+    "name": "text/richtext"
+  },
+  {
+    "name": "text/scriplet"
+  },
+  {
+    "name": "text/sgml"
+  },
+  {
+    "name": "text/tab-separated-values"
+  },
+  {
+    "name": "text/uri-list"
+  },
+  {
+    "name": "text/vnd.abc"
+  },
+  {
+    "name": "text/vnd.fmi.flexstor"
+  },
+  {
+    "name": "text/vnd.rn-realtext"
+  },
+  {
+    "name": "text/vnd.wap.wml"
+  },
+  {
+    "name": "text/vnd.wap.wmlscript"
+  },
+  {
+    "name": "text/webviewhtml"
+  },
+  {
+    "name": "text/x-asm"
+  },
+  {
+    "name": "text/x-audiosoft-intra"
+  },
+  {
+    "name": "text/x-c"
+  },
+  {
+    "name": "text/x-component"
+  },
+  {
+    "name": "text/x-fortran"
+  },
+  {
+    "name": "text/x-h"
+  },
+  {
+    "name": "text/x-java-source"
+  },
+  {
+    "name": "text/x-la-asf"
+  },
+  {
+    "name": "text/x-m"
+  },
+  {
+    "name": "text/xml"
+  },
+  {
+    "name": "text/x-pascal"
+  },
+  {
+    "name": "text/x-script"
+  },
+  {
+    "name": "text/x-script.csh"
+  },
+  {
+    "name": "text/x-script.elisp"
+  },
+  {
+    "name": "text/x-script.guile"
+  },
+  {
+    "name": "text/x-script.ksh"
+  },
+  {
+    "name": "text/x-script.lisp"
+  },
+  {
+    "name": "text/x-script.perl"
+  },
+  {
+    "name": "text/x-script.perl-module"
+  },
+  {
+    "name": "text/x-script.phyton"
+  },
+  {
+    "name": "text/x-script.rexx"
+  },
+  {
+    "name": "text/x-script.scheme"
+  },
+  {
+    "name": "text/x-script.sh"
+  },
+  {
+    "name": "text/x-script.tcl"
+  },
+  {
+    "name": "text/x-script.tcsh"
+  },
+  {
+    "name": "text/x-script.zsh"
+  },
+  {
+    "name": "text/x-server-parsed-html"
+  },
+  {
+    "name": "text/x-setext"
+  },
+  {
+    "name": "text/x-sgml"
+  },
+  {
+    "name": "text/x-speech"
+  },
+  {
+    "name": "text/x-uil"
+  },
+  {
+    "name": "text/x-uuencode"
+  },
+  {
+    "name": "text/x-vcalendar"
+  },
+  {
+    "name": "video/animaflex"
+  },
+  {
+    "name": "video/avi"
+  },
+  {
+    "name": "video/avs-video"
+  },
+  {
+    "name": "video/dl"
+  },
+  {
+    "name": "video/fli"
+  },
+  {
+    "name": "video/gl"
+  },
+  {
+    "name": "video/mpeg"
+  },
+  {
+    "name": "video/msvideo"
+  },
+  {
+    "name": "video/quicktime"
+  },
+  {
+    "name": "video/vdo"
+  },
+  {
+    "name": "video/vivo"
+  },
+  {
+    "name": "video/vnd.rn-realvideo"
+  },
+  {
+    "name": "video/vnd.vivo"
+  },
+  {
+    "name": "video/vosaic"
+  },
+  {
+    "name": "video/x-amt-demorun"
+  },
+  {
+    "name": "video/x-amt-showrun"
+  },
+  {
+    "name": "video/x-atomic3d-feature"
+  },
+  {
+    "name": "video/x-dl"
+  },
+  {
+    "name": "video/x-dv"
+  },
+  {
+    "name": "video/x-fli"
+  },
+  {
+    "name": "video/x-gl"
+  },
+  {
+    "name": "video/x-isvideo"
+  },
+  {
+    "name": "video/x-motion-jpeg"
+  },
+  {
+    "name": "video/x-mpeg"
+  },
+  {
+    "name": "video/x-mpeq2a"
+  },
+  {
+    "name": "video/x-ms-asf"
+  },
+  {
+    "name": "video/x-ms-asf-plugin"
+  },
+  {
+    "name": "video/x-msvideo"
+  },
+  {
+    "name": "video/x-qtc"
+  },
+  {
+    "name": "video/x-scm"
+  },
+  {
+    "name": "video/x-sgi-movie"
+  },
+  {
+    "name": "windows/metafile"
+  },
+  {
+    "name": "www/mime"
+  },
+  {
+    "name": "x-conference/x-cooltalk"
+  },
+  {
+    "name": "xgl/drawing"
+  },
+  {
+    "name": "xgl/movie"
+  },
+  {
+    "name": "x-music/x-midi"
+  },
+  {
+    "name": "x-world/x-3dmf"
+  },
+  {
+    "name": "x-world/x-svr"
+  },
+  {
+    "name": "x-world/x-vrml"
+  },
+  {
+    "name": "x-world/x-vrt"
+  }
+]

Reply via email to