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
864 B

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