Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • ui-rewrite
2 results

types.go

Blame
  • types.go 1.75 KiB
    package main
    
    import (
    	"encoding/json"
    	"os"
    	"time"
    )
    
    type Image struct {
    	Id           string `json:"id"`
    	Title        string
    	Description  string
    	CreatedAt    time.Time
    	OriginalName string
    	MimeType     string `json:"mime_type"`
    }
    
    type Result struct {
    	Id      string   `json:"id"`
    	Success bool     `json:"success"`
    	Errors  []string `json:"errors"`
    }
    
    type Size struct {
    	Width  uint   `json:"width"`
    	Height uint   `json:"height"`
    	Format string `json:"format"`
    }
    
    const (
    	sizeFormatCover   = "cover"
    	sizeFormatContain = "contain"
    )
    
    type Quality struct {
    	CompressionQuality uint      `json:"compression_quality"`
    	SamplingFactors    []float64 `json:"sampling_factors"`
    }
    
    type SizeDefinition struct {
    	Size   Size   `json:"size"`
    	Suffix string `json:"suffix"`
    }
    
    type RedisConfig struct {
    	Address  string
    	Password string
    }
    
    type DatabaseConfig struct {
    	Format string
    	Url    string
    }
    
    type Config struct {
    	Sizes         []SizeDefinition
    	Quality       Quality
    	SourceFolder  string
    	TargetFolder  string
    	Redis         RedisConfig
    	Database      DatabaseConfig
    	ImageQueue    string
    	ResultChannel string
    }
    
    func NewConfigFromEnv() Config {
    	config := Config{}
    
    	json.Unmarshal([]byte(os.Getenv("IK8R_SIZES")), &config.Sizes)
    	json.Unmarshal([]byte(os.Getenv("IK8R_QUALITY")), &config.Quality)
    	config.SourceFolder = os.Getenv("IK8R_SOURCE_FOLDER")
    	config.TargetFolder = os.Getenv("IK8R_TARGET_FOLDER")
    	config.Redis.Address = os.Getenv("IK8R_REDIS_ADDRESS")
    	config.Redis.Password = os.Getenv("IK8R_REDIS_PASSWORD")
    	config.ImageQueue = os.Getenv("IK8R_REDIS_IMAGE_QUEUE")
    	config.ResultChannel = os.Getenv("IK8R_REDIS_RESULT_CHANNEL")
    	config.Database.Format = os.Getenv("IK8R_DATABASE_TYPE")
    	config.Database.Url = os.Getenv("IK8R_DATABASE_URL")
    
    	return config
    }