feat: adds dependency type parsing

Signed-off-by: Vincent Biret <vibiret@microsoft.com>
This commit is contained in:
Vincent Biret 2024-09-11 12:38:53 -04:00
Родитель fe75ed2c4d
Коммит 9f5b327055
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 619343BAE7D07BBC
2 изменённых файлов: 25 добавлений и 0 удалений

Просмотреть файл

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json.Serialization;
using Kiota.Builder.Extensions;
using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Interfaces;
@ -72,6 +73,12 @@ public record LanguageDependency : IOpenApiSerializable
{
public string Name { get; set; } = string.Empty;
public string Version { get; set; } = string.Empty;
[JsonPropertyName("Type")]
public DependencyType? DependencyType
{
get; set;
}
private const string TypePropertyName = "type";
public void SerializeAsV2(IOpenApiWriter writer) => SerializeAsV3(writer);
public void SerializeAsV3(IOpenApiWriter writer)
{
@ -79,6 +86,10 @@ public record LanguageDependency : IOpenApiSerializable
writer.WriteStartObject();
writer.WriteProperty(nameof(Name).ToFirstCharacterLowerCase(), Name);
writer.WriteProperty(nameof(Version).ToFirstCharacterLowerCase(), Version);
if (DependencyType is not null)
{
writer.WriteProperty(TypePropertyName, DependencyType.ToString());
}
writer.WriteEndObject();
}
public static LanguageDependency Parse(IOpenApiAny source)
@ -93,6 +104,10 @@ public record LanguageDependency : IOpenApiSerializable
{
extension.Version = versionValue.Value;
}
if (rawObject.TryGetValue(TypePropertyName, out var typeValue) && typeValue is OpenApiString typeStringValue && Enum.TryParse<DependencyType>(typeStringValue.Value, true, out var parsedTypeValue))
{
extension.DependencyType = parsedTypeValue;
}
return extension;
}
}
@ -103,3 +118,12 @@ public enum LanguageMaturityLevel
Preview,
Stable
}
public enum DependencyType
{
Abstractions,
Serialization,
Authentication,
Http,
Bundle,
}

Просмотреть файл

@ -45,6 +45,7 @@ internal static class KiotaConfigurationExtensions
{
Version = dependency[nameof(LanguageDependency.Version)] ?? string.Empty,
Name = dependency[nameof(LanguageDependency.Name)] ?? string.Empty,
DependencyType = dependency["Type"] is string typeValue && !string.IsNullOrEmpty(typeValue) && Enum.TryParse<DependencyType>(typeValue, true, out var dt) ? dt : null,
});
}
configObject.Languages.Add(section.Key, lngInfo);