diff --git a/assets/templates/html/deletePasteSuccess.html.tmpl b/assets/templates/html/deletePasteSuccess.html.tmpl deleted file mode 100644 index 334f2cb..0000000 --- a/assets/templates/html/deletePasteSuccess.html.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -{{define "title"}} -Success - rushlink -{{end}} \ No newline at end of file diff --git a/assets/templates/html/newFileUploadPasteSuccess.html.tmpl b/assets/templates/html/newFileUploadPasteSuccess.html.tmpl deleted file mode 100644 index d5f8f3b..0000000 --- a/assets/templates/html/newFileUploadPasteSuccess.html.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -{{define "title"}} -Success - rushlink -{{end}} - -{{define "body"}} -
-{{.Host}}/{{.Paste.Key}}{{.FileExt}}
----
-
-    # View metadata
-    curl {{.Host}}/{{.Paste.Key}}{{.FileExt}}/meta?deleteToken={{.Paste.DeleteToken | urlquery}}
-
-    # Delete this object
-    curl --request DELETE {{.Host}}/{{.Paste.Key}}{{.FileExt}}?deleteToken={{.Paste.DeleteToken | urlquery}}
-
-{{end}}
\ No newline at end of file
diff --git a/assets/templates/html/newRedirectPasteSuccess.html.tmpl b/assets/templates/html/newRedirectPasteSuccess.html.tmpl
deleted file mode 100644
index b1b0372..0000000
--- a/assets/templates/html/newRedirectPasteSuccess.html.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-{{define "title"}}
-Success - rushlink
-{{end}}
-
-{{define "body"}}
-
-{{.Host}}/{{.Paste.Key}}
----
-
-# View metadata
-curl {{.Host}}/{{.Paste.Key}}/meta?deleteToken={{.Paste.DeleteToken | urlquery}}
-
-# Delete this object
-curl --request DELETE {{.Host}}/{{.Paste.Key}}?deleteToken={{.Paste.DeleteToken | urlquery}}
-
-{{end}}
\ No newline at end of file
diff --git a/assets/templates/txt/deletePasteSuccess.txt.tmpl b/assets/templates/txt/deletePasteSuccess.txt.tmpl
deleted file mode 100644
index ac40c43..0000000
--- a/assets/templates/txt/deletePasteSuccess.txt.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<{{.Host}}/{{.Paste.Key}}> was succesfully deleted
diff --git a/assets/templates/txt/newFileUploadPasteSuccess.txt.tmpl b/assets/templates/txt/newFileUploadPasteSuccess.txt.tmpl
deleted file mode 100644
index a94e8cd..0000000
--- a/assets/templates/txt/newFileUploadPasteSuccess.txt.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{{.Host}}/{{.Paste.Key}}{{.FileExt}}
----
-
-# View metadata
-curl {{.Host}}/{{.Paste.Key}}{{.FileExt}}/meta?deleteToken={{.Paste.DeleteToken | urlquery}}
-
-# Delete this object
-curl --request DELETE {{.Host}}/{{.Paste.Key}}{{.FileExt}}?deleteToken={{.Paste.DeleteToken | urlquery}}
diff --git a/assets/templates/txt/newRedirectPasteSuccess.txt.tmpl b/assets/templates/txt/newRedirectPasteSuccess.txt.tmpl
deleted file mode 100644
index 5b1e2f6..0000000
--- a/assets/templates/txt/newRedirectPasteSuccess.txt.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-{{.Host}}/{{.Paste.Key}}
----
-
-# View metadata
-curl {{.Host}}/{{.Paste.Key}}/meta?deleteToken={{.Paste.DeleteToken | urlquery}}
-
-# Delete this object
-curl --request DELETE {{.Host}}/{{.Paste.Key}}?deleteToken={{.Paste.DeleteToken | urlquery}}
diff --git a/handlers.go b/handlers.go
index f7a9429..5d9da67 100644
--- a/handlers.go
+++ b/handlers.go
@@ -9,7 +9,6 @@ import (
 	"net/http"
 	"net/url"
 	"os"
-	"path/filepath"
 	"time"
 
 	"gitea.hashru.nl/dsprenkels/rushlink/internal/db"
@@ -108,7 +107,7 @@ func (rl *rushlink) viewPasteHandlerInner(w http.ResponseWriter, r *http.Request
 			if err != nil {
 				return err
 			}
-			fileExt = filepath.Ext(fu.FileName)
+			fileExt = fu.Ext()
 		}
 		return nil
 	}); err != nil {
@@ -213,8 +212,7 @@ func (rl *rushlink) newFileUploadPasteHandler(w http.ResponseWriter, r *http.Req
 	}); err != nil {
 		panic(err)
 	}
