GET /arbitrary/resource/properties/{service}/{name}/{identifier} can now extract the MIME type from the file's contents as an alternative to using the filename.

This commit is contained in:
CalDescent 2023-03-18 17:50:13 +00:00
parent 1b9afce21f
commit 5ecc633fd7
2 changed files with 12 additions and 4 deletions

View File

@ -36,6 +36,7 @@
<java-diff-utils.version>4.10</java-diff-utils.version> <java-diff-utils.version>4.10</java-diff-utils.version>
<grpc.version>1.45.1</grpc.version> <grpc.version>1.45.1</grpc.version>
<protobuf.version>3.19.4</protobuf.version> <protobuf.version>3.19.4</protobuf.version>
<simplemagic.version>1.17</simplemagic.version>
</properties> </properties>
<build> <build>
<sourceDirectory>src/main/java</sourceDirectory> <sourceDirectory>src/main/java</sourceDirectory>
@ -728,5 +729,10 @@
<artifactId>protobuf-java</artifactId> <artifactId>protobuf-java</artifactId>
<version>${protobuf.version}</version> <version>${protobuf.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.j256.simplemagic</groupId>
<artifactId>simplemagic</artifactId>
<version>${simplemagic.version}</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,6 +1,8 @@
package org.qortal.api.resource; package org.qortal.api.resource;
import com.google.common.primitives.Bytes; import com.google.common.primitives.Bytes;
import com.j256.simplemagic.ContentInfo;
import com.j256.simplemagic.ContentInfoUtil;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.ArraySchema;
@ -12,8 +14,6 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import java.io.*; import java.io.*;
import java.net.FileNameMap;
import java.net.URLConnection;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList; import java.util.ArrayList;
@ -1394,8 +1394,10 @@ public class ArbitraryResource {
String[] files = ArrayUtils.removeElement(outputPath.toFile().list(), ".qortal"); String[] files = ArrayUtils.removeElement(outputPath.toFile().list(), ".qortal");
if (files.length == 1) { if (files.length == 1) {
String filename = files[0]; String filename = files[0];
FileNameMap fileNameMap = URLConnection.getFileNameMap(); java.nio.file.Path filePath = Paths.get(outputPath.toString(), files[0]);
String mimeType = fileNameMap.getContentTypeFor(filename); ContentInfoUtil util = new ContentInfoUtil();
ContentInfo info = util.findMatch(filePath.toFile());
String mimeType = (info != null) ? info.getMimeType() : null;
fileProperties.filename = filename; fileProperties.filename = filename;
fileProperties.mimeType = mimeType; fileProperties.mimeType = mimeType;
} }