Source: Map/LegendUrl.js

"use strict";

/* A lookup map for displayable mime types */
var DISPLAYABLE_MIME_TYPES = ['image/jpeg', 'image/gif', 'image/png', 'image/svg+xml', 'image/bmp', 'image/x-bmp']
    .reduce(function(acc, mimeType) {
        acc[mimeType] = true;
        return acc;
    }, {});
var IMAGE_URL_REGEX = /[.\/](png|jpg|jpeg|gif|svg)/i;

/**
 * A simple object that represents a legend for a map layer.
 *
 * @param url The URL of the legend
 * @param mimeType The mime type of the legend - this will be used by the UI to determine how the legend should be shown
 *      (usually an img tag or a link)
 * @constructor
 */
var LegendUrl = function(url, mimeType) {
    this.url = url;
    this.mimeType = mimeType;
    this.safeSvgContent = undefined; // content generated by us that we're willing to insert directly into a DOM.
};

/**
 * Determines whether this url links to an image by inspecting the mime type, or if none is specified, the file
 * extension.
 *
 * @returns {boolean}
 */
LegendUrl.prototype.isImage = function() {
    if (this.mimeType) {
        return !!DISPLAYABLE_MIME_TYPES[this.mimeType];
    }

    return !!this.url.match(IMAGE_URL_REGEX);
};

/** Simple check for whether the url is valid - currently valid is simply defined and length > 0. */
LegendUrl.prototype.isValid = function() {
    return this.url && this.url.length;
};

module.exports = LegendUrl;