Beispiel #1
0
        public HttpResponseMessage Put(ConfirmRequest request)
        {
#if DEBUG
            if (request.RequestId == 0)
            {
                throw new Exception("При подтверждении должен быть указан идентификатор обновления");
            }
#endif
            //из-за изменения схемы подтверждения обновления при переходе с версии на версию идентификатор обновления
            //не передается
            if (request.RequestId == 0)
            {
                return(new HttpResponseMessage(HttpStatusCode.OK));
            }
            var log = Session.Get <RequestLog>(request.RequestId);
            //если уже подтверждено значит мы получили информацию об импортированных заявках
            if (log.IsConfirmed)
            {
                log.Error += request.Message;
            }
            else
            {
                //записываем информацию о запросе что бы в случае ошибки повторить попытку
                var failsafe = Path.Combine(Config.FailsafePath, log.Id.ToString());
                File.WriteAllText(failsafe, JsonConvert.SerializeObject(request));
                var task = RequestLog.RunTask(Session, x => Confirm(x, log.Id, Config, request));
                if (task.IsFaulted)
                {
                    return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
                }
            }

            return(new HttpResponseMessage(HttpStatusCode.OK));
        }