[Refactor]: Core/API Split (#1506)

Refactors api folder to core, creates firm split between backend code and api frontend.
This commit is contained in:
Dave 2024-01-05 09:34:56 -05:00 committed by GitHub
parent bcf02449b3
commit ab7b4d5ee9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
77 changed files with 3441 additions and 3117 deletions

81
pkg/utils/file.go Normal file
View file

@ -0,0 +1,81 @@
package utils
import (
"bufio"
"encoding/base64"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
"github.com/rs/zerolog/log"
)
func CreateTempFileFromMultipartFile(file *multipart.FileHeader, tempDir string, tempPattern string) (string, error) {
f, err := file.Open()
if err != nil {
return "", err
}
defer f.Close()
// Create a temporary file in the requested directory:
outputFile, err := os.CreateTemp(tempDir, tempPattern)
if err != nil {
return "", err
}
defer outputFile.Close()
if _, err := io.Copy(outputFile, f); err != nil {
log.Debug().Msgf("Audio file copying error %+v - %+v - err %+v", file.Filename, outputFile, err)
return "", err
}
return outputFile.Name(), nil
}
func CreateTempFileFromBase64(base64data string, tempDir string, tempPattern string) (string, error) {
if len(base64data) == 0 {
return "", fmt.Errorf("base64data empty?")
}
//base 64 decode the file and write it somewhere
// that we will cleanup
decoded, err := base64.StdEncoding.DecodeString(base64data)
if err != nil {
return "", err
}
// Create a temporary file in the requested directory:
outputFile, err := os.CreateTemp(tempDir, tempPattern)
if err != nil {
return "", err
}
defer outputFile.Close()
// write the base64 result
writer := bufio.NewWriter(outputFile)
_, err = writer.Write(decoded)
if err != nil {
return "", err
}
return outputFile.Name(), nil
}
func CreateTempFileFromUrl(url string, tempDir string, tempPattern string) (string, error) {
// Get the data
resp, err := http.Get(url)
if err != nil {
return "", err
}
defer resp.Body.Close()
// Create the file
out, err := os.CreateTemp(tempDir, tempPattern)
if err != nil {
return "", err
}
defer out.Close()
// Write the body to file
_, err = io.Copy(out, resp.Body)
return out.Name(), err
}