public ResponseXsd GetXsd(int requestCode) { log.Debug("Запуск"); log.Debug($"requestCode: {requestCode}"); log.Debug($"Token: {GetTokenValue()}"); if (!AuthorizeHelpers.IsAuthorized(_dbContext, GetTokenValue(), requestCode, out ResponseXsd response, out var externalSystem)) { log.Error($"Авторизация не пройдена. Причина: {response.Error}"); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.Forbidden, response)); } log.Debug("Авторизация пройдена"); var imp = new IncomingMessageProcessor(_dbContext, externalSystem); response = imp.GetXsd(requestCode); log.Debug($"Результат:\r\n{response}"); if (response.IsError) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, response)); } log.Debug("Звершение"); return(response); }
public Response GetResponse(Guid requestId) { log.Debug("Запуск"); log.Debug($"Сообщение:\r\n{OperationContext.Current.RequestContext.RequestMessage}"); log.Debug($"requestId: {requestId}"); log.Debug($"Token: {WebOperationContext.Current.IncomingRequest.Headers["Token"]}"); if (!AuthorizeHelpers.IsAuthorized(_dbContext, WebOperationContext.Current.IncomingRequest.Headers["Token"], requestId, out Response response, out var externalSystem)) { log.Error($"Авторизация не пройдена. Причина: {response.Error}"); WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden; return(response); } log.Debug("Авторизация пройдена"); IncomingMessageProcessor imp = new IncomingMessageProcessor(_dbContext, externalSystem); response = imp.GetResponse(requestId); log.Debug($"Результат:\r\n{response}"); log.Debug("Звершение"); return(response); }
public ResponseId ExecuteRequestAsync([FromBody] Request request) { log.Debug("Запуск"); log.Debug($"request:\r\n{request}"); log.Debug($"Token: {GetTokenValue()}"); if (!AuthorizeHelpers.IsAuthorized(_dbContext, GetTokenValue(), request.Code, out ResponseId response, out var externalSystem)) { log.Error($"Авторизация не пройдена. Причина: {response.Error}"); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.Forbidden, response)); } log.Debug("Авторизация пройдена"); IncomingMessageProcessor imp = new IncomingMessageProcessor(_dbContext, externalSystem); response = imp.ExecuteAsync(request); log.Debug($"Результат:\r\n{response}"); log.Debug("Звершение"); return(response); }
public async Task <Response> FileUpload() { log.Debug("Запуск"); log.Debug($"Token: {GetTokenValue()}"); var isMimeMultipartContent = Request.Content.IsMimeMultipartContent(); log.Debug($"isMimeMultipartContent: {isMimeMultipartContent}"); if (!isMimeMultipartContent) { var errorResponse = new ResponseId { IsError = true, Error = "Некорректный Content-Type, ожидаем на вход MimeMultipart" }; log.Error(errorResponse); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.UnsupportedMediaType, errorResponse)); } var provider = new MultipartMemoryStreamProvider(); try { await Request.Content.ReadAsMultipartAsync(provider); } catch (Exception ex) { log.Error(ex.Message); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, new ResponseId { IsError = true, Error = ex.Message })); } log.Debug($"Contents count: {provider.Contents.Count}"); if (provider.Contents.Count != 2) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, new ResponseId { IsError = true, Error = "Тело запроса должно состоять из файла и json-объекта" })); } HttpContent json = provider.Contents.FirstOrDefault(c => c.Headers.ContentType.MediaType == "application/json"); if (json == null) { var errorResponse = new Response { IsError = true, Error = "В теле запроса нет части с Content-type: application/json" }; log.Error(errorResponse); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, errorResponse)); } UploadFileRequest fileInfo = null; try { log.Debug("Чтение json объекта с метаданными загружаемого файла"); byte[] jsonAsArray = json.ReadAsByteArrayAsync().Result; using (var stream = new MemoryStream(jsonAsArray)) { var sr = new StreamReader(stream); var rawJsonStr = sr.ReadToEnd(); log.Debug($"Raw JSON string: {rawJsonStr}"); fileInfo = JsonConvert.DeserializeObject <UploadFileRequest>(rawJsonStr); } } catch (Exception ex) { log.Error(ex.Message); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, new ResponseId { IsError = true, Error = ex.Message })); } if (!AuthorizeHelpers.IsAuthorized(_dbContext, GetTokenValue(), fileInfo.RequestCode, out Response response, out var externalSystem)) { log.Error($"Авторизация не пройдена. Причина: {response.Error}"); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.Forbidden, response)); } log.Debug("Авторизация пройдена"); HttpContent file = provider.Contents.FirstOrDefault(c => c.Headers.ContentType.MediaType != "application/json"); if (file == null) { var errorResponse = new ResponseId { IsError = true, Error = "В теле запроса нет части с файлом" }; log.Error(errorResponse); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, errorResponse)); } string fileName = file.Headers.ContentDisposition.FileName.Replace("\"", ""); log.Debug($"fileName: {fileName}"); UploadFileRequest.ValidateFileName(fileName, Request); byte[] fileAsArray = file.ReadAsByteArrayAsync().Result; try { var imp = new IncomingMessageProcessor(_dbContext, externalSystem); response = imp.FileUpload(fileInfo, fileName, fileAsArray); } catch (Exception ex) { log.Error(ex.Message); throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, new ResponseId { IsError = true, Error = ex.Message })); } log.Debug($"Результат:\r\n{response}"); log.Debug("Завершение"); return(response); }