<commit_before>﻿using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Mail;
using Difi.SikkerDigitalPost.Klient.Domene.Entiteter.Interface;

namespace Difi.SikkerDigitalPost.Klient
{
    internal class TheNewSender
    {

        internal async void Send(SoapContainer container, string url, int timoutIMillisekunder)
        {
            HttpContent innhold = GenererInnhold(container);HttpClient client = new HttpClient();
            client.Timeout = TimeSpan.FromMilliseconds(timoutIMillisekunder);
            client.DefaultRequestHeaders.Add("Accept", "*/*");

            var res  = client.PostAsync(url, innhold).Result;
        }


        private HttpContent GenererInnhold(SoapContainer container)
        {
            //var dataGrense = string.Format("--{0}--", Guid.NewGuid());
            var guid = container.Boundary;
            var dataGrenseDashPad = string.Format("--{0}--", guid);
            var dataGrense = guid.ToString();

            MultipartFormDataContent meldingsinnhold = new MultipartFormDataContent(guid);
            
            var contentType =string.Format(
                "Multipart/Related; boundary=\"{0}\"; " +
                "type=\"application/soap+xml\"; " +
                "start=\"<{1}>\"", guid, container.Envelope.ContentId);
            var mediaTypeHeaderValue = MediaTypeHeaderValue.Parse(contentType);
            meldingsinnhold.Headers.ContentType = mediaTypeHeaderValue;

            meldingsinnhold.Headers.Add("SOAPAction", "\"\"");

            LeggTilInnhold(container.Envelope, meldingsinnhold);
            
            foreach (var soapVedlegg in container.Vedlegg)
            {
                LeggTilInnhold(soapVedlegg, meldingsinnhold);
            }

            return meldingsinnhold;
        }

        private void LeggTilInnhold(ISoapVedlegg vedlegg, MultipartFormDataContent meldingsinnhold)
        {
            var meldingsdata = new ByteArrayContent(vedlegg.Bytes);

            var adjustedContentType = vedlegg.Innholdstype.Split(';')[0];

            meldingsdata.Headers.ContentType = new MediaTypeHeaderValue(adjustedContentType);
            meldingsdata.Headers.Add("Content-Transfer-Encoding", vedlegg.TransferEncoding);
            meldingsdata.Headers.Add("Content-ID", string.Format("<{0}>", vedlegg.ContentId));
            
            meldingsinnhold.Add(meldingsdata);
        }
    }
}<commit_msg>Refaktorert litt for økt lesbarhet i TheNewSender<commit_after>﻿using System;
using System.Net.Http;
using System.Net.Http.Headers;
using Difi.SikkerDigitalPost.Klient.Domene.Entiteter.Interface;

namespace Difi.SikkerDigitalPost.Klient
{
    internal class TheNewSender
    {

        internal async void Send(SoapContainer container, string url, int timoutIMillisekunder)
        {
            HttpContent innhold = GenererInnhold(container);HttpClient client = new HttpClient();
            client.Timeout = TimeSpan.FromMilliseconds(timoutIMillisekunder);
            client.DefaultRequestHeaders.Add("Accept", "*/*");

            var res  = client.PostAsync(url, innhold).Result;
        }


        private HttpContent GenererInnhold(SoapContainer container)
        {
            MultipartFormDataContent meldingsinnhold = new MultipartFormDataContent(container.Boundary);
            
            var contentType =string.Format(
                "Multipart/Related; boundary=\"{0}\"; " +
                "type=\"application/soap+xml\"; " +
                "start=\"<{1}>\"", 
                container.Boundary, 
                container.Envelope.ContentId);

            var mediaTypeHeaderValue = MediaTypeHeaderValue.Parse(contentType);
            meldingsinnhold.Headers.ContentType = mediaTypeHeaderValue;

            meldingsinnhold.Headers.Add("SOAPAction", "\"\"");

            LeggTilInnhold(container.Envelope, meldingsinnhold);
            foreach (var soapVedlegg in container.Vedlegg)
            {
                LeggTilInnhold(soapVedlegg, meldingsinnhold);
            }

            return meldingsinnhold;
        }

        private void LeggTilInnhold(ISoapVedlegg vedlegg, MultipartFormDataContent meldingsinnhold)
        {
            var meldingsdata = new ByteArrayContent(vedlegg.Bytes);

            var adjustedContentType = vedlegg.Innholdstype.Split(';')[0];

            meldingsdata.Headers.ContentType = new MediaTypeHeaderValue(adjustedContentType);
            meldingsdata.Headers.Add("Content-Transfer-Encoding", vedlegg.TransferEncoding);
            meldingsdata.Headers.Add("Content-ID", string.Format("<{0}>", vedlegg.ContentId));
            
            meldingsinnhold.Add(meldingsdata);
        }
    }
}
{'fraction_non_alphanumeric': 0.10191897654584221, 'fraction_numerical': 0.0021321961620469083, 'mean_word_length': 2.49813571961223, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7548710', 'n_tokens_mistral': 1366, 'n_tokens_neox': 1303, 'n_words': 204}