using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
namespace AssetStoreTools.Api.Responses
{
///
/// A structure used to return the success outcome and the result of Asset Store API calls
///
internal class AssetStoreResponse
{
public bool Success { get; set; } = false;
public bool Cancelled { get; set; } = false;
public Exception Exception { get; set; }
public AssetStoreResponse() { }
public AssetStoreResponse(Exception e) : this()
{
Exception = e;
}
protected void ValidateAssetStoreResponse(string json)
{
var dict = JsonConvert.DeserializeObject(json);
if (dict == null)
throw new Exception("Response is empty");
// Some json responses return an error field on error
if (dict.ContainsKey("error"))
{
// Server side error message
// Do not write to console since this is an error that
// is "expected" ie. can be handled by the gui.
throw new Exception(dict.GetValue("error").ToString());
}
// Some json responses return status+message fields instead of an error field. Go figure.
else if (dict.ContainsKey("status") && dict.GetValue("status").ToString() != "ok"
&& dict.ContainsKey("message"))
{
throw new Exception(dict.GetValue("message").ToString());
}
}
}
}