26 lines
613 B
Go
26 lines
613 B
Go
package pkg
|
|
|
|
import (
|
|
"github.com/julienschmidt/httprouter"
|
|
"net/http"
|
|
"strconv"
|
|
)
|
|
|
|
func serveAttachment(w http.ResponseWriter, r *http.Request, params httprouter.Params, sql string) {
|
|
slug := params[0].Value
|
|
if !ValidUuid(slug) {
|
|
http.NotFound(w, r)
|
|
return
|
|
}
|
|
conn := getConn(r)
|
|
var contentType string
|
|
var content []byte
|
|
if notFoundErrorOrPanic(conn.QueryRow(r.Context(), sql, slug).Scan(&contentType, &content)) {
|
|
http.NotFound(w, r)
|
|
return
|
|
}
|
|
w.Header().Set("Content-Type", contentType)
|
|
w.Header().Set("Content-Length", strconv.FormatInt(int64(len(content)), 10))
|
|
_, _ = w.Write(content)
|
|
}
|