Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }