118 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| 
 | |
| namespace AdjustSdk
 | |
| {
 | |
|     public class AdjustAttribution
 | |
|     {
 | |
|         public string TrackerToken { get; set; }
 | |
|         public string TrackerName { get; set; }
 | |
|         public string Network { get; set; }
 | |
|         public string Campaign { get; set; }
 | |
|         public string Adgroup { get; set; }
 | |
|         public string Creative { get; set; }
 | |
|         public string ClickLabel { get; set; }
 | |
|         public string CostType { get; set; }
 | |
|         public double? CostAmount { get; set; }
 | |
|         public string CostCurrency { get; set; }
 | |
|         public Dictionary<string, object> JsonResponse { get; set; }
 | |
|         // Android only
 | |
|         public string FbInstallReferrer { get; set; }
 | |
| 
 | |
|         public AdjustAttribution() {}
 | |
| 
 | |
|         public AdjustAttribution(string jsonString)
 | |
|         {
 | |
|             var jsonNode = JSON.Parse(jsonString);
 | |
|             if (jsonNode == null)
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             this.TrackerName = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyTrackerName);
 | |
|             this.TrackerToken = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyTrackerToken);
 | |
|             this.Network = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyNetwork);
 | |
|             this.Campaign = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyCampaign);
 | |
|             this.Adgroup = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyAdgroup);
 | |
|             this.Creative = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyCreative);
 | |
|             this.ClickLabel = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyClickLabel);
 | |
|             this.CostType = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyCostType);
 | |
|             try
 | |
|             {
 | |
|                 this.CostAmount = double.Parse(
 | |
|                     AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyCostAmount),
 | |
|                     System.Globalization.CultureInfo.InvariantCulture);
 | |
|             }
 | |
|             catch (Exception)
 | |
|             {
 | |
|                 // attribution response doesn't contain cost amount attached
 | |
|                 // value will default to null
 | |
|             }
 | |
|             this.CostCurrency = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyCostCurrency);
 | |
|             this.FbInstallReferrer = AdjustUtils.GetJsonString(jsonNode, AdjustUtils.KeyFbInstallReferrer);
 | |
| 
 | |
|             var jsonResponseValue = jsonNode[AdjustUtils.KeyJsonResponse];
 | |
|             if (jsonResponseValue == null)
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
|             this.JsonResponse = AdjustUtils.GetAttributionJsonResponse(jsonResponseValue);
 | |
|         }
 | |
| 
 | |
|         public AdjustAttribution(Dictionary<string, string> dicAttributionData)
 | |
|         {
 | |
|             if (dicAttributionData == null)
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             this.TrackerName = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyTrackerName);
 | |
|             this.TrackerToken = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyTrackerToken);
 | |
|             this.Network = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyNetwork);
 | |
|             this.Campaign = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyCampaign);
 | |
|             this.Adgroup = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyAdgroup);
 | |
|             this.Creative = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyCreative);
 | |
|             this.ClickLabel = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyClickLabel);
 | |
|             this.CostType = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyCostType);
 | |
|             try
 | |
|             {
 | |
|                 this.CostAmount = double.Parse(
 | |
|                     AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyCostAmount),
 | |
|                     System.Globalization.CultureInfo.InvariantCulture);
 | |
|             }
 | |
|             catch (Exception)
 | |
|             {
 | |
|                 // attribution response doesn't contain cost amount attached
 | |
|                 // value will default to null
 | |
|             }
 | |
|             this.CostCurrency = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyCostCurrency);
 | |
|             this.FbInstallReferrer = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyFbInstallReferrer);
 | |
| 
 | |
|             string jsonResponseString = AdjustUtils.TryGetValue(dicAttributionData, AdjustUtils.KeyJsonResponse);
 | |
|             var jsonResponseNode = JSON.Parse(jsonResponseString);
 | |
|             if (jsonResponseNode != null && jsonResponseNode.AsObject != null)
 | |
|             {
 | |
|                 this.JsonResponse = new Dictionary<string, object>();
 | |
|                 AdjustUtils.WriteJsonResponseDictionary(jsonResponseNode.AsObject, this.JsonResponse);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public void BuildJsonResponseFromString(string jsonResponseString)
 | |
|         {
 | |
|             var jsonNode = JSON.Parse(jsonResponseString);
 | |
|             if (jsonNode == null)
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             this.JsonResponse = new Dictionary<string, object>();
 | |
|             AdjustUtils.WriteJsonResponseDictionary(jsonNode.AsObject, JsonResponse);
 | |
|         }
 | |
| 
 | |
|         public string GetJsonResponseAsString()
 | |
|         {
 | |
|             return AdjustUtils.GetJsonResponseCompact(JsonResponse);
 | |
|         }
 | |
|     }
 | |
| }
 |