Test updates for ECS, PMS and SDNC
[nonrtric.git] / dmaap-mediator-producer / internal / jobtypes / jobtypes.go
1 // -
2 //   ========================LICENSE_START=================================
3 //   O-RAN-SC
4 //   %%
5 //   Copyright (C) 2021: Nordix Foundation
6 //   %%
7 //   Licensed under the Apache License, Version 2.0 (the "License");
8 //   you may not use this file except in compliance with the License.
9 //   You may obtain a copy of the License at
10 //
11 //        http://www.apache.org/licenses/LICENSE-2.0
12 //
13 //   Unless required by applicable law or agreed to in writing, software
14 //   distributed under the License is distributed on an "AS IS" BASIS,
15 //   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 //   See the License for the specific language governing permissions and
17 //   limitations under the License.
18 //   ========================LICENSE_END===================================
19 //
20
21 package jobtypes
22
23 import (
24         "os"
25         "path/filepath"
26         "strings"
27 )
28
29 type Type struct {
30         Name   string
31         Schema string
32 }
33
34 var typeDir = "configs"
35
36 func GetTypes() ([]*Type, error) {
37         types := make([]*Type, 0, 1)
38         err := filepath.Walk(typeDir,
39                 func(path string, info os.FileInfo, err error) error {
40                         if err != nil {
41                                 return err
42                         }
43                         if strings.Contains(path, ".json") {
44                                 if jobType, err := getType(path); err == nil {
45                                         types = append(types, jobType)
46                                 }
47                         }
48                         return nil
49                 })
50         if err != nil {
51                 return nil, err
52         }
53         return types, nil
54 }
55
56 func getType(path string) (*Type, error) {
57         fileName := filepath.Base(path)
58         typeName := strings.TrimSuffix(fileName, filepath.Ext(fileName))
59
60         if typeSchema, err := os.ReadFile(path); err == nil {
61                 return &Type{
62                         Name:   typeName,
63                         Schema: string(typeSchema),
64                 }, nil
65         } else {
66                 return nil, err
67         }
68 }