Initial commit

This commit is contained in:
2022-03-06 01:02:55 +07:00
commit c06ae8317f
14 changed files with 700 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
package new_year_service
import (
"encoding/json"
"io/ioutil"
"math/rand"
"os"
)
type newYearConfig struct {
Images []string `json:"images"`
Messages []NewYearMessage `json:"messages"`
}
type NewYearMessage struct {
Header string `json:"header"`
Text string `json:"text"`
}
type newYearService struct {
images []string
messages []NewYearMessage
}
func NewNewYearService() (NewYearService, error) {
images, messages, err := readImagesFromConfig()
if err != nil {
return nil, err
}
return &newYearService{images: images, messages: messages}, nil
}
func (is *newYearService) GetRandomImageURL() string {
return is.images[rand.Intn(len(is.images))]
}
func (is *newYearService) GetRandomMessage() NewYearMessage {
return is.messages[rand.Intn(len(is.messages))]
}
func readImagesFromConfig() ([]string, []NewYearMessage, error) {
file, err := os.Open("config/new_year_config.json")
if err != nil {
return nil, nil, err
}
defer func(file *os.File) {
_ = file.Close()
}(file)
bytes, err := ioutil.ReadAll(file)
if err != nil {
return nil, nil, err
}
newYearConfig := &newYearConfig{}
if err := json.Unmarshal(bytes, newYearConfig); err != nil {
return nil, nil, err
}
return newYearConfig.Images, newYearConfig.Messages, nil
}
@@ -0,0 +1,6 @@
package new_year_service
type NewYearService interface {
GetRandomImageURL() string
GetRandomMessage() NewYearMessage
}
@@ -0,0 +1,21 @@
package new_year_service
import "log"
type newYearServiceLogWrapper struct {
service NewYearService
}
func NewNewYearServiceLogWrapper(service NewYearService) NewYearService {
return &newYearServiceLogWrapper{service: service}
}
func (w *newYearServiceLogWrapper) GetRandomImageURL() string {
log.Println("get random image url")
return w.service.GetRandomImageURL()
}
func (w *newYearServiceLogWrapper) GetRandomMessage() NewYearMessage {
log.Println("get random message")
return w.service.GetRandomMessage()
}