public static async Task <List <ReferralCodeReportDataContract> > LoadReferralReport(UserModel user, string secureToken) { string key = "referral_report:" + user.UserId; List <ReferralCodeReportDataContract> referralReport = HttpRuntime.Cache.Get(key) as List <ReferralCodeReportDataContract>; if (referralReport != null) { return(referralReport); } using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Add("X-FD-BingIDToken", secureToken); client.Timeout = TimeSpan.FromMilliseconds(5000); client.DefaultRequestHeaders.Add("X-Flight-ID", "Earn"); string data = await client.GetStringAsync("https://commerce.earnbymicrosoft.com/api/commerce/v2/referrals"); GetUsersReferralsResponse response = JsonConvert.DeserializeObject <GetUsersReferralsResponse>(data); if (response != null && response.ResultSummary != null && response.ResultSummary.ResultCode == "Success") { List <ReferralCodeReportDataContract> result = response.ReferralCodeReports.ToList(); HttpRuntime.Cache.Insert(key, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5)); return(result); } else { throw new InvalidOperationException("Call to load referral report failed."); } } }
/// <summary> /// Gets the users referrals by event type and count. /// </summary> /// <returns> /// The result of the operation. /// </returns> private ResultCode GetUsersReferrals() { GetUsersReferralsResponse response = (GetUsersReferralsResponse)Context[Key.Response]; Context.Log.Verbose("Retrieving user's referrals by event type and count."); response.ReferralCodeReports = ReferralOperations.RetrieveReferralCounts(); Context.Log.Verbose("User's referral events and counts retrieved."); return(ResultCode.Success); }