-	data := map[string]interface{}{"Paste": paste, "FileUpload": fu}
-	rl.render(w, r, "newFileUploadPasteSuccess", data)
+	rl.renderCreateSuccess(w, r, paste, fu)
 }
 
 func (rl *rushlink) newPasteHandlerURLEncoded(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
@@ -254,8 +252,7 @@ func (rl *rushlink) newRedirectPasteHandler(w http.ResponseWriter, r *http.Reque
 	}); err != nil {
 		panic(err)
 	}
-	data := map[string]interface{}{"Paste": paste}
-	rl.render(w, r, "newRedirectPasteSuccess", data)
+	rl.renderCreateSuccess(w, r, paste, nil)
 }
 
 // Delete a URL from the database
@@ -270,35 +267,33 @@ func (rl *rushlink) deletePasteHandler(w http.ResponseWriter, r *http.Request) {
 	}
 
 	var errorCode int
-	var paste db.Paste
+	var paste *db.Paste
 	if err := rl.db.Bolt.Update(func(tx *bolt.Tx) error {
-		p, err := db.GetPaste(tx, key)
+		var err error
+		paste, err = db.GetPaste(tx, key)
 		if err != nil {
 			errorCode = http.StatusNotFound
 			return err
 		}
-		if p.State == db.PasteStateDeleted {
+		if paste.State == db.PasteStateDeleted {
 			errorCode = http.StatusGone
 			return errors.New("already deleted")
 		}
-		if subtle.ConstantTimeCompare([]byte(deleteToken), []byte(p.DeleteToken)) == 0 {
+		if subtle.ConstantTimeCompare([]byte(deleteToken), []byte(paste.DeleteToken)) == 0 {
 			errorCode = http.StatusForbidden
 			return errors.New("invalid delete token")
 		}
-		if err := p.Delete(tx, rl.fs); err != nil {
+		if err := paste.Delete(tx, rl.fs); err != nil {
 			errorCode = http.StatusInternalServerError
 			return err
 		}
-		paste = *p
 		return nil
 	}); err != nil {
 		log.Printf("error: %v\n", err)
 		rl.renderError(w, r, errorCode, fmt.Sprintf("error: %v\n", err))
 		return
 	}
-
-	data := map[string]interface{}{"Paste": paste}
-	rl.render(w, r, "deletePasteSuccess", data)
+	rl.renderCreateSuccess(w, r, paste, nil)
 }
 
 // Add a new fileUpload redirect to the database
diff --git a/internal/db/fileupload.go b/internal/db/fileupload.go
index 45ceaf3..f4ff68e 100644
--- a/internal/db/fileupload.go
+++ b/internal/db/fileupload.go
@@ -9,6 +9,7 @@ import (
 	"net/url"
 	"os"
 	"path"
+	"path/filepath"
 
 	"github.com/google/uuid"
 	"github.com/pkg/errors"
@@ -214,3 +215,8 @@ func (fu *FileUpload) URL() *url.URL {
 	}
 	return urlParse
 }
+
+// Ext returns the extension of the file attached to this FileUpload.
+func (fu *FileUpload) Ext() string {
+	return filepath.Ext(fu.FileName)
+}
diff --git a/views.go b/views.go
index b18072a..eaa9112 100644
--- a/views.go
+++ b/views.go
@@ -9,6 +9,7 @@ import (
 	"io"
 	"log"
 	"net/http"
+	"net/url"
 	"path/filepath"
 	"regexp"
 	"runtime/debug"
@@ -17,6 +18,8 @@ import (
 	"strings"
 	text "text/template"
 
+	"gitea.hashru.nl/dsprenkels/rushlink/internal/db"
+
 	"github.com/pkg/errors"
 )
 
@@ -151,6 +154,19 @@ func (rl *rushlink) renderInternalServerError(w http.ResponseWriter, r *http.Req
 	rl.renderError(w, r, http.StatusInternalServerError, msg)
 }
 
+func (rl *rushlink) renderCreateSuccess(w http.ResponseWriter, r *http.Request, paste *db.Paste, fu *db.FileUpload) {
+	var fileExt string
+	if fu != nil {
+		fileExt = fu.Ext()
+	}
+	var redirectURL url.URL
+	redirectURL.Path = fmt.Sprintf("/%s%s/meta", paste.Key, fileExt)
+	queryVals := redirectURL.Query()
+	queryVals.Add("deleteToken", paste.DeleteToken)
+	redirectURL.RawQuery = queryVals.Encode()
+	http.Redirect(w, r, redirectURL.String(), http.StatusFound)
+}
+
 // resolveHost constructs the `scheme://host` part of rushlinks public API.
 //
 // If the `--host` flag is set, it will return that URL.