From 0a0a21969b636041c5cb7a548b10d13b40e4deb0 Mon Sep 17 00:00:00 2001 From: studiokaiji Date: Fri, 10 Nov 2023 12:17:01 +0900 Subject: [PATCH] =?UTF-8?q?NIP-95=E3=83=AA=E3=82=AF=E3=82=A8=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hostr/cmd/server/server.go | 42 ++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/hostr/cmd/server/server.go b/hostr/cmd/server/server.go index 61043d6..17be517 100644 --- a/hostr/cmd/server/server.go +++ b/hostr/cmd/server/server.go @@ -64,8 +64,13 @@ func Start(port string, mode string) { } filter := nostr.Filter{ - Kinds: []int{consts.KindWebhostHTML, consts.KindWebhostCSS, consts.KindWebhostJS, consts.KindWebhostPicture}, - IDs: ids, + Kinds: []int{ + consts.KindWebhostHTML, + consts.KindWebhostCSS, + consts.KindWebhostJS, + consts.KindTextFile, + }, + IDs: ids, } if mode == "secure" { filter.Authors = []string{subdomainPubKey} @@ -74,11 +79,16 @@ func Start(port string, mode string) { // Poolからデータを取得する ev := pool.QuerySingle(ctx, allRelays, filter) if ev != nil { - contentType, err := tools.GetContentType(ev.Kind) + contentType, isTextFile, err := tools.GetContentType(ev) if err != nil { ctx.String(http.StatusNotFound, http.StatusText(http.StatusNotFound)) + } + + content, err := tools.GetResponseContent(ev.Content, isTextFile) + if err != nil { + ctx.String(http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError)) } else { - ctx.Data(http.StatusOK, contentType, []byte(ev.Content)) + ctx.Data(http.StatusOK, contentType, content) } } else { ctx.String(http.StatusNotFound, http.StatusText(http.StatusNotFound)) @@ -112,16 +122,24 @@ func Start(port string, mode string) { consts.KindWebhostReplaceableHTML, consts.KindWebhostReplaceableCSS, consts.KindWebhostReplaceableJS, + consts.KindReplaceableTextFile, }, Authors: authors, Tags: tags, }) if ev != nil { - contentType, err := tools.GetContentType(ev.Kind) + contentType, isTextFile, err := tools.GetContentType(ev) if err != nil { ctx.String(http.StatusNotFound, http.StatusText(http.StatusNotFound)) } - ctx.Data(http.StatusOK, contentType, []byte(ev.Content)) + + // contentの変換 + content, err := tools.GetResponseContent(ev.Content, isTextFile) + if err != nil { + ctx.String(http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError)) + } else { + ctx.Data(http.StatusOK, contentType, content) + } } else { ctx.String(http.StatusNotFound, http.StatusText(http.StatusNotFound)) } @@ -158,16 +176,24 @@ func Start(port string, mode string) { consts.KindWebhostReplaceableHTML, consts.KindWebhostReplaceableCSS, consts.KindWebhostReplaceableJS, + consts.KindReplaceableTextFile, }, Authors: authors, Tags: tags, }) + if ev != nil { - contentType, err := tools.GetContentType(ev.Kind) + contentType, isTextFile, err := tools.GetContentType(ev) if err != nil { ctx.String(http.StatusNotFound, http.StatusText(http.StatusNotFound)) } - ctx.Data(http.StatusOK, contentType, []byte(ev.Content)) + + content, err := tools.GetResponseContent(ev.Content, isTextFile) + if err != nil { + ctx.String(http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError)) + } else { + ctx.Data(http.StatusOK, contentType, content) + } } else { ctx.String(http.StatusNotFound, http.StatusText(http.StatusNotFound)) }