chore: fixes to paste ui

This commit is contained in:
xuu
2023-11-08 13:44:28 -07:00
parent 9a26239aa7
commit 717ed45ffd
7 changed files with 41 additions and 31 deletions

View File

@@ -71,8 +71,10 @@ func (a *image) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusBadRequest)
return
}
dec := base64.NewDecoder(base64.StdEncoding, fd)
fd = io.NopCloser(dec)
}
length := 0
if h := r.Header.Get("Content-Length"); h != "" {
if i, err := strconv.Atoi(h); err != nil {
@@ -80,34 +82,39 @@ func (a *image) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
}
id, err := a.put(ctx, w, fd, length)
switch {
case errors.Is(err, ErrGone):
w.WriteHeader(http.StatusGone)
case errors.Is(err, ErrNotFound):
w.WriteHeader(http.StatusNotFound)
case errors.Is(err, ErrReadingContent):
w.WriteHeader(http.StatusInternalServerError)
case errors.Is(err, ErrUnsupportedType):
w.WriteHeader(http.StatusUnsupportedMediaType)
if err != nil {
switch {
case errors.Is(err, ErrGone):
w.WriteHeader(http.StatusGone)
case errors.Is(err, ErrNotFound):
w.WriteHeader(http.StatusNotFound)
case errors.Is(err, ErrReadingContent):
w.WriteHeader(http.StatusInternalServerError)
case errors.Is(err, ErrUnsupportedType):
w.WriteHeader(http.StatusUnsupportedMediaType)
}
span.RecordError(err)
return
}
type data struct{
Link string `json:"link"`
type data struct {
Link string `json:"link"`
DeleteHash string `json:"deletehash"`
}
var resp = struct{
Data data `json:"data"`
var resp = struct {
Data data `json:"data"`
Success bool `json:"success"`
Status int `json:"status"`
Status int `json:"status"`
}{
Data: data{
Link: fmt.Sprintf("https://%s/i/%s", r.Host, id),
},
Success: true,
Status: 200,
Status: 200,
}
json.NewEncoder(w).Encode(resp)
err = json.NewEncoder(w).Encode(resp)
span.RecordError(err)
default:
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
@@ -165,6 +172,7 @@ func (a *image) put(ctx context.Context, w http.ResponseWriter, r io.ReadCloser,
rdr := io.LimitReader(r, a.maxSize)
pr := readutil.NewPreviewReader(rdr)
if !isImageOrVideo(pr) {
span.AddEvent("not image")
return "", ErrUnsupportedType
}
rdr = pr.Drain()
@@ -172,6 +180,7 @@ func (a *image) put(ctx context.Context, w http.ResponseWriter, r io.ReadCloser,
s256 := sha256.New()
tmp, err := os.CreateTemp(a.store, "image-")
if err != nil {
span.RecordError(err)
return "", fmt.Errorf("%w: %w", ErrBadInput, err)
}
@@ -179,6 +188,7 @@ func (a *image) put(ctx context.Context, w http.ResponseWriter, r io.ReadCloser,
m := io.MultiWriter(s256, tmp)
if _, err := io.Copy(m, rdr); err != nil {
span.RecordError(err)
return "", fmt.Errorf("%w: %w", ErrBadInput, err)
}
tmp.Close()