From 7715c8dcbb7510805c0682de51600b3ef0ece935 Mon Sep 17 00:00:00 2001
From: tamaina <tamaina@hotmail.co.jp>
Date: Wed, 11 Apr 2018 23:14:08 +0900
Subject: [PATCH 1/3] =?UTF-8?q?=E5=8F=AF=E8=83=BD=E3=81=AA=E9=99=90?=
 =?UTF-8?q?=E3=82=8A=E5=8B=95=E7=94=BB=E3=82=84=E7=94=BB=E5=83=8F=E3=81=AE?=
 =?UTF-8?q?=E3=82=B5=E3=83=A0=E3=83=8D=E3=82=A4=E3=83=AB=E3=82=92=E6=8F=90?=
 =?UTF-8?q?=E4=BE=9B=E3=81=99=E3=82=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/server/file/index.ts | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

diff --git a/src/server/file/index.ts b/src/server/file/index.ts
index 8d21b0ba4..3e8eed2c3 100644
--- a/src/server/file/index.ts
+++ b/src/server/file/index.ts
@@ -54,23 +54,22 @@ interface ISend {
 
 function thumbnail(data: stream.Readable, type: string, resize: number): ISend {
 	const readable: stream.Readable = (() => {
-		// 画像ではない場合
-		if (!/^image\/.*$/.test(type)) {
-			// 使わないことにしたストリームはしっかり取り壊しておく
+		// 動画か画像であれば
+		if (/^(?:video|image)\/.*$/.test(type)) {
+			// 0フレーム目を送る
+			try {
+				return gm(data).selectFrame(0).stream();
+			// だめだったら
+			} catch (e) {
+				// 使わないことになったストリームはしっかり取り壊す
+				data.destroy();
+				return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`);
+			}
+		// 動画か画像以外
+		} else {
 			data.destroy();
 			return fs.createReadStream(`${__dirname}/assets/not-an-image.png`);
 		}
-
-		const imageType = type.split('/')[1];
-
-		// 画像でもPNGかJPEGでないならダメ
-		if (imageType != 'png' && imageType != 'jpeg') {
-			// 使わないことにしたストリームはしっかり取り壊しておく
-			data.destroy();
-			return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`);
-		}
-
-		return data;
 	})();
 
 	let g = gm(readable);

From d2b2aeb0d596373cb56b41e1b28c34bd6638ff78 Mon Sep 17 00:00:00 2001
From: tamaina <tamaina@hotmail.co.jp>
Date: Wed, 11 Apr 2018 23:50:11 +0900
Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=96=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/server/file/index.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/server/file/index.ts b/src/server/file/index.ts
index 3e8eed2c3..22370ddd0 100644
--- a/src/server/file/index.ts
+++ b/src/server/file/index.ts
@@ -55,7 +55,7 @@ interface ISend {
 function thumbnail(data: stream.Readable, type: string, resize: number): ISend {
 	const readable: stream.Readable = (() => {
 		// 動画か画像であれば
-		if (/^(?:video|image)\/.*$/.test(type)) {
+		if (/^(?:video|image)\/.*$/.test(type) || type == 'application/xml') {
 			// 0フレーム目を送る
 			try {
 				return gm(data).selectFrame(0).stream();

From 6b22c2fea2cbe4eadaa1c16d76cad79ccf5868b2 Mon Sep 17 00:00:00 2001
From: tamaina <tamaina@hotmail.co.jp>
Date: Thu, 12 Apr 2018 02:34:51 +0900
Subject: [PATCH 3/3] =?UTF-8?q?=E5=8B=95=E7=94=BB=E3=81=AFimagemagick?=
 =?UTF-8?q?=E3=81=A7=E5=A4=89=E6=8F=9B=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/server/file/index.ts | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/server/file/index.ts b/src/server/file/index.ts
index 22370ddd0..658117e3a 100644
--- a/src/server/file/index.ts
+++ b/src/server/file/index.ts
@@ -54,8 +54,14 @@ interface ISend {
 
 function thumbnail(data: stream.Readable, type: string, resize: number): ISend {
 	const readable: stream.Readable = (() => {
-		// 動画か画像であれば
-		if (/^(?:video|image)\/.*$/.test(type) || type == 'application/xml') {
+		// 動画であれば
+		if (/^video\/.*$/.test(type)) {
+			// 実装は先延ばし
+			// 使わないことになったストリームはしっかり取り壊す
+			data.destroy();
+			return fs.createReadStream(`${__dirname}/assets/thumbnail-not-available.png`);
+		// 画像であれば
+		} else if (/^image\/.*$/.test(type) || type == 'application/xml') {
 			// 0フレーム目を送る
 			try {
 				return gm(data).selectFrame(0).stream();