paste.Retrieve(). Small changes to the template

master
KatolaZ 8 years ago
parent 8f5b41695d
commit 13c5a2ab43
  1. 11
      binnit.go
  2. 7
      html/templ.html
  3. 25
      paste/paste.go
  4. 89
      templ.go

@ -61,7 +61,6 @@ func min (a, b int) int {
func handle_get_paste(w http.ResponseWriter, r *http.Request) {
var paste_name, orig_name string
var err error
orig_name = filepath.Clean(r.URL.Path)
paste_name = p_conf.paste_dir + "/" + orig_name
@ -75,9 +74,11 @@ func handle_get_paste(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, p_conf.templ_dir + "/index.html")
} else {
// otherwise, if the requested paste exists, we serve it...
if _, err = os.Stat(paste_name); err == nil && orig_name != "./" {
//http.ServeFile(w, r, paste_name)
s, err := prepare_paste_page(&p_conf, orig_name)
title, date, content, err := paste.Retrieve(paste_name)
if err == nil {
s, err := prepare_paste_page(title, date, content, p_conf.templ_dir)
if err == nil {
fmt.Fprintf(w, "%s", s)
return
@ -87,7 +88,7 @@ func handle_get_paste(w http.ResponseWriter, r *http.Request) {
}
} else {
// otherwise, we give say we didn't find it
fmt.Fprintf(w, "Paste '%s' not found\n", orig_name)
fmt.Fprintf(w, "%s\n", err)
return
}
}

@ -1,5 +1,12 @@
<body>
<div>
Title: {{TITLE}}
</div>
<div>
Date: {{DATE}}
</div>
<pre>
{{CONTENT}}
</pre>

@ -7,6 +7,8 @@ import(
"os"
"io/ioutil"
"errors"
"bufio"
"strings"
)
@ -44,9 +46,28 @@ func Store(title, date, content, dest_dir string) (string, error) {
}
//func Retrieve(URI string) (title, date, content string) {
func Retrieve(URI string) (title, date, content string, err error) {
f_cont, err := os.Open(URI)
defer f_cont.Close()
//}
if err == nil {
stuff := bufio.NewScanner(f_cont)
// The first line contains the title
stuff.Scan()
title = strings.Trim(strings.Split(stuff.Text(), ":")[1], " ")
stuff.Scan()
date = strings.Trim(strings.Join(strings.Split(stuff.Text(), ":")[1:], ":"), " ")
for stuff.Scan() {
content += stuff.Text()
}
} else {
return "", "", "", errors.New("Cannot retrieve paste!!!")
}
return title, date, content, nil
}

@ -14,9 +14,9 @@
* <http://www.gnu.org/licenses/>.
*
* (c) Vincenzo "KatolaZ" Nicosia 2017 -- <katolaz@freaknet.org>
*
*
* This file is part of "binnit", a minimal no-fuss pastebin-like
*
*
* This file is part of "binnit", a minimal no-fuss pastebin-like
* server written in golang
*
*/
@ -25,83 +25,72 @@
*
* minimal Templating support for binit
*
*/
*/
package main
import (
"os"
"errors"
"io/ioutil"
"os"
"regexp"
"errors"
)
func prepare_paste_page(title, date, content, templ_dir string) (string, error) {
func prepare_paste_page(c *Config, paste_ID string) (string, error) {
s:= ""
s := ""
// insert header
head_file := c.templ_dir + "/header.html"
head_file := templ_dir + "/header.html"
f_head, err := os.Open(head_file)
defer f_head.Close()
if err == nil {
if err == nil {
cont, err := ioutil.ReadFile(head_file)
if err == nil{
if err == nil {
s += string(cont)
}
}
// insert content
cont_file := c.paste_dir + "/" + paste_ID
f_cont, err := os.Open(cont_file)
defer f_cont.Close()
// insert content
if err == nil {
// Let's read the content of the paste
// ...Let's read the template
templ_file := templ_dir + "/templ.html"
f_templ, err := os.Open(templ_file)
defer f_templ.Close()
cont, err := ioutil.ReadFile(cont_file)
if err == nil {
paste_buf := string(cont)
// ...Let's read the template
templ_file := c.templ_dir + "/templ.html"
f_templ, err := os.Open(templ_file)
defer f_templ.Close()
cont, err := ioutil.ReadFile(templ_file)
if err == nil {
tmpl := string(cont)
// ...and replace {{CONTENT}} with the paste itself!
re,_ := regexp.Compile("{{CONTENT}}")
tmpl = string(re.ReplaceAll([]byte(tmpl), []byte(paste_buf)))
s += tmpl
} else {
return "", errors.New("Error opening template file")
}
} else {
return "", errors.New("Error opening paste")
}
if cont, err := ioutil.ReadFile(templ_file); err == nil {
tmpl := string(cont)
// ...and replace {{CONTENT}} with the paste itself!
re, _ := regexp.Compile("{{TITLE}}")
tmpl = string(re.ReplaceAll([]byte(tmpl), []byte(title)))
re, _ = regexp.Compile("{{DATE}}")
tmpl = string(re.ReplaceAll([]byte(tmpl), []byte(date)))
re, _ = regexp.Compile("{{CONTENT}}")
tmpl = string(re.ReplaceAll([]byte(tmpl), []byte(content)))
s += tmpl
} else {
return "", errors.New("Error opening template file")
}
// insert footer
foot_file := c.templ_dir + "/footer.html"
foot_file := templ_dir + "/footer.html"
f_foot, err := os.Open(foot_file)
defer f_foot.Close()
if err == nil {
if err == nil {
cont, err := ioutil.ReadFile(foot_file)
if err == nil{
if err == nil {
s += string(cont)
}
}
return s, nil
}

Loading…
Cancel
Save