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.

84 lines
1.6 KiB

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