From bff5acddc3bd6a36389e4224fccd5d061419683a Mon Sep 17 00:00:00 2001 From: Lazutin Nikita Date: Sun, 3 Dec 2023 21:22:42 +0500 Subject: [PATCH] Add func --- encoding/encoding.go | 70 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/encoding/encoding.go b/encoding/encoding.go index 7592e24..e999c83 100644 --- a/encoding/encoding.go +++ b/encoding/encoding.go @@ -1,7 +1,13 @@ package encoding import ( + "encoding/json" + "fmt" + "io" + "os" + "github.com/Yandex-Practicum/final-project-encoding-go/models" + "gopkg.in/yaml.v3" ) // JSONData тип для перекодирования из JSON в YAML @@ -26,7 +32,37 @@ type MyEncoder interface { // Encoding перекодирует файл из JSON в YAML func (j *JSONData) Encoding() error { // ниже реализуйте метод - // ... + var dockerCompose models.DockerCompose + + jsonFile, err := os.Open(j.FileInput) + + if err != nil { + return fmt.Errorf("open file: %w", err) + } + jsonData, err := io.ReadAll(jsonFile) + + jsonFile.Close() + + if err != nil { + return fmt.Errorf("read file: %w", err) + } + if err = json.Unmarshal(jsonData, &dockerCompose); err != nil { + return fmt.Errorf("unmarshal: %w", err) + } + yamlData, err := yaml.Marshal(&dockerCompose) + if err != nil { + return fmt.Errorf("marshal: %w", err) + } + yamlFile, err := os.Create(j.FileOutput) + if err != nil { + return fmt.Errorf("create file: %w", err) + } + _, err = yamlFile.Write(yamlData) + yamlFile.Close() + + if err != nil { + return fmt.Errorf("write file: %w", err) + } return nil } @@ -34,7 +70,37 @@ func (j *JSONData) Encoding() error { // Encoding перекодирует файл из YAML в JSON func (y *YAMLData) Encoding() error { // Ниже реализуйте метод - // ... + var dockerCompose models.DockerCompose + + yamlFile, err := os.Open(y.FileInput) + + if err != nil { + return fmt.Errorf("open file: %w", err) + } + + yamlData, err := io.ReadAll(yamlFile) + + yamlFile.Close() + + if err != nil { + return fmt.Errorf("read file: %w", err) + } + if err = yaml.Unmarshal(yamlData, &dockerCompose); err != nil { + return fmt.Errorf("unmarshal: %w", err) + } + jsonData, err := json.Marshal(&dockerCompose) + if err != nil { + return fmt.Errorf("marshal: %w", err) + } + jsonFile, err := os.Create(y.FileOutput) + if err != nil { + return fmt.Errorf("create file: %w", err) + } + _, err = jsonFile.Write(jsonData) + jsonFile.Close() + if err != nil { + return fmt.Errorf("write file: %w", err) + } return nil }