Ещё немного рефакторинга
This commit is contained in:
parent
26bb547c43
commit
005fb8e7dc
1 changed files with 46 additions and 40 deletions
86
main.go
86
main.go
|
@ -16,6 +16,24 @@ import (
|
|||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
type ImageProvider interface {
|
||||
GetImage() string
|
||||
}
|
||||
|
||||
type LocalProvider struct{}
|
||||
|
||||
type S3Provider struct {
|
||||
confHundler ConfHandler
|
||||
}
|
||||
|
||||
func (p LocalProvider) GetImage() string {
|
||||
return GetRandImg()
|
||||
}
|
||||
|
||||
func (p S3Provider) GetImage() string {
|
||||
return p.confHundler.GetRandImgS3()
|
||||
}
|
||||
|
||||
func GetPicsArray() []string {
|
||||
files, err := os.ReadDir("images")
|
||||
if err != nil {
|
||||
|
@ -37,23 +55,6 @@ func (conf *ConfHandler) GetRandImgS3() string {
|
|||
return picsArray[rand.Intn(len(picsArray))]
|
||||
}
|
||||
|
||||
func (conf *ConfHandler) ReturnObjectName(w http.ResponseWriter, req *http.Request) {
|
||||
var picFilename io.Reader = strings.NewReader(conf.GetRandImgS3())
|
||||
log.Println("Картинка отдана")
|
||||
io.Copy(w, picFilename)
|
||||
}
|
||||
|
||||
func (conf *ConfHandler) ReturnHTMLS3(w http.ResponseWriter, req *http.Request) {
|
||||
htmlOpen, err := template.ParseFiles("dist/index.html")
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
return
|
||||
}
|
||||
image := conf.GetRandImgS3()
|
||||
log.Println(image)
|
||||
htmlOpen.Execute(w, image)
|
||||
}
|
||||
|
||||
func GetRandImg() string {
|
||||
picsArray := GetPicsArray()
|
||||
if len(picsArray) == 0 {
|
||||
|
@ -62,23 +63,25 @@ func GetRandImg() string {
|
|||
return picsArray[rand.Intn(len(picsArray))]
|
||||
}
|
||||
|
||||
func ReturnPicFilename(w http.ResponseWriter, req *http.Request) {
|
||||
var picFilename io.Reader = strings.NewReader(GetRandImg())
|
||||
log.Println("Картинка отдана")
|
||||
io.Copy(w, picFilename)
|
||||
func ReturnPicFilename(provider ImageProvider) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
image := provider.GetImage()
|
||||
io.Copy(w, strings.NewReader(image))
|
||||
log.Println("Картинка отдана")
|
||||
}
|
||||
}
|
||||
|
||||
func ReturnHTML(w http.ResponseWriter, req *http.Request) {
|
||||
htmlOpen, err := template.ParseFiles("dist/index.html")
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
return
|
||||
}
|
||||
image := GetRandImg()
|
||||
log.Println(image)
|
||||
if err := htmlOpen.Execute(w, image); err != nil {
|
||||
log.Printf("Ошибка рендеринга HTML: %v", err)
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
func ReturnHTML(provider ImageProvider) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
htmlOpen, err := template.ParseFiles("dist/index.html")
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
return
|
||||
}
|
||||
image := provider.GetImage()
|
||||
if err := htmlOpen.Execute(w, image); err != nil {
|
||||
log.Printf("Ошибка рендеринга: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -135,11 +138,11 @@ func main() {
|
|||
http.Handle("/images/", http.StripPrefix("/images/", imagesDir))
|
||||
http.Handle("/assets/", http.StripPrefix("/assets/", staticDir))
|
||||
|
||||
var provider ImageProvider
|
||||
|
||||
if !conf.UseS3 {
|
||||
http.HandleFunc("/rand", ReturnPicFilename)
|
||||
http.HandleFunc("/", ReturnHTML)
|
||||
provider = LocalProvider{}
|
||||
} else {
|
||||
var confHandler ConfHandler
|
||||
minioClient, err := minio.New(conf.Address, &minio.Options{
|
||||
Creds: credentials.NewStaticV4(conf.AccessKey, conf.SecretKey, ""),
|
||||
Secure: true,
|
||||
|
@ -148,11 +151,14 @@ func main() {
|
|||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
confHandler.minioClient = minioClient
|
||||
confHandler.ConfigHandler = conf
|
||||
http.HandleFunc("/rand", confHandler.ReturnObjectName)
|
||||
http.HandleFunc("/", confHandler.ReturnHTMLS3)
|
||||
provider = S3Provider{
|
||||
confHundler: ConfHandler{
|
||||
ConfigHandler: conf,
|
||||
minioClient: minioClient,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
http.HandleFunc("/rand", ReturnPicFilename(provider))
|
||||
http.HandleFunc("/", ReturnHTML(provider))
|
||||
http.ListenAndServe(":3666", nil)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue