Contains the Concourse pipeline definition for building a line-server container
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.

88 lines
1.6 KiB

  1. package main
  2. import (
  3. "bufio"
  4. "errors"
  5. "fmt"
  6. "os"
  7. "path"
  8. "strconv"
  9. )
  10. // Write metadata from Upload struct to file
  11. func metadataWrite(filename string, upload *Upload) error {
  12. // Write metadata, overwriting if necessary
  13. file, err := os.Create(path.Join(Config.metaDir, upload.Filename))
  14. if err != nil {
  15. return err
  16. }
  17. defer file.Close()
  18. w := bufio.NewWriter(file)
  19. fmt.Fprintln(w, upload.Expiry)
  20. fmt.Fprintln(w, upload.DeleteKey)
  21. return w.Flush()
  22. }
  23. // Return list of strings from a filename's metadata source
  24. func metadataRead(filename string) ([]string, error) {
  25. file, err := os.Open(path.Join(Config.metaDir, filename))
  26. if err != nil {
  27. return nil, err
  28. }
  29. defer file.Close()
  30. var lines []string
  31. scanner := bufio.NewScanner(file)
  32. for scanner.Scan() {
  33. lines = append(lines, scanner.Text())
  34. }
  35. return lines, scanner.Err()
  36. }
  37. func metadataGetExpiry(filename string) (int32, error) {
  38. metadata, err := metadataRead(filename)
  39. if len(metadata) < 1 {
  40. err := errors.New("ERR: Metadata file does not contain expiry")
  41. return 0, err
  42. }
  43. // XXX in this case it's up to the caller to determine proper behavior
  44. // for a nonexistant metadata file or broken file
  45. if err != nil {
  46. return 0, err
  47. }
  48. var expiry int64
  49. expiry, err = strconv.ParseInt(metadata[0], 10, 32)
  50. if err != nil {
  51. return 0, err
  52. } else {
  53. return int32(expiry), err
  54. }
  55. }
  56. func metadataGetDeleteKey(filename string) (string, error) {
  57. metadata, err := metadataRead(filename)
  58. if len(metadata) < 2 {
  59. err := errors.New("ERR: Metadata file does not contain deletion key")
  60. return "", err
  61. }
  62. if err != nil {
  63. return "", err
  64. } else {
  65. return metadata[1], err
  66. }
  67. }