123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package utils
- import (
- "archive/zip"
- "io"
- "os"
- "path/filepath"
- "strconv"
- "strings"
- )
- func StringToInt64(number string) (int64, error) {
- i, err := strconv.ParseInt(number, 10, 64)
- if err != nil {
- return -1, err
- }
- return i, nil
- }
- func Int64ToString(number int64) string {
- convedNumber := strconv.FormatInt(number, 10)
- return convedNumber
- }
- func ReplaceSpecialCharacters(filename string) string {
- replacements := map[string]string{
- "#": "%pound%",
- "&": "%amp%",
- "{": "%left_cur%",
- "}": "%right_cur%",
- "\\": "%backslash%",
- "<": "%left_ang%",
- ">": "%right_ang%",
- "*": "%aster%",
- "?": "%quest%",
- " ": "%space%",
- "$": "%dollar%",
- "!": "%exclan%",
- "'": "%sin_q%",
- "\"": "%dou_q%",
- ":": "%colon%",
- "@": "%at%",
- "+": "%plus%",
- "`": "%backtick%",
- "|": "%pipe%",
- "=": "%equal%",
- ".": "_",
- "/": "-",
- }
- for char, replacement := range replacements {
- filename = strings.ReplaceAll(filename, char, replacement)
- }
- return filename
- }
- /* Zip File Handler */
- // zipFiles compresses multiple files into a single zip archive file
- func ZipFiles(filename string, files ...string) error {
- newZipFile, err := os.Create(filename)
- if err != nil {
- return err
- }
- defer newZipFile.Close()
- zipWriter := zip.NewWriter(newZipFile)
- defer zipWriter.Close()
- for _, file := range files {
- if err := addFileToZip(zipWriter, file); err != nil {
- return err
- }
- }
- return nil
- }
- // addFileToZip adds an individual file to a zip archive
- func addFileToZip(zipWriter *zip.Writer, filename string) error {
- fileToZip, err := os.Open(filename)
- if err != nil {
- return err
- }
- defer fileToZip.Close()
- info, err := fileToZip.Stat()
- if err != nil {
- return err
- }
- header, err := zip.FileInfoHeader(info)
- if err != nil {
- return err
- }
- header.Name = filepath.Base(filename)
- header.Method = zip.Deflate
- writer, err := zipWriter.CreateHeader(header)
- if err != nil {
- return err
- }
- _, err = io.Copy(writer, fileToZip)
- return err
- }
|