fix(image):

This commit is contained in:
pakintada@gmail.com 2024-06-03 10:12:16 +07:00
parent 2b8745679f
commit 040c3c7751
6 changed files with 459 additions and 437 deletions

View file

@ -189,7 +189,7 @@ var (
func NewData(taoLogger *logger.TaoLogger, redisClient *RedisCli) *Data {
allRecipeFiles := helpers.ScanRecipeFiles(helpers.LoadCountrySettings())
fmt.Println(allRecipeFiles)
// fmt.Println(allRecipeFiles)
defaultFile := "coffeethai02_600.json"

View file

@ -801,49 +801,70 @@ func (rr *RecipeRouter) getImageOfProductCode(w http.ResponseWriter, r *http.Req
// img_dir := "taobin_project/image/page_drink_picture2_n/"
// new img dir
img_dir := "cofffeemachineConfig/" + countryID + "/.img/"
// img_dir := "cofffeemachineConfig/" + countryID + "/.img/"
fullPath := img_dir + uriName
rr.taoLogger.Log.Debug("RecipeRouter.getImageOfProductCode", zap.Any("fullPath", fullPath))
// fullPath := img_dir + uriName
// rr.taoLogger.Log.Debug("RecipeRouter.getImageOfProductCode", zap.Any("fullPath", fullPath))
// check if image file exists
if _, err := os.Stat(fullPath); os.IsNotExist(err) {
http.Error(w, "Image not found", http.StatusNotFound)
return
}
// if _, err := os.Stat(fullPath); os.IsNotExist(err) {
// http.Error(w, "Image not found", http.StatusNotFound)
// return
// }
// TODO: get from cache
var imgResult image.Image
// try cache
img, err := rr.cache_db.GetCacheImage(fullPath)
// img, err := rr.cache_db.GetCacheImage(fullPath)
// if err != nil {
// // read image
// imgFile, err := os.Open(fullPath)
// if err != nil {
// http.Error(w, err.Error(), http.StatusNotFound)
// return
// }
// defer imgFile.Close()
// thisImage, err := png.Decode(imgFile)
// if err != nil {
// http.Error(w, err.Error(), http.StatusNotFound)
// return
// }
// imgResult = thisImage
// // set cache
// err = rr.cache_db.SetImageToCache(fullPath, thisImage)
// if err != nil {
// rr.taoLogger.Log.Debug("CacheImage.SetError", zap.Any("error", err))
// }
// } else {
// imgResult = img
// rr.taoLogger.Log.Debug("CacheImage.OK", zap.Any("status", imgResult))
// }
// New: try load from another server
//
cli := http.Client{}
resp, err := cli.Get("http://localhost:36527/image/" + uriName)
if err != nil {
// read image
imgFile, err := os.Open(fullPath)
if err != nil {
http.Error(w, err.Error(), http.StatusNotFound)
return
}
defer imgFile.Close()
thisImage, err := png.Decode(imgFile)
if err != nil {
http.Error(w, err.Error(), http.StatusNotFound)
return
}
imgResult = thisImage
// set cache
err = rr.cache_db.SetImageToCache(fullPath, thisImage)
if err != nil {
rr.taoLogger.Log.Debug("CacheImage.SetError", zap.Any("error", err))
}
} else {
imgResult = img
rr.taoLogger.Log.Debug("CacheImage.OK", zap.Any("status", imgResult))
rr.taoLogger.Log.Debug("ImgGetFromFastErr", zap.Any("Error", err.Error()))
http.Error(w, err.Error(), http.StatusNotFound)
}
rr.taoLogger.Log.Debug("GetImageFromFast", zap.Int("Code", resp.StatusCode));
img_data, err := png.Decode(resp.Body)
if err != nil {
rr.taoLogger.Log.Error("ReadFromFastRespErr", zap.Any("Error", err.Error()))
}
resp.Body.Close()
imgResult = img_data
// write image
png.Encode(w, imgResult)
}

View file

@ -3,9 +3,7 @@ package logger
import (
"os"
"recipe-manager/config"
"time"
"github.com/natefinch/lumberjack"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
@ -22,36 +20,32 @@ func (tl *TaoLogger) initConfig() *zap.Logger {
return lvl >= zap.InfoLevel || tl.enableDebug
})
logCore := zapcore.NewTee(
zapcore.NewCore(zapcore.NewJSONEncoder(zapcore.EncoderConfig{
TimeKey: "timestamp",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
MessageKey: "message",
StacktraceKey: "error",
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: zapcore.TimeEncoderOfLayout(time.DateTime),
}), zapcore.AddSync(&lumberjack.Logger{
Filename: "services/logger/serverlog.log",
MaxSize: 5, // megabytes
MaxAge: 28, //days
LocalTime: true,
Compress: true,
}), enableDebugMode),
zapcore.NewCore(zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
TimeKey: "timestamp",
LevelKey: "level",
NameKey: "logger",
CallerKey: "caller",
MessageKey: "message",
StacktraceKey: "error",
EncodeLevel: zapcore.CapitalColorLevelEncoder,
EncodeTime: zapcore.ISO8601TimeEncoder,
}), zapcore.AddSync(os.Stdout), enableDebugMode),
productionConfig := zap.NewProductionEncoderConfig()
productionConfig.EncodeTime = zapcore.ISO8601TimeEncoder
// fileEncoder := zapcore.NewJSONEncoder(productionConfig)
consoleEncoder := zapcore.NewConsoleEncoder(productionConfig)
// logCore := zapcore.NewTee(
// zapcore.NewCore(zapcore.NewJSONEncoder(productionConfig),
// zapcore.NewCore(zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
// TimeKey: "timestamp",
// LevelKey: "level",
// NameKey: "logger",
// CallerKey: "caller",
// MessageKey: "message",
// StacktraceKey: "error",
// EncodeLevel: zapcore.CapitalColorLevelEncoder,
// EncodeTime: zapcore.ISO8601TimeEncoder,
// }), zapcore.AddSync(os.Stdout), enableDebugMode),
// )
core := zapcore.NewTee(
// zapcore.NewCore(fileEncoder, zapcore.AddSync(), enableDebugMode),
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), enableDebugMode),
)
return zap.New(logCore)
return zap.New(core)
}
func NewTaoLogger(cfg *config.ServerConfig) *TaoLogger {