1// Copyright (c) Microsoft Corporation. All rights reserved. 2// Licensed under the MIT License. See License.txt in the project root for license information. 3 4package model 5 6import ( 7 "encoding/json" 8 "io" 9 "io/ioutil" 10) 11 12// Metadata ... 13type Metadata interface { 14 // SwaggerFiles returns the related swagger files in this tag 15 SwaggerFiles() []string 16 // PackagePath returns the output package path of this tag 17 PackagePath() string 18 // Namespace returns the namespace of this tag 19 Namespace() string 20} 21 22// NewMetadataFrom reads a new Metadata from a io.Reader 23func NewMetadataFrom(reader io.Reader) (Metadata, error) { 24 b, err := ioutil.ReadAll(reader) 25 if err != nil { 26 return nil, err 27 } 28 var result localMetadata 29 if err := json.Unmarshal(b, &result); err != nil { 30 return nil, err 31 } 32 return &result, nil 33} 34 35type localMetadata struct { 36 // InputFiles ... 37 InputFiles []string `json:"inputFiles"` 38 // OutputFolder ... 39 OutputFolder string `json:"outputFolder"` 40 // LocalNamespace ... 41 LocalNamespace string `json:"namespace"` 42} 43 44// SwaggerFiles ... 45func (m localMetadata) SwaggerFiles() []string { 46 return m.InputFiles 47} 48 49// PackagePath ... 50func (m localMetadata) PackagePath() string { 51 return m.OutputFolder 52} 53 54// Namespace ... 55func (m localMetadata) Namespace() string { 56 return m.LocalNamespace 57} 58 59// String ... 60func (m localMetadata) String() string { 61 b, _ := json.MarshalIndent(m, "", " ") 62 return string(b) 63} 64