mirror of https://github.com/minio/minio.git
				
				
				
			
		
			
				
	
	
		
			145 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /*
 | |
|  * 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 isImage = (name, contentType) => {
 | |
|   if (
 | |
|     contentType === "image/jpeg" ||
 | |
|     contentType === "image/gif" ||
 | |
|     contentType === "image/x-icon" ||
 | |
|     contentType === "image/png" ||
 | |
|     contentType === "image/svg+xml" ||
 | |
|     contentType === "image/tiff" ||
 | |
|     contentType === "image/webp"
 | |
|   )
 | |
|     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],
 | |
|     ["image", isImage],
 | |
|     ["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"
 | |
| }
 |