You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
812 B

  1. using System;
  2. using Newtonsoft.Json;
  3. using SemVer;
  4. using static IPA.Updating.ModSaber.ApiEndpoint.Mod;
  5. namespace IPA.Updating.Converters
  6. {
  7. internal class ModSaberDependencyConverter : JsonConverter<Dependency>
  8. {
  9. public override Dependency ReadJson(JsonReader reader, Type objectType, Dependency existingValue, bool hasExistingValue, JsonSerializer serializer)
  10. {
  11. var parts = (reader.Value as string)?.Split('@');
  12. return new Dependency
  13. {
  14. Name = parts?[0],
  15. VersionRange = new Range(parts?[1])
  16. };
  17. }
  18. public override void WriteJson(JsonWriter writer, Dependency value, JsonSerializer serializer)
  19. {
  20. writer.WriteValue($"{value.Name}@{value.VersionRange}");
  21. }
  22. }
  23. }