Пример #1
0
        public void WriteLoggerHelper1()
        {
            var _Log = LogManager.GetLogger(typeof(TestRetrieveDataHelper));

            WriteLoggerHelper.Write("Test: Write to Default log", WriteLogType.Debug, _Log);
            WriteLoggerHelper.Write("Test: Write to Specific log", WriteLogType.Debug);
        }
        private T DoServiceAction <T>(ITrapForThrottling trapForThrottling, string actionName, ActionAccessType access, RequestsCounterData requestCounter, Func <T> func, string details)
        {
            return(_WaitBeforeRetryController.Do(() =>
            {
                T response = default(T);

                trapForThrottling.Execute(new ActionInfo(actionName)
                {
                    Action = () =>
                    {
                        response = func();
                        requestCounter.IncrementRequests(actionName, details);
                    },
                    Access = access
                });

                return response;
            },
                                                 ex =>
            {
                if (ex != null)
                {
                    WriteLoggerHelper.Write(ex.Message, WriteLogType.Warning, null, ex);
                    Debug.WriteLine(ex);
                }

                if (ex is MarketplaceWebServiceProductsException)
                {
                    var prodEx = ex as MarketplaceWebServiceProductsException;
                    if (prodEx.StatusCode == HttpStatusCode.InternalServerError ||
                        prodEx.StatusCode == HttpStatusCode.ServiceUnavailable ||
                        string.Equals(prodEx.ErrorCode, _RequestThrottledString, StringComparison.InvariantCultureIgnoreCase))
                    {
                        return true;
                    }
                    else if (prodEx.StatusCode == HttpStatusCode.Unauthorized || prodEx.StatusCode == HttpStatusCode.BadRequest)
                    {
                        return false;
                    }
                }
                else if (ex is MarketplaceWebServiceOrdersException)
                {
                    var ordersEx = ex as MarketplaceWebServiceOrdersException;
                    if (ordersEx.StatusCode == HttpStatusCode.InternalServerError ||
                        ordersEx.StatusCode == HttpStatusCode.ServiceUnavailable ||
                        string.Equals(ordersEx.ErrorCode, _RequestThrottledString, StringComparison.InvariantCultureIgnoreCase))
                    {
                        return true;
                    }
                    else if (ordersEx.StatusCode == HttpStatusCode.Unauthorized)
                    {
                        return false;
                    }
                }
                else if (ex is MarketplaceWebServiceException)
                {
                    var repEx = ex as MarketplaceWebServiceException;

                    if (repEx.StatusCode == HttpStatusCode.InternalServerError ||
                        repEx.StatusCode == HttpStatusCode.ServiceUnavailable ||
                        string.Equals(repEx.ErrorCode, _RequestThrottledString, StringComparison.InvariantCultureIgnoreCase))
                    {
                        return true;
                    }
                    else if (repEx.StatusCode == HttpStatusCode.Unauthorized)
                    {
                        return false;
                    }
                }

                return true;
            }
                                                 ));
        }
        private TransactionSearchResponseType GetTransactions(DateTime startDate, DateTime endDate, PayPalRequestInfo reqInfo, RequestsCounterData requestsCounter, ref int daysFailedSoFar)
        {
            var request = new TransactionSearchReq {
                TransactionSearchRequest = new TransactionSearchRequestType {
                    Version          = Version,
                    StartDate        = startDate.ToUniversalTime(),
                    StatusSpecified  = true,
                    EndDate          = endDate.ToUniversalTime(),
                    EndDateSpecified = true,
                    DetailLevel      = new[] { DetailLevelCodeType.ReturnAll },
                    Status           = PaymentTransactionStatusCodeType.Success
                }
            };

            var userId = reqInfo.SecurityInfo.UserId;

            bool      needToRetry = true;
            Exception lastEx      = null;
            int       counter     = 0;

            while (needToRetry && counter <= CurrentValues.Instance.PayPalNumberOfRetries)
            {
                counter++;
                try {
                    var cred = CreateCredentials(reqInfo.SecurityInfo);
                    WriteLog(string.Format("PayPalService TransactionSearch Starting ({0})", userId));
                    var service = CreateService(reqInfo);
                    TransactionSearchResponseType resp = service.TransactionSearch(ref cred, request);

                    WriteLog(string.Format(
                                 "PayPalService TransactionSearch Request:\n{0}\nResponse:\n{1}",
                                 request.TransactionSearchRequest.ToLogStr(),
                                 resp.ToLogStr()
                                 ));

                    requestsCounter.IncrementRequests("TransactionSearch");
                    if (resp.Ack == AckCodeType.Failure)
                    {
                        throw ServiceRequestExceptionFactory.Create(new PayPalServiceResponceExceptionWrapper(resp));
                    }
                    WriteLog(string.Format("PayPalService TransactionSearch Ended ({0})", userId));

                    return(resp);
                } catch (Exception ex) {
                    lastEx = ex;
                    if (ex is IServiceRequestException)
                    {
                        var exFail = ex as IServiceRequestException;
                        needToRetry = _CommonInternalErrors.Any(exFail.HasErrorWithCode);
                    }

                    WriteLoggerHelper.Write(string.Format("PayPalService TransactionSearch Error ({0}): need to retry: {2} \n {1} ", userId, ex.Message, needToRetry), WriteLogType.Error, null, ex);
                }
            }

            WriteLoggerHelper.Write(string.Format("Failed fetching pay pal data from {0} to {1}", request.TransactionSearchRequest.StartDate, request.TransactionSearchRequest.EndDate), WriteLogType.Info, null, lastEx);

            if (daysFailedSoFar == CurrentValues.Instance.PayPalMaxAllowedFailures)
            {
                WriteLoggerHelper.Write(string.Format("Max number of failures:{0} exceeded.", daysFailedSoFar), WriteLogType.Error, null, lastEx);
                throw lastEx ?? new Exception();
            }

            daysFailedSoFar++;

            return(null);
        }
 private void WriteLog(string message, Exception ex = null)
 {
     WriteLoggerHelper.Write(message, WriteLogType.Info, null, ex);
     Debug.WriteLine(message);
 }
Пример #5
0
 protected void WriteToLog(string message, WriteLogType messageType = WriteLogType.Debug, Exception ex = null)
 {
     WriteLoggerHelper.Write(message, messageType, null, ex);
     Debug.WriteLine(message);
 }
Пример #6
0
 private static void WriteToLog(string message, WriteLogType messageType = WriteLogType.Info, Exception ex = null)
 {
     WriteLoggerHelper.Write(message, messageType, null, ex);
     Debug.WriteLine(message);
 }