Skip to content

Commit 6cae2e3

Browse files
rabbahdubee
authored andcommitted
Refactor parseSwaggerApi function so that it avoids references to global Flags and Client. (#303)
1 parent c76de67 commit 6cae2e3

1 file changed

Lines changed: 14 additions & 12 deletions

File tree

commands/api.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ var apiCreateCmd = &cobra.Command{
184184
whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
185185
return whiskErr
186186
} else if len(args) == 0 && Flags.api.configfile != "" {
187-
api, err = parseSwaggerApi()
187+
api, err = parseSwaggerApi(Flags.api.configfile, Client.Config.Namespace)
188188
if err != nil {
189189
whisk.Debug(whisk.DbgError, "parseSwaggerApi() error: %s\n", err)
190190
errMsg := wski18n.T("Unable to parse swagger file: {{.err}}", map[string]interface{}{"err": err})
@@ -929,28 +929,28 @@ func parseApi(cmd *cobra.Command, args []string) (*whisk.Api, *QualifiedName, er
929929
return api, qName, err
930930
}
931931

932-
func parseSwaggerApi() (*whisk.Api, error) {
932+
func parseSwaggerApi(configfile string, namespace string) (*whisk.Api, error) {
933933
// Test is for completeness, but this situation should only arise due to an internal error
934-
if len(Flags.api.configfile) == 0 {
934+
if len(configfile) == 0 {
935935
whisk.Debug(whisk.DbgError, "No swagger file is specified\n")
936936
errMsg := wski18n.T("A configuration file was not specified.")
937937
whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
938938
whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
939939
return nil, whiskErr
940940
}
941941

942-
swagger, err := ReadFile(Flags.api.configfile)
942+
swagger, err := ReadFile(configfile)
943943
if err != nil {
944-
whisk.Debug(whisk.DbgError, "readFile(%s) error: %s\n", Flags.api.configfile, err)
944+
whisk.Debug(whisk.DbgError, "readFile(%s) error: %s\n", configfile, err)
945945
errMsg := wski18n.T("Error reading swagger file '{{.name}}': {{.err}}",
946-
map[string]interface{}{"name": Flags.api.configfile, "err": err})
946+
map[string]interface{}{"name": configfile, "err": err})
947947
whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
948948
whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
949949
return nil, whiskErr
950950
}
951951

952952
// Check if this swagger is in JSON or YAML format
953-
isYaml := strings.HasSuffix(Flags.api.configfile, yamlFileExtension) || strings.HasSuffix(Flags.api.configfile, ymlFileExtension)
953+
isYaml := strings.HasSuffix(configfile, yamlFileExtension) || strings.HasSuffix(configfile, ymlFileExtension)
954954
if isYaml {
955955
whisk.Debug(whisk.DbgInfo, "Converting YAML formated API configuration into JSON\n")
956956
jsonbytes, err := yaml.YAMLToJSON([]byte(swagger))
@@ -968,30 +968,32 @@ func parseSwaggerApi() (*whisk.Api, error) {
968968
swaggerObj := new(whisk.ApiSwagger)
969969
err = json.Unmarshal([]byte(swagger), swaggerObj)
970970
if err != nil {
971-
whisk.Debug(whisk.DbgError, "JSON parse of '%s' error: %s\n", Flags.api.configfile, err)
971+
whisk.Debug(whisk.DbgError, "JSON parse of '%s' error: %s\n", configfile, err)
972972
errMsg := wski18n.T("Error parsing swagger file '{{.name}}': {{.err}}",
973-
map[string]interface{}{"name": Flags.api.configfile, "err": err})
973+
map[string]interface{}{"name": configfile, "err": err})
974974
whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
975975
whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
976976
return nil, whiskErr
977977
}
978+
978979
if swaggerObj.BasePath == "" || swaggerObj.SwaggerName == "" || swaggerObj.Info == nil || swaggerObj.Paths == nil {
979-
whisk.Debug(whisk.DbgError, "Swagger file is invalid.\n", Flags.api.configfile, err)
980+
whisk.Debug(whisk.DbgError, "Swagger file is invalid.\n", configfile, err)
980981
errMsg := wski18n.T("Swagger file is invalid (missing basePath, info, paths, or swagger fields)")
981982
whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
982983
whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
983984
return nil, whiskErr
984985
}
986+
985987
if _, ok := isValidBasepath(swaggerObj.BasePath); !ok {
986-
whisk.Debug(whisk.DbgError, "Swagger file basePath is invalid.\n", Flags.api.configfile, err)
988+
whisk.Debug(whisk.DbgError, "Swagger file basePath is invalid.\n", configfile, err)
987989
errMsg := wski18n.T("Swagger file basePath must start with a leading slash (/)")
988990
whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
989991
whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
990992
return nil, whiskErr
991993
}
992994

993995
api := new(whisk.Api)
994-
api.Namespace = Client.Config.Namespace
996+
api.Namespace = namespace
995997
api.Swagger = swagger
996998

997999
return api, nil

0 commit comments

Comments
 (0)