Browse Source

Was more explicit about deserialization options, fixed some test_responses code

tags/docs-0.9
RogueException 9 years ago
parent
commit
f95a079788
2 changed files with 14 additions and 11 deletions
  1. +3
    -1
      src/Discord.Net/DiscordClient.cs
  2. +11
    -10
      src/Discord.Net/Net/Rest/RestClient.cs

+ 3
- 1
src/Discord.Net/DiscordClient.cs View File

@@ -107,12 +107,14 @@ namespace Discord
_serializer.CheckAdditionalContent = true; _serializer.CheckAdditionalContent = true;
_serializer.MissingMemberHandling = MissingMemberHandling.Error; _serializer.MissingMemberHandling = MissingMemberHandling.Error;
#else #else
_serializer.CheckAdditionalContent = false;
_serializer.MissingMemberHandling = MissingMemberHandling.Ignore;
#endif
_serializer.Error += (s, e) => _serializer.Error += (s, e) =>
{ {
e.ErrorContext.Handled = true; e.ErrorContext.Handled = true;
Logger.Error("Serialization Failed", e.ErrorContext.Error); Logger.Error("Serialization Failed", e.ErrorContext.Error);
}; };
#endif


//Networking //Networking
ClientAPI = new RestClient(Config, DiscordConfig.ClientAPIUrl, Log.CreateLogger("ClientAPI")); ClientAPI = new RestClient(Config, DiscordConfig.ClientAPIUrl, Log.CreateLogger("ClientAPI"));


+ 11
- 10
src/Discord.Net/Net/Rest/RestClient.cs View File

@@ -13,6 +13,7 @@ namespace Discord.Net.Rest
private readonly DiscordConfig _config; private readonly DiscordConfig _config;
private readonly IRestEngine _engine; private readonly IRestEngine _engine;
private string _token; private string _token;
private JsonSerializerSettings _deserializeSettings;


internal Logger Logger { get; } internal Logger Logger { get; }


@@ -38,6 +39,15 @@ namespace Discord.Net.Rest
#else #else
_engine = new BuiltInEngine(config, baseUrl, logger); _engine = new BuiltInEngine(config, baseUrl, logger);
#endif #endif

_deserializeSettings = new JsonSerializerSettings();
#if TEST_RESPONSES
_deserializeSettings.CheckAdditionalContent = true;
_deserializeSettings.MissingMemberHandling = MissingMemberHandling.Error;
#else
_deserializeSettings.CheckAdditionalContent = false;
_deserializeSettings.MissingMemberHandling = MissingMemberHandling.Ignore;
#endif
} }


public async Task<ResponseT> Send<ResponseT>(IRestRequest<ResponseT> request) public async Task<ResponseT> Send<ResponseT>(IRestRequest<ResponseT> request)
@@ -135,22 +145,13 @@ namespace Discord.Net.Rest
return responseJson; return responseJson;
} }


private JsonSerializerSettings _deserializeSettings = new JsonSerializerSettings();
private T DeserializeResponse<T>(string json) private T DeserializeResponse<T>(string json)
{ {
#if TEST_RESPONSES #if TEST_RESPONSES
if (_deserializeSettings == null)
{
_deserializeSettings = new JsonSerializerSettings();
_deserializeSettings.CheckAdditionalContent = true;
_deserializeSettings.MissingMemberHandling = MissingMemberHandling.Error;
}
if (string.IsNullOrEmpty(json)) if (string.IsNullOrEmpty(json))
throw new Exception("API check failed: Response is empty."); throw new Exception("API check failed: Response is empty.");
return JsonConvert.DeserializeObject<T>(json, _deserializeSettings);
#else
return JsonConvert.DeserializeObject<T>(json);
#endif #endif
return JsonConvert.DeserializeObject<T>(json, _deserializeSettings);
} }
} }
} }

Loading…
Cancel
Save