+7
-11
knotserver/git/git.go
+7
-11
knotserver/git/git.go
···
194
194
}
195
195
}
196
196
197
-
func (g *GitRepo) BinContent(path string) ([]byte, error) {
197
+
func (g *GitRepo) RawContent(path string) ([]byte, error) {
198
198
c, err := g.r.CommitObject(g.h)
199
199
if err != nil {
200
200
return nil, fmt.Errorf("commit object: %w", err)
···
210
210
return nil, err
211
211
}
212
212
213
-
isbin, _ := file.IsBinary()
214
-
if isbin {
215
-
reader, err := file.Reader()
216
-
if err != nil {
217
-
return nil, fmt.Errorf("opening file reader: %w", err)
218
-
}
219
-
defer reader.Close()
220
-
221
-
return io.ReadAll(reader)
213
+
reader, err := file.Reader()
214
+
if err != nil {
215
+
return nil, fmt.Errorf("opening file reader: %w", err)
222
216
}
223
-
return nil, ErrNotBinaryFile
217
+
defer reader.Close()
218
+
219
+
return io.ReadAll(reader)
224
220
}
225
221
226
222
func (g *GitRepo) Tags() ([]*TagReference, error) {
+6
-1
knotserver/routes.go
+6
-1
knotserver/routes.go
···
208
208
return
209
209
}
210
210
211
-
contents, err := gr.BinContent(treePath)
211
+
contents, err := gr.RawContent(treePath)
212
212
if err != nil {
213
213
writeError(w, err.Error(), http.StatusBadRequest)
214
214
l.Error("file content", "error", err.Error())
···
216
216
}
217
217
218
218
mimeType := http.DetectContentType(contents)
219
+
220
+
// exception for svg
221
+
if strings.HasPrefix(mimeType, "text/xml") && filepath.Ext(treePath) == ".svg" {
222
+
mimeType = "image/svg+xml"
223
+
}
219
224
220
225
if !strings.HasPrefix(mimeType, "image/") && !strings.HasPrefix(mimeType, "video/") {
221
226
l.Error("attempted to serve non-image/video file", "mimetype", mimeType)