From 5a9b0998a674725702b7d3aa82475cab6e9bdc74 Mon Sep 17 00:00:00 2001 From: Changsu Im Date: Tue, 6 Apr 2021 17:35:18 +0900 Subject: [PATCH] add: swage spec to excel struct --- parser/parser_response.go | 3 +++ xlsx/excel.go | 2 ++ xlsx/simple/index.go | 22 +++++++++++++++++++--- xlsx/simple/simple.go | 12 ++++++++++++ 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/parser/parser_response.go b/parser/parser_response.go index b902123..d1c09d7 100644 --- a/parser/parser_response.go +++ b/parser/parser_response.go @@ -14,6 +14,9 @@ func extractResponses(swagger *oas.Swagger, operation *oas.Operation) (swageResp // xlsx/simple/api_response.go swageResponses = []APIResponse{} oas_responses := operation.Responses + if oas_responses == nil { + return nil, errors.New("response is empty") + } if oas_responses.Default != nil { if oas_responses.Default.Schema != nil && !reflect.DeepEqual(oas.Ref{}, oas_responses.Default.Schema.Ref) { schema, err := oas.ResolveRef(swagger, &oas_responses.Default.Schema.Ref) diff --git a/xlsx/excel.go b/xlsx/excel.go index 732995e..4e83990 100644 --- a/xlsx/excel.go +++ b/xlsx/excel.go @@ -3,6 +3,7 @@ package xlsx import ( "github.com/360EntSecGroup-Skylar/excelize/v2" "github.com/go-openapi/spec" + "github.com/markruler/swage/parser" ) // Excel to save @@ -10,6 +11,7 @@ type Excel struct { File *excelize.File Style style SwaggerSpec *spec.Swagger + SwageSpec *parser.SwageSpec IndexSheetName string WorkSheetName string Context *context diff --git a/xlsx/simple/index.go b/xlsx/simple/index.go index f556b54..a0c55e2 100644 --- a/xlsx/simple/index.go +++ b/xlsx/simple/index.go @@ -57,11 +57,28 @@ func (simple *Simple) CreateIndexSheet() error { xl.File.SetCellStr(xl.IndexSheetName, "D1", "path") xl.File.SetCellStr(xl.IndexSheetName, "E1", "summary") - paths := parser.SortMap(xl.SwaggerSpec.Paths.Paths) row := 1 + // FIXME: refactor + // log.Println(len(xl.SwageSpec.API)) + // for _, api := range xl.SwageSpec.API { + // // log.Println(api) + // xl.File.SetCellInt(xl.IndexSheetName, fmt.Sprintf("%s%d", "A", row+1), row) + // xl.File.SetCellStr(xl.IndexSheetName, fmt.Sprintf("%s%d", "B", row+1), api.Header.Tag) + // xl.File.SetCellStr(xl.IndexSheetName, fmt.Sprintf("%s%d", "C", row+1), api.Header.Method) + // xl.File.SetCellStr(xl.IndexSheetName, fmt.Sprintf("%s%d", "D", row+1), api.Header.Path) + // xl.File.SetCellStr(xl.IndexSheetName, fmt.Sprintf("%s%d", "E", row+1), api.Header.Summary) + // xl.File.SetCellHyperLink(xl.IndexSheetName, fmt.Sprintf("%s%d", "A", row+1), fmt.Sprintf("%d!A1", row), "Location") + // xl.File.SetCellHyperLink(xl.IndexSheetName, fmt.Sprintf("%s%d", "B", row+1), fmt.Sprintf("%d!A1", row), "Location") + // xl.File.SetCellHyperLink(xl.IndexSheetName, fmt.Sprintf("%s%d", "C", row+1), fmt.Sprintf("%d!A1", row), "Location") + // xl.File.SetCellHyperLink(xl.IndexSheetName, fmt.Sprintf("%s%d", "D", row+1), fmt.Sprintf("%d!A1", row), "Location") + // xl.File.SetCellHyperLink(xl.IndexSheetName, fmt.Sprintf("%s%d", "E", row+1), fmt.Sprintf("%d!A1", row), "Location") + // row++ + // } + + // TODO: remove + paths := parser.SortMap(xl.SwaggerSpec.Paths.Paths) for _, path := range paths { operations := xl.SwaggerSpec.Paths.Paths[path] - // FIXME: refactor if operations.PathItemProps.Get != nil { row, err = simple.setOperation(row, path, "GET", operations.PathItemProps.Get, xl.SwaggerSpec.Definitions) if err != nil { @@ -134,7 +151,6 @@ func (simple *Simple) setOperation(row int, path, method string, operation *spec xl.File.SetCellHyperLink(xl.IndexSheetName, fmt.Sprintf("%s%d", "D", row+1), fmt.Sprintf("%d!A1", row), "Location") xl.File.SetCellHyperLink(xl.IndexSheetName, fmt.Sprintf("%s%d", "E", row+1), fmt.Sprintf("%d!A1", row), "Location") - // FIXME: seperate from index sheet if err := simple.CreateAPISheet(path, method, operation, definitions, row); err != nil { return 0, err } diff --git a/xlsx/simple/simple.go b/xlsx/simple/simple.go index b9e910a..192224f 100644 --- a/xlsx/simple/simple.go +++ b/xlsx/simple/simple.go @@ -4,6 +4,7 @@ import ( "errors" "github.com/go-openapi/spec" + "github.com/markruler/swage/parser" "github.com/markruler/swage/xlsx" ) @@ -36,10 +37,21 @@ func (simple *Simple) Generate(spec *spec.Swagger) error { return errors.New("path sould not be empty") } + // TODO: remove swagger spec simple.xl.SwaggerSpec = spec + swage_spec, err := parser.Convert(spec) + if err != nil { + return err + } + simple.xl.SwageSpec = swage_spec + if err := simple.CreateIndexSheet(); err != nil { return err } + // FIXME: seperate from index sheet + // if err := simple.CreateAPISheet(); err != nil { + // return err + // } return nil }