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.

89 lines
1.7 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. fmt.Fprintln(w, upload.DebugInfo)
  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.Create(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) (int32, error) {
  39. metadata, err := metadataRead(filename)
  40. if len(metadata) < 1 {
  41. err := errors.New("ERR: Metadata file does not contain expiry")
  42. return 0, err
  43. }
  44. // XXX in this case it's up to the caller to determine proper behavior
  45. // for a nonexistant metadata file or broken file
  46. if err != nil {
  47. return 0, err
  48. }
  49. var expiry int64
  50. expiry, err = strconv.ParseInt(metadata[0], 10, 32)
  51. if err != nil {
  52. return 0, err
  53. } else {
  54. return int32(expiry), err
  55. }
  56. }
  57. func metadataGetDeleteKey(filename string) (string, error) {
  58. metadata, err := metadataRead(filename)
  59. if len(metadata) < 2 {
  60. err := errors.New("ERR: Metadata file does not contain deletion key")
  61. return "", err
  62. }
  63. if err != nil {
  64. return "", err
  65. } else {
  66. return metadata[1], err
  67. }
  68. }