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