示例#1
0
        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.");
                }
            }
        }
示例#2
0
        /// <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);
        }