/* * Minio Cloud Storage (C) 2016 Minio, Inc. * * Licensed 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. */ import mimedb from "mime-types" const isFolder = (name, contentType) => { if (name.endsWith("/")) return true return false } const isPdf = (name, contentType) => { if (contentType === "application/pdf") return true return false } const isZip = (name, contentType) => { if (!contentType || !contentType.includes("/")) return false if (contentType.split("/")[1].includes("zip")) return true return false } const isCode = (name, contentType) => { const codeExt = [ "c", "cpp", "go", "py", "java", "rb", "js", "pl", "fs", "php", "css", "less", "scss", "coffee", "net", "html", "rs", "exs", "scala", "hs", "clj", "el", "scm", "lisp", "asp", "aspx", ] const ext = name.split(".").reverse()[0] for (var i in codeExt) { if (ext === codeExt[i]) return true } return false } const isExcel = (name, contentType) => { if (!contentType || !contentType.includes("/")) return false const types = ["excel", "spreadsheet"] const subType = contentType.split("/")[1] for (var i in types) { if (subType.includes(types[i])) return true } return false } const isDoc = (name, contentType) => { if (!contentType || !contentType.includes("/")) return false const types = ["word", ".document"] const subType = contentType.split("/")[1] for (var i in types) { if (subType.includes(types[i])) return true } return false } const isPresentation = (name, contentType) => { if (!contentType || !contentType.includes("/")) return false var types = ["powerpoint", "presentation"] const subType = contentType.split("/")[1] for (var i in types) { if (subType.includes(types[i])) return true } return false } const typeToIcon = type => { return (name, contentType) => { if (!contentType || !contentType.includes("/")) return false if (contentType.split("/")[0] === type) return true return false } } export const getDataType = (name, contentType) => { if (contentType === "") { contentType = mimedb.lookup(name) || "application/octet-stream" } const check = [ ["folder", isFolder], ["code", isCode], ["audio", typeToIcon("audio")], ["image", typeToIcon("image")], ["video", typeToIcon("video")], ["text", typeToIcon("text")], ["pdf", isPdf], ["zip", isZip], ["excel", isExcel], ["doc", isDoc], ["presentation", isPresentation], ] for (var i in check) { if (check[i][1](name, contentType)) return check[i][0] } return "other" }