private static void ValidateEnvelopeAndThrowIfInvalid(AbstractEnvelope envelope, string prefix) { List<string> validationMessages; var isValid = SdpXmlValidator.Instance.Validate(envelope.Xml().OuterXml, out validationMessages); if (!isValid) { var errorDescription = $"Ikke gyldig innhold i {prefix}. {validationMessages.Aggregate((current, variable) => current + Environment.NewLine + variable)}"; Log.Warn(errorDescription); throw new XmlValidationException(errorDescription, validationMessages); } }
private static HttpContent CreateHttpContent(AbstractEnvelope envelope, DocumentBundle asiceDocumentBundle) { var boundary = Guid.NewGuid().ToString(); var multipartFormDataContent = new MultipartFormDataContent(boundary); var contentType = $"Multipart/Related; boundary=\"{boundary}\"; " + "type=\"application/soap+xml\"; " + $"start=\"<{envelope.ContentId}>\""; var mediaTypeHeaderValue = MediaTypeHeaderValue.Parse(contentType); multipartFormDataContent.Headers.ContentType = mediaTypeHeaderValue; AddEnvelopeToMultipart(envelope, multipartFormDataContent); AddDocumentBundleToMultipart(asiceDocumentBundle, multipartFormDataContent); return multipartFormDataContent; }
private async Task<string> Send(AbstractEnvelope envelope, DocumentBundle asiceDocumentBundle = null) { if (ClientConfiguration.LoggForespørselOgRespons && RequestResponseLog.IsDebugEnabled) { RequestResponseLog.Debug($"Utgående {envelope.GetType().Name}, conversationId '{envelope.EnvelopeSettings.Forsendelse?.KonversasjonsId}', messageId '{envelope.EnvelopeSettings.GuidUtility.MessageId}': {envelope.Xml().OuterXml}"); } var requestUri = RequestUri(envelope); var httpContent = CreateHttpContent(envelope, asiceDocumentBundle); var responseMessage = await HttpClient.PostAsync(requestUri, httpContent).ConfigureAwait(false); var responseContent = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false); if (ClientConfiguration.LoggForespørselOgRespons && RequestResponseLog.IsDebugEnabled) { RequestResponseLog.Debug($" Innkommende {responseContent}"); } return responseContent; }
private Uri RequestUri(AbstractEnvelope envelope) { var isOutgoingForsendelse = envelope.EnvelopeSettings.Forsendelse != null; return isOutgoingForsendelse ? ClientConfiguration.Miljø.UrlWithOrganisasjonsnummer(envelope.EnvelopeSettings.Databehandler.Organisasjonsnummer, envelope.EnvelopeSettings.Forsendelse.Avsender.Organisasjonsnummer) : ClientConfiguration.Miljø.Url; }