Facebook.Unity.Windows/Parsers/WindowsPurchaseParser.cs (49 lines of code) (raw):
using System.Collections;
using System.Collections.Generic;
namespace Facebook.Unity.Windows
{
class WindowsPurchaseParser : WindowsParserBase
{
public static ResultContainer Parse(fbg.Purchases purchases, string callbackId, bool onlyFirst=false)
{
IDictionary<string, object> deserializedPurchaseData = Facebook.MiniJSON.Json.Deserialize(purchases.Raw) as Dictionary<string, object>;
ResultContainer container;
if (deserializedPurchaseData.TryGetValue("data", out IList apiData))
{
IList<Purchase> purchasesList = new List<Purchase>();
foreach (IDictionary<string, object> purchase in apiData)
{
purchasesList.Add( Utilities.ParsePurchaseFromDictionary(purchase, true) );
}
Dictionary<string, object> result = new Dictionary<string, object>()
{
{Constants.CallbackIdKey, callbackId},
{"RawResult", purchases.Raw}
};
if (purchasesList.Count >= 1)
{
if (onlyFirst){
result["purchase"] = purchasesList[0];
}else{
result["purchases"] = purchasesList;
}
}
else
{
result[Constants.ErrorKey] = "ERROR: Parsing purchases. No purchase data.";
}
container = new ResultContainer(result);
}
else
{
container = new ResultContainer(new Dictionary<string, object>()
{
{Constants.CallbackIdKey, callbackId},
{"RawResult", purchases.Raw},
{Constants.ErrorKey, "ERROR: Parsing purchases. Wrong data format"}
});
}
return container;
}
}
}