internal bool TryProcessFbl(string queryParams, out bool?isClassifyRequest, out bool?isOptIn) { isClassifyRequest = null; isOptIn = null; FblRequestParameters fblRequestParameters = null; bool result; try { FBLPerfCounters.NumberOfFblRequestsReceived.Increment(); if (!this.FblEnabled) { result = true; } else if (string.IsNullOrEmpty(queryParams)) { FBLPerfCounters.NumberOfFblRequestsFailed.Increment(); result = false; } else { fblRequestParameters = this.DecryptAndParseUrlParameters(queryParams); if (fblRequestParameters == null) { result = false; } else { if (fblRequestParameters.IsClassifyRequest()) { isClassifyRequest = new bool?(true); this.ProcessClassificationRequest(fblRequestParameters); } else { isClassifyRequest = new bool?(false); isOptIn = new bool?(fblRequestParameters.OptIn); if (!this.TryProcessSubscriptionRequest(fblRequestParameters)) { FBLPerfCounters.NumberOfFblRequestsFailed.Increment(); return(false); } } FBLPerfCounters.NumberOfFblRequestsSuccessfullyProcessed.Increment(); result = true; } } } catch (Exception ex) { FBLPerfCounters.NumberOfFblRequestsFailed.Increment(); LoggingUtilities.LogEvent(ClientsEventLogConstants.Tuple_FblUnableToProcessRequest, new object[] { ex.InnerException ?? ex }); result = (fblRequestParameters != null && fblRequestParameters.IsClassifyRequest()); } return(result); }
private EmailMessage CreateFblRequestMessage(FblRequestParameters requestParameters) { if (requestParameters == null) { throw new ArgumentNullException("requestParameters", "Cannot create FBL Request Message from null request parameters."); } EmailMessage emailMessage = EmailMessage.Create(); this.AddHeader(emailMessage, "X-Version", "1"); this.AddHeader(emailMessage, "X-GuidCustomer", requestParameters.CustomerGuid.ToString()); if (requestParameters.IsClassifyRequest()) { this.AddHeader(emailMessage, "X-GuidMail", requestParameters.MailGuid.ToString()); this.AddHeader(emailMessage, "X-Class", requestParameters.MessageClass); } else { RoutingAddress routingAddress = new RoutingAddress(requestParameters.PrimaryEmail); this.AddHeader(emailMessage, "X-UserName", routingAddress.LocalPart); this.AddHeader(emailMessage, "X-Domain", routingAddress.DomainPart); this.AddHeader(emailMessage, "X-OptIn", requestParameters.OptIn ? "1" : "0"); } this.AddEncryptedMessageRoutingHeaderToMessage(emailMessage); return(emailMessage); }