1
0

conv.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package utils
  2. import (
  3. "archive/zip"
  4. "io"
  5. "os"
  6. "path/filepath"
  7. "strconv"
  8. "strings"
  9. )
  10. func StringToInt64(number string) (int64, error) {
  11. i, err := strconv.ParseInt(number, 10, 64)
  12. if err != nil {
  13. return -1, err
  14. }
  15. return i, nil
  16. }
  17. func Int64ToString(number int64) string {
  18. convedNumber := strconv.FormatInt(number, 10)
  19. return convedNumber
  20. }
  21. func ReplaceSpecialCharacters(filename string) string {
  22. replacements := map[string]string{
  23. "#": "%pound%",
  24. "&": "%amp%",
  25. "{": "%left_cur%",
  26. "}": "%right_cur%",
  27. "\\": "%backslash%",
  28. "<": "%left_ang%",
  29. ">": "%right_ang%",
  30. "*": "%aster%",
  31. "?": "%quest%",
  32. " ": "%space%",
  33. "$": "%dollar%",
  34. "!": "%exclan%",
  35. "'": "%sin_q%",
  36. "\"": "%dou_q%",
  37. ":": "%colon%",
  38. "@": "%at%",
  39. "+": "%plus%",
  40. "`": "%backtick%",
  41. "|": "%pipe%",
  42. "=": "%equal%",
  43. ".": "_",
  44. "/": "-",
  45. }
  46. for char, replacement := range replacements {
  47. filename = strings.ReplaceAll(filename, char, replacement)
  48. }
  49. return filename
  50. }
  51. /* Zip File Handler */
  52. // zipFiles compresses multiple files into a single zip archive file
  53. func ZipFiles(filename string, files ...string) error {
  54. newZipFile, err := os.Create(filename)
  55. if err != nil {
  56. return err
  57. }
  58. defer newZipFile.Close()
  59. zipWriter := zip.NewWriter(newZipFile)
  60. defer zipWriter.Close()
  61. for _, file := range files {
  62. if err := addFileToZip(zipWriter, file); err != nil {
  63. return err
  64. }
  65. }
  66. return nil
  67. }
  68. // addFileToZip adds an individual file to a zip archive
  69. func addFileToZip(zipWriter *zip.Writer, filename string) error {
  70. fileToZip, err := os.Open(filename)
  71. if err != nil {
  72. return err
  73. }
  74. defer fileToZip.Close()
  75. info, err := fileToZip.Stat()
  76. if err != nil {
  77. return err
  78. }
  79. header, err := zip.FileInfoHeader(info)
  80. if err != nil {
  81. return err
  82. }
  83. header.Name = filepath.Base(filename)
  84. header.Method = zip.Deflate
  85. writer, err := zipWriter.CreateHeader(header)
  86. if err != nil {
  87. return err
  88. }
  89. _, err = io.Copy(writer, fileToZip)
  90. return err
  91. }