45 lines
1.2 KiB
C#
45 lines
1.2 KiB
C#
using Core;
|
|
using Core.Helpers;
|
|
using Generator.Daos;
|
|
using Generator.DataSource.Yaml;
|
|
|
|
namespace Generator.Repo;
|
|
|
|
public class ApiAnalyzer
|
|
{
|
|
|
|
private readonly EnvironmentDao _envDao;
|
|
private readonly OpenApiDao _openApiDao;
|
|
|
|
public ApiAnalyzer(OpenApiDao openApiDao, EnvironmentDao envDao)
|
|
{
|
|
_envDao = envDao;
|
|
_openApiDao = openApiDao;
|
|
}
|
|
|
|
public IEnumerable<Location> ListSpecifications()
|
|
{
|
|
var res = new List<string>();
|
|
var directories = Directory.GetDirectories(_envDao.ApiFolder().ToString());
|
|
|
|
foreach (var d in directories) res.AddRange(Directory.EnumerateFiles(d));
|
|
|
|
return res
|
|
.Select(s => new Location(s))
|
|
.Where(s => s.HasExtension("yaml"));
|
|
}
|
|
|
|
public bool CanBeGenerated(string folder, string spec)
|
|
{
|
|
var extractor = new OpenApiYamlExtractor();
|
|
var path = _openApiDao.ConfigOf($"{folder}/{folder}");
|
|
var configs = extractor.LoadConfigs(path.ToString());
|
|
return configs.ContainsKey(spec);
|
|
}
|
|
|
|
public string GetText(string folder, string spec)
|
|
{
|
|
var path = _envDao.ApiFolder().ConcatenateWith([folder, $"{spec}.yaml"]);
|
|
return PathHelper.TextFrom(path.ToString());
|
|
}
|
|
} |