Simple telnet server for write.as http://nerds.write.as
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
716 B

  1. package store
  2. import (
  3. "bytes"
  4. "io"
  5. "os"
  6. )
  7. const (
  8. // FriendlyIdLen is the length of any saved posts's filename.
  9. FriendlyIdLen = 13
  10. )
  11. // SavePost writes the given bytes to a file with a randomly generated name in
  12. // the given directory.
  13. func SavePost(outDir string, post []byte) (string, error) {
  14. filename := generateFileName()
  15. f, err := os.Create(outDir + "/" + filename)
  16. if err != nil {
  17. return "", err
  18. }
  19. defer f.Close()
  20. out := post[:0]
  21. for _, b := range post {
  22. if b < 32 && b != 10 && b != 13 {
  23. continue
  24. }
  25. out = append(out, b)
  26. }
  27. _, err = io.Copy(f, bytes.NewReader(out))
  28. return filename, err
  29. }
  30. func generateFileName() string {
  31. return GenerateFriendlyRandomString(FriendlyIdLen)
  32. }