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) { //}