summaryrefslogtreecommitdiff
path: root/paste/paste.go
diff options
context:
space:
mode:
Diffstat (limited to 'paste/paste.go')
-rw-r--r--paste/paste.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/paste/paste.go b/paste/paste.go
new file mode 100644
index 0000000..ce06f6a
--- /dev/null
+++ b/paste/paste.go
@@ -0,0 +1,52 @@
+package paste
+
+import(
+ "crypto/sha256"
+ "fmt"
+ "log"
+ "os"
+ "io/ioutil"
+ "errors"
+)
+
+
+
+func Store(title, date, content, dest_dir string) (string, error) {
+
+ h := sha256.New()
+
+ h.Write([]byte(title))
+ h.Write([]byte(date))
+ h.Write([]byte(content))
+
+ paste := fmt.Sprintf("# Title: %s\n# Date: %s\n%s", title, date, content)
+
+ paste_hash := fmt.Sprintf("%x", h.Sum(nil))
+ log.Printf(" `-- hash: %s\n", paste_hash)
+ paste_dir := dest_dir + "/"
+
+
+ // Now we save the file
+ for i := 0; i < len(paste_hash)-16; i++ {
+ paste_name := paste_hash[i:i+16]
+ if _, err := os.Stat(paste_dir + paste_name); os.IsNotExist(err) {
+ // The file does not exist, so we can create it
+ if err := ioutil.WriteFile(paste_dir + paste_name, []byte(paste), 0644); err == nil {
+ // and then we return the URL:
+ log.Printf(" `-- saving new paste to : %s", paste_dir + paste_name)
+ return paste_name, nil
+ } else {
+ log.Printf("Cannot create the paste: %s!\n", paste_dir + paste_name)
+ }
+ }
+ }
+ return "", errors.New("Cannot store the paste...Sorry!")
+}
+
+
+//func Retrieve(URI string) (title, date, content string) {
+
+
+
+
+//}