From 4f2a326f23faa366f8dc3397e1f095f59f30b426 Mon Sep 17 00:00:00 2001 From: Diego Mariani Date: Wed, 25 Sep 2024 13:09:47 +0200 Subject: [PATCH] return json --- pkg/server/import_handlers.go | 23 +++++++++++++---------- pkg/server/models/import.go | 6 +++++- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/pkg/server/import_handlers.go b/pkg/server/import_handlers.go index 4183b1eb..3fde8de5 100644 --- a/pkg/server/import_handlers.go +++ b/pkg/server/import_handlers.go @@ -68,24 +68,28 @@ func (h importHandlers) postImportRerun(c echo.Context) error { return c.JSON(http.StatusBadRequest, NewErrorResponse(err)) } - if err := h.doImport(request, logger); err != nil { + discovery, err := h.doImport(request, logger); + if err != nil { return c.JSON(http.StatusBadRequest, NewErrorResponse(err)) } - response := models.ImportRerunResponse{} + response := models.ImportRerunResponse{ + Discovery: discovery, + } logger.Info("Imported") return c.JSON(http.StatusOK, response) } // nolint:unparam -func (h importHandlers) doImport(request models.ImportRequest, logger *logrus.Entry) error { +func (h importHandlers) doImport(request models.ImportRequest, logger *logrus.Entry) (discovery.ModelDiscovery, error) { + var discoveryModel discovery.ModelDiscovery logger.WithField("len(request.Report)", len(request.Report)).Info("Importing ...") // Create a reader for the zip file zipReader, err := zip.NewReader(bytes.NewReader([]byte(request.Report)), int64(len(request.Report))) if err != nil { - return fmt.Errorf("failed to create zip reader: %w", err) + return discoveryModel, fmt.Errorf("failed to create zip reader: %w", err) } // Search for discovery.json file @@ -98,31 +102,30 @@ func (h importHandlers) doImport(request models.ImportRequest, logger *logrus.En } if discoveryFile == nil { - return fmt.Errorf("discovery.json not found in the zip file") + return discoveryModel, fmt.Errorf("discovery.json not found in the zip file") } // Open the discovery.json file rc, err := discoveryFile.Open() if err != nil { - return fmt.Errorf("failed to open discovery.json: %w", err) + return discoveryModel, fmt.Errorf("failed to open discovery.json: %w", err) } defer rc.Close() // Read the content of discovery.json content, err := io.ReadAll(rc) if err != nil { - return fmt.Errorf("failed to read discovery.json: %w", err) + return discoveryModel, fmt.Errorf("failed to read discovery.json: %w", err) } // Parse the JSON content - var discoveryModel discovery.ModelDiscovery err = json.Unmarshal(content, &discoveryModel) if err != nil { - return fmt.Errorf("failed to parse discovery.json: %w", err) + return discoveryModel, fmt.Errorf("failed to parse discovery.json: %w", err) } // Log the parsed data logger.WithField("discovery", discoveryModel).Info("Discovery data parsed successfully") - return nil + return discoveryModel, nil } diff --git a/pkg/server/models/import.go b/pkg/server/models/import.go index 4226db42..46365e42 100644 --- a/pkg/server/models/import.go +++ b/pkg/server/models/import.go @@ -1,6 +1,9 @@ package models -import validation "github.com/go-ozzo/ozzo-validation" +import ( + "github.com/OpenBankingUK/conformance-suite/pkg/discovery" + validation "github.com/go-ozzo/ozzo-validation" +) // ImportRequest - Request to `/api/import/review` or `/api/import/rerun` POST. // TODO(mbana): Needs more work. @@ -21,4 +24,5 @@ type ImportReviewResponse struct { // ImportRerunResponse - Response to `/api/import/rerun` POST. type ImportRerunResponse struct { + Discovery discovery.ModelDiscovery }