117 lines
2.2 KiB
Go
117 lines
2.2 KiB
Go
package app
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
|
|
"git.savin.nyc/alex/go-receipt-tracker/models"
|
|
tele "gopkg.in/telebot.v4"
|
|
)
|
|
|
|
func Parse(c *tele.Context) error {
|
|
return nil
|
|
}
|
|
|
|
// parseReceipt .
|
|
func parseReceipt(j string) (*models.Receipt, error) {
|
|
var receipt *models.Receipt
|
|
if err := json.Unmarshal([]byte(j), &receipt); err != nil {
|
|
return nil, err
|
|
}
|
|
return receipt, nil
|
|
}
|
|
|
|
func imgType(i string) string {
|
|
if doesFileExist(i) {
|
|
bytes, err := os.ReadFile(i)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// Determine the content type of the image file
|
|
mimeType := http.DetectContentType(bytes)
|
|
|
|
switch mimeType {
|
|
case "image/jpeg":
|
|
return "image/jpeg"
|
|
case "image/png":
|
|
return "image/png"
|
|
case "image/webp":
|
|
return "image/webp"
|
|
case "image/svg+xml":
|
|
return "image/svg+xml"
|
|
case "image/gif":
|
|
return "image/gif"
|
|
case "image/avif":
|
|
return "image/avif"
|
|
case "image/apng":
|
|
return "image/apng"
|
|
}
|
|
|
|
} else {
|
|
return ""
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// readImage .
|
|
func readImage(i string) string {
|
|
if doesFileExist(i) {
|
|
bytes, err := os.ReadFile(i)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// Prepend the appropriate URI scheme header depending
|
|
// on the MIME type
|
|
var base64Encoding string
|
|
|
|
// Append the base64 encoded output
|
|
base64Encoding += toBase64(bytes)
|
|
|
|
return base64Encoding
|
|
} else {
|
|
return ""
|
|
}
|
|
}
|
|
|
|
// toBase64 .
|
|
func toBase64(b []byte) string {
|
|
return base64.StdEncoding.EncodeToString(b)
|
|
}
|
|
|
|
// doesFileExist function to check if file exists
|
|
func doesFileExist(fileName string) bool {
|
|
_, error := os.Stat(fileName)
|
|
|
|
// check if error is "file not exists"
|
|
if os.IsNotExist(error) {
|
|
log.Printf("%v file does not exist\n", fileName)
|
|
return false
|
|
} else {
|
|
log.Printf("%v file exist\n", fileName)
|
|
return true
|
|
}
|
|
}
|
|
|
|
// imgType .
|
|
func (a App) imgType(fileName string) (string, error) {
|
|
f, err := os.Open(fileName)
|
|
if err != nil {
|
|
a.Log.Error("")
|
|
}
|
|
defer f.Close()
|
|
|
|
buff := make([]byte, 512) // docs tell that it take only first 512 bytes into consideration
|
|
if _, err = f.Read(buff); err != nil {
|
|
fmt.Println(err) // do something with that error
|
|
return "", err
|
|
}
|
|
|
|
return http.DetectContentType(buff), nil
|
|
}
|