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.

29 lines
950 B

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