From cd53cbffdf34fc9830bed8eb23525558d36f415a Mon Sep 17 00:00:00 2001 From: max Date: Fri, 20 Mar 2020 17:40:00 +0200 Subject: [PATCH 1/3] port to .net standard 2.0 --- sparkpost-net-core.png | Bin 0 -> 15453 bytes .../SparkPost.Acceptance.csproj | 32 +- .../TransmissionsSteps.cs | 63 +++ src/SparkPost.Tests/SparkPost.Tests.csproj | 33 +- src/SparkPost.Tests/SuppressionTests.cs | 18 +- src/SparkPost/File.cs | 8 +- src/SparkPost/RequestMethods/Get.cs | 4 +- src/SparkPost/SendingDomains.cs | 4 +- src/SparkPost/SparkPost.csproj | 41 +- .../FileExtensionContentTypeProvider.cs | 422 ++++++++++++++++++ 10 files changed, 560 insertions(+), 65 deletions(-) create mode 100644 sparkpost-net-core.png create mode 100644 src/SparkPost.Acceptance/TransmissionsSteps.cs create mode 100644 src/SparkPost/Utilities/FileExtensionContentTypeProvider.cs diff --git a/sparkpost-net-core.png b/sparkpost-net-core.png new file mode 100644 index 0000000000000000000000000000000000000000..5a57454552dccae71c9561176ab3452d2350c8ec GIT binary patch literal 15453 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 Ll_`1m{@ecnLJLBi literal 0 HcmV?d00001 diff --git a/src/SparkPost.Acceptance/SparkPost.Acceptance.csproj b/src/SparkPost.Acceptance/SparkPost.Acceptance.csproj index b1c6d6b9..d16c5e2a 100644 --- a/src/SparkPost.Acceptance/SparkPost.Acceptance.csproj +++ b/src/SparkPost.Acceptance/SparkPost.Acceptance.csproj @@ -1,20 +1,28 @@  + - net6.0 - SparkPost.Acceptance - Library + netcoreapp2.1 + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + - - - - - + - - Always - + - \ No newline at end of file + + diff --git a/src/SparkPost.Acceptance/TransmissionsSteps.cs b/src/SparkPost.Acceptance/TransmissionsSteps.cs new file mode 100644 index 00000000..7553e3cf --- /dev/null +++ b/src/SparkPost.Acceptance/TransmissionsSteps.cs @@ -0,0 +1,63 @@ +using System; +using TechTalk.SpecFlow; + +namespace SparkPost.Acceptance +{ + [Binding] + public class TransmissionsSteps + { + [Given(@"I have a new transmission")] + public void GivenIHaveANewTransmission() + { + ScenarioContext.Current.Pending(); + } + + [Given(@"the transmission is meant to be sent from '(.*)'")] + public void GivenTheTransmissionIsMeantToBeSentFrom(string p0) + { + ScenarioContext.Current.Pending(); + } + + [Given(@"the transmission is meant to be sent to '(.*)'")] + public void GivenTheTransmissionIsMeantToBeSentTo(string p0) + { + ScenarioContext.Current.Pending(); + } + + [Given(@"the transmission content is")] + public void GivenTheTransmissionContentIs(Table table) + { + ScenarioContext.Current.Pending(); + } + + [Given(@"the transmission has a text file attachment")] + public void GivenTheTransmissionHasATextFileAttachment() + { + ScenarioContext.Current.Pending(); + } + + [Given(@"the transmission template id is set to '(.*)'")] + public void GivenTheTransmissionTemplateIdIsSetTo(string p0) + { + ScenarioContext.Current.Pending(); + } + + [Given(@"the transmission is meant to be CCd to '(.*)'")] + public void GivenTheTransmissionIsMeantToBeCCdTo(string p0) + { + ScenarioContext.Current.Pending(); + } + + [Given(@"the transmission is meant to be BCCd to '(.*)'")] + public void GivenTheTransmissionIsMeantToBeBCCdTo(string p0) + { + ScenarioContext.Current.Pending(); + } + + [When(@"I send the transmission")] + public void WhenISendTheTransmission() + { + ScenarioContext.Current.Pending(); + } + } +} diff --git a/src/SparkPost.Tests/SparkPost.Tests.csproj b/src/SparkPost.Tests/SparkPost.Tests.csproj index 1ebd7b30..f063400d 100644 --- a/src/SparkPost.Tests/SparkPost.Tests.csproj +++ b/src/SparkPost.Tests/SparkPost.Tests.csproj @@ -1,19 +1,32 @@ + - net6.0 - SparkPost.Tests + netcoreapp2.1 + Library + + - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + - \ No newline at end of file + + diff --git a/src/SparkPost.Tests/SuppressionTests.cs b/src/SparkPost.Tests/SuppressionTests.cs index a77ed0b2..e7f141c5 100644 --- a/src/SparkPost.Tests/SuppressionTests.cs +++ b/src/SparkPost.Tests/SuppressionTests.cs @@ -35,14 +35,14 @@ public DeleteTests() email = Guid.NewGuid().ToString(); } - [Fact] + [Test] public async Task It_should_return_true_if_the_web_request_returns_no_content() { var result = await suppressions.Delete(email); Assert.True(result); } - [Fact] + [Test] public async Task It_should_return_false_if_the_web_request_returns_anything_but_no_content() { response.StatusCode = HttpStatusCode.Accepted; @@ -58,7 +58,7 @@ public async Task It_should_return_false_if_the_web_request_returns_anything_but Assert.False(deleted); } - [Fact] + [Test] public async Task It_should_build_the_web_request_parameters_correctly() { var version = Guid.NewGuid().ToString(); @@ -79,7 +79,7 @@ public async Task It_should_build_the_web_request_parameters_correctly() await suppressions.Delete(email); } - [Fact] + [Test] public async Task It_should_encode_the_email_address() { var version = Guid.NewGuid().ToString(); @@ -127,14 +127,14 @@ public CreateOrUpdateTests() suppressions = new Suppressions(client.Object, requestSender.Object, dataMapper.Object); } - [Fact] + [Test] public async Task It_should_return_a_response_when_the_web_request_is_ok() { var result = await suppressions.CreateOrUpdate(suppressionsList); Assert.NotNull(result); } - [Fact] + [Test] public async Task It_should_return_the_reason_phrase() { response.ReasonPhrase = Guid.NewGuid().ToString(); @@ -142,7 +142,7 @@ public async Task It_should_return_the_reason_phrase() Assert.Equal(response.ReasonPhrase, result.ReasonPhrase); } - [Fact] + [Test] public async Task It_should_return_the_content() { response.Content = Guid.NewGuid().ToString(); @@ -150,7 +150,7 @@ public async Task It_should_return_the_content() Assert.Equal(response.Content, result.Content); } - [Fact] + [Test] public async Task It_should_make_a_properly_formed_request() { client.Setup(x => x.Version).Returns(Guid.NewGuid().ToString()); @@ -168,7 +168,7 @@ public async Task It_should_make_a_properly_formed_request() await suppressions.CreateOrUpdate(suppressionsList); } - [Fact] + [Test] public async Task It_should_throw_if_the_http_status_code_is_not_ok() { response.StatusCode = HttpStatusCode.Accepted; diff --git a/src/SparkPost/File.cs b/src/SparkPost/File.cs index 120cc141..4bba4cde 100644 --- a/src/SparkPost/File.cs +++ b/src/SparkPost/File.cs @@ -1,6 +1,6 @@ using System; using System.IO; -using System.Web; +using SparkPost.Utilities; namespace SparkPost { @@ -25,7 +25,7 @@ public abstract class File public static T Create(byte[] content) where T : File, new() { - return Create(content, String.Empty); + return Create(content, string.Empty); } public static T Create(byte[] content, string name) where T : File, new() @@ -34,7 +34,7 @@ public abstract class File if (content != null) { result.Data = Convert.ToBase64String(content); - result.Type = MimeMapping.MimeUtility.GetMimeMapping(name); + result.Type = MimeMapping.GetContentType(name); result.Name = name; } ; @@ -43,7 +43,7 @@ public abstract class File public static T Create(Stream content) where T : File, new() { - return Create(content, String.Empty); + return Create(content, string.Empty); } public static T Create(Stream content, string name) where T : File, new() diff --git a/src/SparkPost/RequestMethods/Get.cs b/src/SparkPost/RequestMethods/Get.cs index f6eec35f..60a3c3c8 100644 --- a/src/SparkPost/RequestMethods/Get.cs +++ b/src/SparkPost/RequestMethods/Get.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; +using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; diff --git a/src/SparkPost/SendingDomains.cs b/src/SparkPost/SendingDomains.cs index f08a5985..6a56688a 100644 --- a/src/SparkPost/SendingDomains.cs +++ b/src/SparkPost/SendingDomains.cs @@ -1,7 +1,5 @@ using System.Net; using System.Threading.Tasks; -using System.Web; -using Microsoft.AspNetCore.WebUtilities; using SparkPost.RequestSenders; using SparkPost.Utilities; @@ -109,7 +107,7 @@ public async Task Delete(string domain) if (response.StatusCode == HttpStatusCode.NoContent) { response.StatusCode = HttpStatusCode.OK; - response.ReasonPhrase = ReasonPhrases.GetReasonPhrase((int)HttpStatusCode.OK); + response.ReasonPhrase = nameof(HttpStatusCode.OK); } if (response.StatusCode != HttpStatusCode.OK) diff --git a/src/SparkPost/SparkPost.csproj b/src/SparkPost/SparkPost.csproj index fa8500ab..55d6fdb4 100644 --- a/src/SparkPost/SparkPost.csproj +++ b/src/SparkPost/SparkPost.csproj @@ -1,33 +1,26 @@  + - SparkPost - SparkPost - SparkPost - SparkPost API - Copyright 2022 - 2.0.2 - 2.0.2 - 2.0.2 - Darren Cauthon; Adam Hathcock - https://www.sparkpost.com/sites/default/files/attachments/SparkPost_Logo_2-Color_Gray-Orange_RGB.svg - SparkPost - https://github.com/darrencauthon/csharp-sparkpost/blob/master/LICENSE.md - https://github.com/SparkPost/csharp-sparkpost - LICENSE.md - Added support to pass a user-agent. - email netstandard2.0 - 10 + + Library + + 1.14.0 + true + SparkPost.NetCore + Lean Sparkpost API client port to .net standard 2.0 + Apache-2.0 + https://github.com/maxlego/csharp-sparkpost + https://github.com/maxlego/csharp-sparkpost + - - - - + + + - - LICENSE.md - + + diff --git a/src/SparkPost/Utilities/FileExtensionContentTypeProvider.cs b/src/SparkPost/Utilities/FileExtensionContentTypeProvider.cs new file mode 100644 index 00000000..c78d9897 --- /dev/null +++ b/src/SparkPost/Utilities/FileExtensionContentTypeProvider.cs @@ -0,0 +1,422 @@ +using System; +using System.Collections.Generic; + +namespace SparkPost.Utilities +{ + /// + /// Provides a mapping between file extensions and MIME types. + /// + internal static class MimeMapping + { + private const string DEFAULT_CONTENT_TYPE = "application/octet-stream"; + + private static readonly IDictionary _map = + new Dictionary(StringComparer.OrdinalIgnoreCase) + { + {".323", "text/h323"}, + {".3g2", "video/3gpp2"}, + {".3gp2", "video/3gpp2"}, + {".3gp", "video/3gpp"}, + {".3gpp", "video/3gpp"}, + {".aac", "audio/aac"}, + {".aaf", "application/octet-stream"}, + {".aca", "application/octet-stream"}, + {".accdb", "application/msaccess"}, + {".accde", "application/msaccess"}, + {".accdt", "application/msaccess"}, + {".acx", "application/internet-property-stream"}, + {".adt", "audio/vnd.dlna.adts"}, + {".adts", "audio/vnd.dlna.adts"}, + {".afm", "application/octet-stream"}, + {".ai", "application/postscript"}, + {".aif", "audio/x-aiff"}, + {".aifc", "audio/aiff"}, + {".aiff", "audio/aiff"}, + {".appcache", "text/cache-manifest"}, + {".application", "application/x-ms-application"}, + {".art", "image/x-jg"}, + {".asd", "application/octet-stream"}, + {".asf", "video/x-ms-asf"}, + {".asi", "application/octet-stream"}, + {".asm", "text/plain"}, + {".asr", "video/x-ms-asf"}, + {".asx", "video/x-ms-asf"}, + {".atom", "application/atom+xml"}, + {".au", "audio/basic"}, + {".avi", "video/x-msvideo"}, + {".axs", "application/olescript"}, + {".bas", "text/plain"}, + {".bcpio", "application/x-bcpio"}, + {".bin", "application/octet-stream"}, + {".bmp", "image/bmp"}, + {".c", "text/plain"}, + {".cab", "application/vnd.ms-cab-compressed"}, + {".calx", "application/vnd.ms-office.calx"}, + {".cat", "application/vnd.ms-pki.seccat"}, + {".cdf", "application/x-cdf"}, + {".chm", "application/octet-stream"}, + {".class", "application/x-java-applet"}, + {".clp", "application/x-msclip"}, + {".cmx", "image/x-cmx"}, + {".cnf", "text/plain"}, + {".cod", "image/cis-cod"}, + {".cpio", "application/x-cpio"}, + {".cpp", "text/plain"}, + {".crd", "application/x-mscardfile"}, + {".crl", "application/pkix-crl"}, + {".crt", "application/x-x509-ca-cert"}, + {".csh", "application/x-csh"}, + {".css", "text/css"}, + {".csv", "application/octet-stream"}, + {".cur", "application/octet-stream"}, + {".dcr", "application/x-director"}, + {".deploy", "application/octet-stream"}, + {".der", "application/x-x509-ca-cert"}, + {".dib", "image/bmp"}, + {".dir", "application/x-director"}, + {".disco", "text/xml"}, + {".dlm", "text/dlm"}, + {".doc", "application/msword"}, + {".docm", "application/vnd.ms-word.document.macroEnabled.12"}, + {".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, + {".dot", "application/msword"}, + {".dotm", "application/vnd.ms-word.template.macroEnabled.12"}, + {".dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"}, + {".dsp", "application/octet-stream"}, + {".dtd", "text/xml"}, + {".dvi", "application/x-dvi"}, + {".dvr-ms", "video/x-ms-dvr"}, + {".dwf", "drawing/x-dwf"}, + {".dwp", "application/octet-stream"}, + {".dxr", "application/x-director"}, + {".eml", "message/rfc822"}, + {".emz", "application/octet-stream"}, + {".eot", "application/vnd.ms-fontobject"}, + {".eps", "application/postscript"}, + {".etx", "text/x-setext"}, + {".evy", "application/envoy"}, + {".fdf", "application/vnd.fdf"}, + {".fif", "application/fractals"}, + {".fla", "application/octet-stream"}, + {".flr", "x-world/x-vrml"}, + {".flv", "video/x-flv"}, + {".gif", "image/gif"}, + {".gtar", "application/x-gtar"}, + {".gz", "application/x-gzip"}, + {".h", "text/plain"}, + {".hdf", "application/x-hdf"}, + {".hdml", "text/x-hdml"}, + {".hhc", "application/x-oleobject"}, + {".hhk", "application/octet-stream"}, + {".hhp", "application/octet-stream"}, + {".hlp", "application/winhlp"}, + {".hqx", "application/mac-binhex40"}, + {".hta", "application/hta"}, + {".htc", "text/x-component"}, + {".htm", "text/html"}, + {".html", "text/html"}, + {".htt", "text/webviewhtml"}, + {".hxt", "text/html"}, + {".ical", "text/calendar"}, + {".icalendar", "text/calendar"}, + {".ico", "image/x-icon"}, + {".ics", "text/calendar"}, + {".ief", "image/ief"}, + {".ifb", "text/calendar"}, + {".iii", "application/x-iphone"}, + {".inf", "application/octet-stream"}, + {".ins", "application/x-internet-signup"}, + {".isp", "application/x-internet-signup"}, + {".IVF", "video/x-ivf"}, + {".jar", "application/java-archive"}, + {".java", "application/octet-stream"}, + {".jck", "application/liquidmotion"}, + {".jcz", "application/liquidmotion"}, + {".jfif", "image/pjpeg"}, + {".jpb", "application/octet-stream"}, + {".jpe", "image/jpeg"}, + {".jpeg", "image/jpeg"}, + {".jpg", "image/jpeg"}, + {".js", "application/javascript"}, + {".json", "application/json"}, + {".jsx", "text/jscript"}, + {".latex", "application/x-latex"}, + {".lit", "application/x-ms-reader"}, + {".lpk", "application/octet-stream"}, + {".lsf", "video/x-la-asf"}, + {".lsx", "video/x-la-asf"}, + {".lzh", "application/octet-stream"}, + {".m13", "application/x-msmediaview"}, + {".m14", "application/x-msmediaview"}, + {".m1v", "video/mpeg"}, + {".m2ts", "video/vnd.dlna.mpeg-tts"}, + {".m3u", "audio/x-mpegurl"}, + {".m4a", "audio/mp4"}, + {".m4v", "video/mp4"}, + {".man", "application/x-troff-man"}, + {".manifest", "application/x-ms-manifest"}, + {".map", "text/plain"}, + {".markdown", "text/markdown"}, + {".md", "text/markdown"}, + {".mdb", "application/x-msaccess"}, + {".mdp", "application/octet-stream"}, + {".me", "application/x-troff-me"}, + {".mht", "message/rfc822"}, + {".mhtml", "message/rfc822"}, + {".mid", "audio/mid"}, + {".midi", "audio/mid"}, + {".mix", "application/octet-stream"}, + {".mmf", "application/x-smaf"}, + {".mno", "text/xml"}, + {".mny", "application/x-msmoney"}, + {".mov", "video/quicktime"}, + {".movie", "video/x-sgi-movie"}, + {".mp2", "video/mpeg"}, + {".mp3", "audio/mpeg"}, + {".mp4", "video/mp4"}, + {".mp4v", "video/mp4"}, + {".mpa", "video/mpeg"}, + {".mpe", "video/mpeg"}, + {".mpeg", "video/mpeg"}, + {".mpg", "video/mpeg"}, + {".mpp", "application/vnd.ms-project"}, + {".mpv2", "video/mpeg"}, + {".ms", "application/x-troff-ms"}, + {".msi", "application/octet-stream"}, + {".mso", "application/octet-stream"}, + {".mvb", "application/x-msmediaview"}, + {".mvc", "application/x-miva-compiled"}, + {".nc", "application/x-netcdf"}, + {".nsc", "video/x-ms-asf"}, + {".nws", "message/rfc822"}, + {".ocx", "application/octet-stream"}, + {".oda", "application/oda"}, + {".odc", "text/x-ms-odc"}, + {".ods", "application/oleobject"}, + {".oga", "audio/ogg"}, + {".ogg", "video/ogg"}, + {".ogv", "video/ogg"}, + {".ogx", "application/ogg"}, + {".one", "application/onenote"}, + {".onea", "application/onenote"}, + {".onetoc", "application/onenote"}, + {".onetoc2", "application/onenote"}, + {".onetmp", "application/onenote"}, + {".onepkg", "application/onenote"}, + {".osdx", "application/opensearchdescription+xml"}, + {".otf", "font/otf"}, + {".p10", "application/pkcs10"}, + {".p12", "application/x-pkcs12"}, + {".p7b", "application/x-pkcs7-certificates"}, + {".p7c", "application/pkcs7-mime"}, + {".p7m", "application/pkcs7-mime"}, + {".p7r", "application/x-pkcs7-certreqresp"}, + {".p7s", "application/pkcs7-signature"}, + {".pbm", "image/x-portable-bitmap"}, + {".pcx", "application/octet-stream"}, + {".pcz", "application/octet-stream"}, + {".pdf", "application/pdf"}, + {".pfb", "application/octet-stream"}, + {".pfm", "application/octet-stream"}, + {".pfx", "application/x-pkcs12"}, + {".pgm", "image/x-portable-graymap"}, + {".pko", "application/vnd.ms-pki.pko"}, + {".pma", "application/x-perfmon"}, + {".pmc", "application/x-perfmon"}, + {".pml", "application/x-perfmon"}, + {".pmr", "application/x-perfmon"}, + {".pmw", "application/x-perfmon"}, + {".png", "image/png"}, + {".pnm", "image/x-portable-anymap"}, + {".pnz", "image/png"}, + {".pot", "application/vnd.ms-powerpoint"}, + {".potm", "application/vnd.ms-powerpoint.template.macroEnabled.12"}, + {".potx", "application/vnd.openxmlformats-officedocument.presentationml.template"}, + {".ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12"}, + {".ppm", "image/x-portable-pixmap"}, + {".pps", "application/vnd.ms-powerpoint"}, + {".ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"}, + {".ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"}, + {".ppt", "application/vnd.ms-powerpoint"}, + {".pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"}, + {".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"}, + {".prf", "application/pics-rules"}, + {".prm", "application/octet-stream"}, + {".prx", "application/octet-stream"}, + {".ps", "application/postscript"}, + {".psd", "application/octet-stream"}, + {".psm", "application/octet-stream"}, + {".psp", "application/octet-stream"}, + {".pub", "application/x-mspublisher"}, + {".qt", "video/quicktime"}, + {".qtl", "application/x-quicktimeplayer"}, + {".qxd", "application/octet-stream"}, + {".ra", "audio/x-pn-realaudio"}, + {".ram", "audio/x-pn-realaudio"}, + {".rar", "application/octet-stream"}, + {".ras", "image/x-cmu-raster"}, + {".rf", "image/vnd.rn-realflash"}, + {".rgb", "image/x-rgb"}, + {".rm", "application/vnd.rn-realmedia"}, + {".rmi", "audio/mid"}, + {".roff", "application/x-troff"}, + {".rpm", "audio/x-pn-realaudio-plugin"}, + {".rtf", "application/rtf"}, + {".rtx", "text/richtext"}, + {".scd", "application/x-msschedule"}, + {".sct", "text/scriptlet"}, + {".sea", "application/octet-stream"}, + {".setpay", "application/set-payment-initiation"}, + {".setreg", "application/set-registration-initiation"}, + {".sgml", "text/sgml"}, + {".sh", "application/x-sh"}, + {".shar", "application/x-shar"}, + {".sit", "application/x-stuffit"}, + {".sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12"}, + {".sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide"}, + {".smd", "audio/x-smd"}, + {".smi", "application/octet-stream"}, + {".smx", "audio/x-smd"}, + {".smz", "audio/x-smd"}, + {".snd", "audio/basic"}, + {".snp", "application/octet-stream"}, + {".spc", "application/x-pkcs7-certificates"}, + {".spl", "application/futuresplash"}, + {".spx", "audio/ogg"}, + {".src", "application/x-wais-source"}, + {".ssm", "application/streamingmedia"}, + {".sst", "application/vnd.ms-pki.certstore"}, + {".stl", "application/vnd.ms-pki.stl"}, + {".sv4cpio", "application/x-sv4cpio"}, + {".sv4crc", "application/x-sv4crc"}, + {".svg", "image/svg+xml"}, + {".svgz", "image/svg+xml"}, + {".swf", "application/x-shockwave-flash"}, + {".t", "application/x-troff"}, + {".tar", "application/x-tar"}, + {".tcl", "application/x-tcl"}, + {".tex", "application/x-tex"}, + {".texi", "application/x-texinfo"}, + {".texinfo", "application/x-texinfo"}, + {".tgz", "application/x-compressed"}, + {".thmx", "application/vnd.ms-officetheme"}, + {".thn", "application/octet-stream"}, + {".tif", "image/tiff"}, + {".tiff", "image/tiff"}, + {".toc", "application/octet-stream"}, + {".tr", "application/x-troff"}, + {".trm", "application/x-msterminal"}, + {".ts", "video/vnd.dlna.mpeg-tts"}, + {".tsv", "text/tab-separated-values"}, + {".ttc", "application/x-font-ttf"}, + {".ttf", "application/x-font-ttf"}, + {".tts", "video/vnd.dlna.mpeg-tts"}, + {".txt", "text/plain"}, + {".u32", "application/octet-stream"}, + {".uls", "text/iuls"}, + {".ustar", "application/x-ustar"}, + {".vbs", "text/vbscript"}, + {".vcf", "text/x-vcard"}, + {".vcs", "text/plain"}, + {".vdx", "application/vnd.ms-visio.viewer"}, + {".vml", "text/xml"}, + {".vsd", "application/vnd.visio"}, + {".vss", "application/vnd.visio"}, + {".vst", "application/vnd.visio"}, + {".vsto", "application/x-ms-vsto"}, + {".vsw", "application/vnd.visio"}, + {".vsx", "application/vnd.visio"}, + {".vtx", "application/vnd.visio"}, + {".wasm", "application/wasm"}, + {".wav", "audio/wav"}, + {".wax", "audio/x-ms-wax"}, + {".wbmp", "image/vnd.wap.wbmp"}, + {".wcm", "application/vnd.ms-works"}, + {".wdb", "application/vnd.ms-works"}, + {".webm", "video/webm"}, + {".webp", "image/webp"}, + {".wks", "application/vnd.ms-works"}, + {".wm", "video/x-ms-wm"}, + {".wma", "audio/x-ms-wma"}, + {".wmd", "application/x-ms-wmd"}, + {".wmf", "application/x-msmetafile"}, + {".wml", "text/vnd.wap.wml"}, + {".wmlc", "application/vnd.wap.wmlc"}, + {".wmls", "text/vnd.wap.wmlscript"}, + {".wmlsc", "application/vnd.wap.wmlscriptc"}, + {".wmp", "video/x-ms-wmp"}, + {".wmv", "video/x-ms-wmv"}, + {".wmx", "video/x-ms-wmx"}, + {".wmz", "application/x-ms-wmz"}, + {".woff", "application/font-woff"}, // https://www.w3.org/TR/WOFF/#appendix-b + {".woff2", "font/woff2"}, // https://www.w3.org/TR/WOFF2/#IMT + {".wps", "application/vnd.ms-works"}, + {".wri", "application/x-mswrite"}, + {".wrl", "x-world/x-vrml"}, + {".wrz", "x-world/x-vrml"}, + {".wsdl", "text/xml"}, + {".wtv", "video/x-ms-wtv"}, + {".wvx", "video/x-ms-wvx"}, + {".x", "application/directx"}, + {".xaf", "x-world/x-vrml"}, + {".xaml", "application/xaml+xml"}, + {".xap", "application/x-silverlight-app"}, + {".xbap", "application/x-ms-xbap"}, + {".xbm", "image/x-xbitmap"}, + {".xdr", "text/plain"}, + {".xht", "application/xhtml+xml"}, + {".xhtml", "application/xhtml+xml"}, + {".xla", "application/vnd.ms-excel"}, + {".xlam", "application/vnd.ms-excel.addin.macroEnabled.12"}, + {".xlc", "application/vnd.ms-excel"}, + {".xlm", "application/vnd.ms-excel"}, + {".xls", "application/vnd.ms-excel"}, + {".xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"}, + {".xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12"}, + {".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, + {".xlt", "application/vnd.ms-excel"}, + {".xltm", "application/vnd.ms-excel.template.macroEnabled.12"}, + {".xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"}, + {".xlw", "application/vnd.ms-excel"}, + {".xml", "text/xml"}, + {".xof", "x-world/x-vrml"}, + {".xpm", "image/x-xpixmap"}, + {".xps", "application/vnd.ms-xpsdocument"}, + {".xsd", "text/xml"}, + {".xsf", "text/xml"}, + {".xsl", "text/xml"}, + {".xslt", "text/xml"}, + {".xsn", "application/octet-stream"}, + {".xtp", "application/octet-stream"}, + {".xwd", "image/x-xwindowdump"}, + {".z", "application/x-compress"}, + {".zip", "application/x-zip-compressed"}, + }; + + /// + /// The cross reference table of file extensions and content-types. + /// + + /// + /// Given a file path, determine the MIME type + /// + /// A file path + /// The resulting MIME type + /// True if MIME type could be determined + public static bool TryGetKnownContentType(string path, out string contentType) + { + string extension = System.IO.Path.GetExtension(path); + if (extension == null) + { + contentType = null; + return false; + } + return _map.TryGetValue(extension, out contentType); + } + + public static string GetContentType(string path) + { + return TryGetKnownContentType(path, out var contentType) ? contentType : DEFAULT_CONTENT_TYPE; + } + } +} From 93e9a911cb8d1c444d8c1f2e1a8ed97c8023b2cf Mon Sep 17 00:00:00 2001 From: max Date: Fri, 9 Aug 2024 08:54:35 +0300 Subject: [PATCH 2/3] 1.14.0.4 --- sparkpost-net-core-compact.png | Bin 0 -> 11013 bytes sparkpost-net-core.png | Bin 15453 -> 15304 bytes src/SparkPost.Tests/SparkPost.Tests.csproj | 4 +- src/SparkPost/ITemplates.cs | 5 ++- src/SparkPost/SparkPost.csproj | 12 ++++- src/SparkPost/Templates.cs | 50 +++++++++++++++++++++ 6 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 sparkpost-net-core-compact.png diff --git a/sparkpost-net-core-compact.png b/sparkpost-net-core-compact.png new file mode 100644 index 0000000000000000000000000000000000000000..5c0f9696a57460e682b55633bcaf9931d1672d67 GIT binary patch literal 11013 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 VXd??+id!!$Ktokmr9=sh`#)s$T9^O; literal 0 HcmV?d00001 diff --git a/sparkpost-net-core.png b/sparkpost-net-core.png index 5a57454552dccae71c9561176ab3452d2350c8ec..f4340de05d083803fa2fa346ecb3bfa0570fb079 100644 GIT binary patch literal 15304 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 TEn*k@Zy`llHJNHD^DqAgphE!6 literal 15453 zcmd6O^;eY78#V?82uMpygOo_a0wS?=cM6D;#p8LM$nh`@cMmHm)w%fGcbe& ze|lBH9*WET@_y)-PKHa(^hgp|%OMLplWn|9jMuKh^zGr{wa)bNtc#&fme;6U~6sId>kE3T#oaI&HTEl;(UxZO{9&?gEK;xp@9h^gM z_x>w|sHTcTMPtBIKP;))S(&S!o6!AN{yb0Ei)toX7?x$st#}c!Ci-9XFTw#&mz?RK zMREg-|5bYu%7NNTM+kSTHk#M{-%87#@IPxDa9U{FH;VtY_Aqa5&;AQ&JW@Thg#5pv zV7^2)U!uuP`If)l;QvbgflW%x4WC0|O+*48%S_^?x@V~OW z&rXsricmu%n`h~37xxC0ZH9J|GAkRZz4y`K@$G(m{}Gi2(U)ks<;PxJXxf=H}D4nZw)#bGvV*W9Mz`jYPw{rY#EVx6;`R zo=tK5&@{9ch~uvPq4+bw5K*twVDXzy=BE&V1R|e$J>74fGem4JGeP|2VYckYLiCQH z%ewJ^cUuK)=vyZ_{J|)(tw7un-;dCK5+5SKAleA~jsL#Dhs0v$JCtN5NWaMZcHZ9W z;mk$f0OL;Aru4qId?pFa*2Pa^_T#(xC*V8EIDY>KQ4JCu+?ks=Z$Tq}U$1B;7c5V4 zYE6}fj5KyG;3|Z9aI*8%kolwmUwG0w#(GW%8eW6XF25T(#(s%!J2WD^fm7JU`@L(7 zaQ|DL!=z@ns(v4Q;>~n8FKfnQA}p*Va_+``9aD(wbOcXu2@lr(_gHP$+??ViDHhF5 z8QjzzbM6^?2crW|J)!}8+rKxpRXvoAI~jk#;zl(qI<3|19!iyLJ}qFlva8r=H+X!2QTkWOHPm12={z+-g?euy-zDxnKf?V z3{nwW4)&b`Amx8aN${2+{v)o~K4dG@#M-cfwT9>L*IFR1`I8c4G&H_K=IKV1)#|6* z53hJbeXoI6+Jbu=Idx`d)bOQ`=QXKoUFG5t`(-5e1zz%q0YxAv!hk-o5iUyQwAO(@e$3uqrF zV{s)vdx%e4+|c#<-r!fV9}bEzb*CRT>vr!Tu|(NnzUII*v;F>&oI+X54`ZlrSrf!c z=jDRUsVAjcxsSGe{UlKEdBE$_<_lGY5!sebpiPFi>mD0hfyL#)j3Iez?pW#cTo*T9 zMaPRXJ&5BQ6i2IUVMt)lbgnDYG9eZgnpzKTZu|)u5esKM_mio8fE8i0-?_a6!+7Ki zx4zq%Xg1z?03BuNg~#Y>t!qUB&L~)GW2?hm`D(+G1Qp|4x;a2LM}}3E?u05o|eJ6x2_Z=M%3$|F>~hrmuZl@2Q>Lg6_fl; zAEkZY)x+R(R#b4)Gid)@UZ1*OkG8 z-F)9TFr|+dZTWjSMkv2nyjx?_8X~h47Yoa#=JgbZmJ%hqoflOJ$=xe&<1u8?UdlT$ z3mI2+M3AW%}OS2-GZTin1`U|B2AtA*Ud9Eq{)ct!o<>07ig+&RF|A*whMDxJQA ze$l}nP!uaQ1UE}yVWk^LvAZO$U1xuE${KOhf7xJyl`kdRAXn{Gva1W;LMob)9UDqPZ`U?qPjliI~kBs|S|A$LgFY^qGIx1UBt} ztq|GJ!g7$xYOoCtmSUoSZx{B1-J+ztTz&=}guA(b*!Z!HI9e^UlnTIJ@jApy1=se2 z1|#`-sVm4_t+@wz#xn6)Ufb*5KPyakoHgjjzTCnUyjxF$Q3sKjZVFB=_)xWG54fHr zCO2r;ZDITKYBA?$beFVBH53DuEeo=Kg_Tq_VRn32P1+<#YtAj>^J?AUC(u!OS}p3w znls^!{L_G~y?pec%Qcr{Vh<^Yj3BXUM!Br8Aok8@cr~^keR*sUKj1BD+5NtntZfg^ z$g)4n&|Dxc!ivWdcW44wO#BoZ&Uk8eY!RH{2!3j%ekF+oD>Vu9rH9C6l4RH?Nvw=? zY+jdzvp4l+mKZ_t>>LnO=fSNn zXkyZ2Sp@4PNwScWgnc6axvhB4eibNQnpOuVxuB}SM003Y#!Lq&bPw6P=WlHS%GB}uzu3*J=z`^sLlb~;G4ZQ5?wj`IM8Qa0 zp2>;QGGBbWl^Dtg4?9lMD=D;)`bc2y$;M+U)2f?AzH}KODbZ))R==7&z!An?lk4P# zl2Z)iuD`UcCShB|be&)V8c9-niOYaZsATEP_Gyz1dhe^HGa<40f-||wrK&{hO|BKm z)I8cQYs^@a>|E#ZADf{p)U{uCXQvIj!g%tenm^N=UmTNyb!f>8thbWOP09W5higm; zAg(8ZH93~Uk#6$!qqcQPbDO?BXokWu82x3)Rn$v1{@U`7;J)?%lV8mm_G>>L2Fb8S z#;|T;Hde{O)HVGp`mePNsya)zA__g66~;=6A5)Dfv9qd;_S{0>H<;D;tQLjU&&q>5 zZe2?Rr+ck}cA7V^w=_vZMzxhTk6dRMf#|H_EI?KqS42MLLwQ_#=8yIHCyHC^+nJldeW0`a?aRz?dRC zp0>%4j(!a?F+EGh0LscT<${uRCsI$?bFdHBUQyFblm+ivNg|ffd$yZknLnZhXu+x6iY zc6+Bu(YHT5TrpifQO=h3Z6o`@)`9Fb-MJ5BvGFv&K3X(Zn8>S!&Y8dxZ1_6H$I=t} zU080-jX&;VSaS`UXh6u0NOE)dd2}b0tF(!{(7cUg+Z#SU9z;2Q%5jxX$MVX0czC#= z-Oquyll$?I@l9c3M2~AeVtjQ%2*2F(r_W2$LHojYb0}w8pAqmOc0TiW)Ev1Qcbzrid!8WK|=$oCGaJ*i|7u zgv=4le_Y*>dA90H-}vZFY>EewKSkU&K&g)7Qkgs~TL8*#`5{CfGTd?EW@bvIp?&Cmg4JXaq*5#}EFZ<*IIC_Y7#cg>=0_~QC^?0RpJYxbNad$X?{>;>xXZCl?LNeQfv8wImMo;_pfB~v+R zR#B-=WRksa0eu$+J7d_B4v{dnF5Bc{4s5XJhEq@&_*o7}W|ld)tl_?}rm7-B{hm~q z&^q1m>5n)u=KohkCAT>~)0xT5dTuMq&3vEWvd;K#mHspaxzMY3-sGgBR5>|QZBGu7 zWoaw7{oRBKFUX;r%OB57{EU`Iy5fyC1{Ed9aH7OldD~9D+l5%3kI*^yBvSI8bOrdL zZbQZ{zqYhwUqC*w!wtK%Vg5jGOl|&1{QemSlI}O054M|(ScA+jnoFT4pC3-`muep} zRT4x(a5l?K`qDDr2j9HUwC5I|J5ek(MfSrpcalOGeTJeyeW62nEW6hHi)w2 z6QYH($u^4?l6~<{mvOMxOcA>8-hP{s*ee>N^twG;w3rI230cqCuBG}et}NRGCM&no zw3gp4CwzE1BeA&dyB8jEay%|}zXYa;<2Of!Kb@ALNGg8DOb&3F_g`;>KbyJzUg|HP zc5p<5A_Dusq1pil2bqnUNj$wq{p=Mg+Y6=A?N5u_A=ljwzPA!pyZNB(%eKyg$r8|- zoqaH)Ug?r$W-0F?2`TAy;M|Ks0TTcBbf)&Uw7S_1PszZc5BMe3A`ZP5e5T0dyS+-5 ztN07EJNBjN&#o>yL=8XXlt5h~#^ zPb6ZZ;mY^4tLfO;e08v}2#9DNU08Ag$8qeIy@pWVV9KwKBL zrXGh0oE(1g;cr+nk_bJXTnzR<+@unV>*b5%Cjnzy3CZ9czm$LMezi4e`Ixz1N z*PhGouZ)!spWVEu{E@g#N)P9B*F-R&mf&>TBcWb5oL+u&+~-P5gp`J=p%D6nzK>!9 zj3H7joZLVJ$Q+!do>-Z}YrC8|b0DU(Gb~MQE7d#v!~V*5)j2KFjFSInp|aYqv=J9t zdboF#Ic?54EV!;+td~KP#1u!bMVJsA+Mo}kEtq(xDY3jxB_!*$CExa^9xt2=R2YSH zn~NK7)ZcM&Me5${j z#Ol(M805*&PfW+rmMzlIISjq-qRR1a3>3&i)TY7KYtTPZu~d5t_1Vg+yNFBBWi)BPReg||gnm<^=W zaAb;1tgpvAmQyFM=*ynI0<+-v+m|J_8+eShNBQJ?M1ycW>Nb_w3oV3i8-kbCmkb^$ z-r!bk7$oloAAy|aJGe4)BKhoWFdo^0ytcj_w?4U3Rgq*{O$6~E=`kHjn!gbbAta9u zdFe8*a~^%PI^owng#vS}Db7tMVi~AEajc zYVj|WUn3=$50afo*jN8?z)P}YY5bK*R7tvH=78-JiZD*T=x#Kd0nPM?d(=0sdPyz7Uq6C*4b_)U%WWE-8}E9 z0QG61gh{}^E{hfW`IwvIwe^c>Z6$1~f+c^_54g0|r$&dO^4fRCM{>U)Wr?>wFz$T)#qh` zEtku3VpBV9&Mn&dOIfgsueA3TJ%c@N$P}W5$PMaDlS!KjMMy&}+o}kwlJSaXbLiPm z&Tzz0OQnhLo!GL<;-S-wpux*oG!SC%lP;o&z~LqpGh;{k%Axf?%JD=R5;AI%$Wzqpl)G9F?^i68OdE zf7mNqTNQ;$(MtE@o#fKl+q7tfoyI?T2}i$gc3#A-=c}xal%s`Yr-R_f$9XPd!|vbt z%na^9Mqd`OTN4@tftw$0a=w8QbLr1-N7q^$+bC-~NMNHY_1H!;g z&sW%EJa{|MHZw19kZnVSZGoc*Wh%1p!c{e6Syk5c*S2|3HE~ET8@zeK1{Ai`pBltN zQb9Sc%|cs8$yA4YS+m^qcB~9 z)h38gpxZH@o;%_k2Yd^5;lJF%WmuOVqJEm+UT!^5)bj9$BB5ZS4WsU>E|>d0yUo)nC0b-#Uo)va-^09N6I!-M#Weu3A1J+HzE`Cx7m*7wq(FkFTV`pD8KWQeYBevoIk+-%*)m$HugN=UvM%6h#TM}m8{C8OE$+{}6Y|<@Y0@Jo^f55-FGf5*=J{^-nC!oVlQ3TN#uDs^Y@D7U ztV`o?MFaY`Uno7)jQ5#H5jiJsCkU64O4D7!_{#3L0Xk*xy6fB^~M;wZ<*=*>}-@xk2i$uh-l<)81NF zn?5E)C#E_2#GKYG60v|8;W#b)+v7xN^6moCOY5-L=}KlC zN{%f`+n2YTvg+wo_C`Nh@|h=+238}5dpFwNYR55#3YPq6`F;J`kR4-q^QTMOpFq4R z(~e$?LWQP_19nnp@rU4GS)+%f{ddXOQ&zZOHvDH+58}S`)_AA}AY!ZmaW;4`Eu&j$Io#3taD_b4OME>6V z+T3f4Yz&KkOWn@9SMsaElNcO2M1W)zLyVmtKWdgdH}XJaYeJq0e469b(}@wzja4Q0 znOn#4BKD>52MK-;^LfEz&Z~Wp&8AU3A*BY%Zu@tIs^EO8qY7)_5{iE_xe)I>ZfVZB zeJqkzf|d{YL)tlW@x*PF49v1#%xqQg#pd2XpIw#6JF4%&SsrP5PVgbQ=szOV)F%SN zlVi+sx=T zU;Ss){N@|0t~K2Uil*bv&NVA|PG8#6Iu~3w=$j=Rp$=?nwD0$0zAdFaiBFQll?h=) znq8HGH?_VZ?g(*0FRJZ8xq*=wfXU>G+DxS0X{t&0(%swqeL{g$BQAJM1YrKA8s~!6 zp?%2blK@OS+_dDa?ykY!jPH@Mr->=*@YBr zq&TGr*zk_}8(W2TuKm{F;o0zK$!NSk$IrpLIBR%{(|$unzQY1dddI&kD?FjIH9Ll#+?Xg$JoWlH&jW<2V+|3C zkuTw`olcUDvY;@=KHDp_Kc4SE-a%Sl5?QsdVCPcWc2H7|uwfruC$m(HJ{#a_v<{wO zY&j9*F!#!0-HLQMCCE|#{sxuojNbQx!my=tR_PGy2hpy#Iz+3W-&OoZgCVy~d$ltM zHK+ap7J~xq8)IXQ7>1nY#ht!m+X*IkLm?Nuich&vzduiti3afWeFL~QhiVxorq-?1 zY~Lb_$10ke>KO8#O&6xuk8@pIr3*KB==_PFTG8(=!Wbvr@s>Z!_c0lh~L})TCv3i zlO|@hJQi2^<-gN)pB6Ogx==5SaF`WjmkURK88Ox`fDoK4R#g?bFQ!r1n%U&dy;j@4 zkn`t5y_WnY++ZOd$Yez^CDN0jK^)?jF?Mf&TydR9V7g0hz>^$&z02AVVwpmqBlOS# ze722BzV0rVGTQ{a%R?e`CtaU=zUcELrk`n!6!efC3nJ;QbcKt>4I*o_XY^CU%lF40 z{5IPS9(kZ0H)KB`7TWYm9HjV5t7~^M2khT-E}68yvSo$SuU;2KWLF3ef97XC$W3!& zKl;4+u`5P`gL5?Ng;Xb5yP=uDzx-9HYJ|cm3uSvG$l!i+LK<4XdsE;H)dk^3CXf71B;+Znp}p7k{+eowVF0wWPkhvDoIDx8IJ z$KS@R+#W)%WH&_z-8i7lZ-+M_{AcI2ePghZhfmRyYyf5Bsfr?gflb4Kp}03gNGrJ! zozQ!xTH=xxY(QVOcCmU1t#W-K;7<*RuL7YB#+q%uC|D_~-+jBQIM$`W!c{!AB8oQO*H| zAGNw)P>KiVI=Z?4{Ubl*dmB!% zfX4oM(d9Il{8s5g6rhRn+8`i zuks5obx~G<4LL7$aD2swx#*n7#aVN&*(_*W!XLqS?a# zoT_>nhg4lxT};Sj3hopHG=ws?_v%Tw?3xwl3Xj*T)}5kqg;g~+(V>>$RA=*qUk`~; z75Q=(UkHxA%7#GV{9Y@OV{@oQ3J-ht>v56wv`0-V%~U-lDSf}6H9QLXwqZ~x$CE}9 zAPh@e-Qm(RTs=1|s*1mA=Phxkj|38-;1E5ZhrE~CA878#eiCrwK3S9-6KJOF!cZDcHRJft2pDX9gG<#SMzg9Uyne!fupX z(DZfWVzelBi4<%r7A8_|(v{tDYvM-ZIH+vIyKMJGeLIxL-9gN*F1z5MV+w)!4rz??{6O>Ate!<^@v z(anRN!r^zLCke>PapZfJ(WRgA$qc22Hz ziHAva0P@Xniq+Rj%e!r(?QoWd+|lM}R$Z#~>e|}K{}IFpAC^&4+GENj#*wnQwV9WTxMYy5iE$k!x{<~Jv7O=s(}H?hHtjTx~yxrQ;)*m1HV zJEL}Vg@<4?Gq24k2cbDOMsBt+DK*B3*=mGD5cS66H5r7-W)rM%j{gpo$W$nJM6nC7 z^dZ#FEE7|BG)F}fAt}p^&<#u#)$UlO>0)}(y_-|cnb*~bdq5r(ZLnahHCXRlNo0_f zJyVJgRii!r$LV3=Sk3f0&Htokr+CE9Ud4+_OVR#^lq}NT=$&+764iWcTGQv@bGulj zijGV3-t1$uKi%pK@S+`AyV2ywR+>eAWy$tWos33Fz)n!Wb`)(bGJR+)NP!glGrjS_ z%1iUhIFn>OIiuY#cN0UT{JZ&IWEB@bt0v;26B&{4T4Sz5hm~C+f#!>6)RhZJl%I_b z%@&+0MqnoTuYX@jCd`0ArsV|lln0?qJrUNt^8KF)9?jXGx+n={9kxc+-N%rDwDCg! zI6@$_tY9?6XKcGi8H%wDn?}nwHp_<|GJl+>>Dx>X6oz$|KZB#G{fHfsk^w9&!128o z0SntUe@VhBsi(9}Jp5*dRizGIKaJ z7>2xP9ae^GWz1X}mS}XJRWgQSw!_1VT4c3q^k_W~M`-Y?iG*p}qjbM0(R&2ikZ{EA zJS6f>c-}*VZ84HiD!viQ7?qTCuBI>*c?_o&-?@!Bn0QA6If@sMz=5U|xRQEBE_EP< zHA`uT%a1`7aw5dl(ctI~AT4n1&p6z6p2s9HPs1N2z4~jq1fzQjliLOix?Kt_eDH_D zATxk7iXqC27Eo2yU0VEN=kHxncuu|VALZ!0t05shKZg&J9u0kHZJG${$PjiuRjv2b zvpJ+Qy6|sn2|7Dfpl*cO(8IqA?U&zwTG>>5<(~LkgFWtqvnSe8!_yf4G0bIq)S;;@1)yv=- zFkp9OnTqx1kIy8c^Lt*Cg2&3^BM0%c4z}zIt2_c=tmHAzvvUk!TKA3AN^>x}CyP+> zOA+;h?Bpl4dX8D|tpb|b2zVgOddu!u&fqDv zIs|k!Go`FwI~zqMBzOc;x-EY-S>QP{6_Q60|BxX@ZO@#V7);hX``b_`Ri&G6evbyb zOqGfoBGf^O@%dHhq@x=0S-OzOljrz4Q$Px=(7jQTF0oymFKzcLr+S%hmXv-zWR}ID zZAeRRI!SYgJmi76*L2B0E;9$nQLOE`*@t>=mL4(2i`F;((d0Y9oW79WlU@TF0`CV~{AwGDh)TBPeC+lGQQNWRKQV$smBz#TaDVtN;{q;c*Lrzw( zB&3Raxrm^+W_T;p0>gtTLUqX-U9fv1Nx~Tam?qq^HE~PGqd^`(dbP$?`#N+J8bq{y zETY>Q%&1}AQo|QhNsME)^Bqv4{PvyaSv8@lN$BIs14x=lOY(Bzf<58msNvo3b&nl$ zq4gVS?0%pb`-{0!66TFnSvw1KqWo)HP(m9-=I0NQI|)iC8SgyXnl}6Ct|s#-!r%4n z=wYHy*2y`!B_1G_Qad`%Sq`5Zh}n(?$M0aCbL9J zN)`cDPH4?btyN)|d}g=}HoWO6FLcZp?$4Y_Hv++j^2cO4h~EVTaaXF(~({ z_bko8a^+Hrku`H_kbasurGnA=I$W2)s^A6+VQf5a=`~20R`+r$46ugBFO=!kP112Y zgpUKM&W5+b)ZQ+kLiZav34-a6ED!9h)$USa63GQJ3h`YS9s=^NKrF5MJ9THrJP zWh3&8Y_w7Mr0aCqA=#q~pn?z5QZJYB798UAN+;LiJBpLtyC0v>#Y(0%%GrpE7r@Y3 zv<@G^hdyRQ?+`#{>o*WoRWe)`RFk(J!+k{Vs`_;Rpd{18o<|2(`VR32h|cOm38LuQ)=ZjQ?(j&n%Gi z$v7~T{v$`^4$wMsz&=`{XIRp1QJ*+xL}zKWg~Q30w5<{cuzA zm7O>4{!j(Y=9e#%&XNMXp_^np=+18Lf5kybGeZIX0P%2DPc*?4u!cRNM2(alH)A6y z`?}aYYDgVYRnFG3jm}{u;0m9VO^#}1ZT23#!N(|&_w)A;~-CaHYp}RPK&P3e& z(pH#}k)n8q%;4`EUq0sYQ*V(9uE=kzC=+SinNi`@MPP~o6qXE_;Ja#9!^V^K3?;gH z2_(Jo1Y2TkyEkq>uQmp;oqfUkZs-`)nSq0Y5@gG%=2Gjizf4=Qm)iO~5~Lw5WI}17 zqnRg6h$1Vxa!WbZ&(Way)(RIg`}%#3HuITDThx2H3J0bEoDcJsw0YY!f2+(~AV;)$ zP9ziF4tHl|fN0qU*a?sk4nNv_@+$dnigX+3T4U^b;t5}x+CA(`r7r0h6e74g_ncqc zkfalb9UY(=RPxEVO!1_`%xr`&2LDL!n4)ZYpzmPPzUSrV2j2<9Fu!iS*;>vz#SYRN zfB8$ef3AIc5VNke{M7^QaeG-1&VI-1*ZYy5O|s^&J5T)C-m?9{E=o8p7+-mT&JZXGrUQMK#qVxCko67@WM~tz_duaJig5>@TXrS`i20vK` z3=l@90E*FOT?g~sbHB>daeK{AW|^l$>Oze{CRsY-{y@w{09alA#D3f#mxiNFb;!Fa ze$8jQd?xd?r(eA2d$T;$)UUh^mHF(qa84PLu8UIqmERK33NNQI)?ZXc9CS9-Qi)rS z*O4CZPl<1@kJZID{) zerHC<&Gesi@mlC+dV6T^=RxYX?rA?)3#b5}!po*5}!%jFlfb zIab$njXMVn*q2xXq1E%FmNI6lv7<9CCWe}SqO&28TmP?$$nZe9dXj4S#-q1#t-a#AuDVzACq=)(!n9`35)XSq?CX|b zQGSm^{+qP6@|v2HQb3NS8yYWH+s3<|)&82#?2_r%e7D+y5yu4euc%t5DXxK%Gi6_g z$@@@rXZyh~QmVQ8^)55CP?`Q`EvrZ&496+2EjPxICDF{UNy_x1-wryh)HCPDvt`WA z^Ru?Ygj)d)T)#?pw-jepkg8h2CGP9+JA$iJO+h#C7l?OLit&cnVx zRYL-+hk`N03%UntA1L;A1Y*ptxeKS7&Vi3e%&8Eirs->FPUDu7UY)4SHpTy)$kK&IPO$O!EDm z8R9JUtCl5}6&L!aAvXtX@B6d3az3@>ID{x1xnW~r^*sVaj<|_W=I^N2vY#mFPKG{& z@mdAzY25ZiU@8?LXaAeMU(3mzBl||pN}1x7A@ziJc^4Pt4-=O$$TD>!ZRBhusW{?c zzfgSNO~1*FHVPckwqIO^_bJFw?~C-WzSol7r(^#>LMPf|F&DxIW|h@|Cv<@do0ZcU38eKAT>`r3}mR z$@TvCTk7nA=&hwH>|Sh_tc>; zq5d%1N~h7>)ge3gtr)}jE1e^^yL%*GK7R2iS+Zh6Fgkw(sSlQ;gP%Y?pxp9W>7%lA zdZl-h+m1ns?T38_cso#dMqqu=tk_U$Zji1T!3NCm{@)PGzv#rzVUDp~mH{cnCuP-B zkYPLLXM{d@cgWKzhRRxDsE%trahTrmGeY#_OV3!Us1I;mj*)jielJ=p#z}kW=t(s0 zjqchk;$ZBuSK+Wh$sr+TVlzQ6w?P_PK%s}d4U+cD0nB%q|>DFXdU zVVeE;>N>Zud<`@-K>&OXD~V8<(x|L1aTzjR$K%+!tKF;=3({88f6tAOSGdQ&H|Wk3Kz%#4VwN_MxQzc<_D+i3KJ-R3mjNn-w=DFsc@#x9`Lv^Y z2180$6o(Q&ZuXKlvb`LQ1Q*tiMt#TTy+iQ)Ywg4kGUzzBTC9Zj^Tb(wW?MOZe$Z$A zfv%l^S0rlL$i?{X&ja*Q-YMe!*PiPUWfour&1djfL8?V-_os>do%z8$E~kdgQOTF) zbr#T1lj}d_xc03{hBbe@`^I3ntvrtEfv^WUVdWc~R7|$VQVSn&VO9rg^Yk6s z(^5y(_wVYxJ@6z04CdA56+Q+fi>s@JuQ)aW{t7ZwW|oe5EpvC(>5FHEIrzu)^mL0v znjrMMO}*X5AHLP0kKBc|Ns87iQj~XQ^<3?&q~d1FKVkxJOVszrU8P0Z8vK}FC_DF} zt*MV^W-?}gx*T{S-VdKO25vuLjWBjKGG7g?&cysG04IVFjXC3tS~6yU#2I+#_xn9u z^VXnNYggO=_goViUzkh#RU83alS1V5g{8`x0Uic;2+fB*@k5q|vcNoaT6?O9J7xTT z4N4DW^%=WQPUoK8WM^kC1UKXVSHI4tb61`h3Ql?{)1#w>@U2A@_BAiIT*s8X zxV!F$74nd{W1+0B%sl6KkGd8_OT?w8A~>Beaf0-jecc6I*jbyPy{q?@_v^vg&-oEA zKu2A$Ok_3Pg@v?<;EkFxAgrXP@qRm;`6GJBG^vMuoagNKThKmQMt3Xapj5)`ihCXsUD zHUmi7kTaz|vPheIK&tGbJ6LaliS$A-sxjWRn8acV1?5T6PLxhVx9`+5qoqFeN>$;^ znk4Q8utv7Sz8=|@w7Z&ENlPk3z6O7rP=q3Uv}{}2^%_-??OuQoeNt#GZG$y|)8IgC zsFeP$>K8}AE3z zKQo_CH(W)-d7laYZk6CSYUCvWa|{}ZFv+; z<-R+wk{M3({tgzF#n-1}P6jDd!rx8ayjQKIKUIaz#XNY!8(98>(~)A<2fe)Lle^He zmAYHam3D-9q^lmBk|mjJqP7A@U&LNXGHZD6e6@v+ zF_PWdV_2!4f#KBky<*@)IByB&b$V(>GL?t!8dZ>0 Ll_`1m{@ecnLJLBi diff --git a/src/SparkPost.Tests/SparkPost.Tests.csproj b/src/SparkPost.Tests/SparkPost.Tests.csproj index f063400d..95dea2a8 100644 --- a/src/SparkPost.Tests/SparkPost.Tests.csproj +++ b/src/SparkPost.Tests/SparkPost.Tests.csproj @@ -10,11 +10,11 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/SparkPost/ITemplates.cs b/src/SparkPost/ITemplates.cs index c3cf8302..a5d5a852 100644 --- a/src/SparkPost/ITemplates.cs +++ b/src/SparkPost/ITemplates.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Collections.Generic; +using System.Threading.Tasks; namespace SparkPost { @@ -25,5 +26,7 @@ public interface ITemplates Task List(); Task Delete(string templateId); + + Task Preview(string templateId, IDictionary substitutionData, bool? draft = null); } } diff --git a/src/SparkPost/SparkPost.csproj b/src/SparkPost/SparkPost.csproj index 55d6fdb4..92b58f12 100644 --- a/src/SparkPost/SparkPost.csproj +++ b/src/SparkPost/SparkPost.csproj @@ -5,13 +5,16 @@ Library - 1.14.0 + 1.14.0.4 true SparkPost.NetCore Lean Sparkpost API client port to .net standard 2.0 Apache-2.0 https://github.com/maxlego/csharp-sparkpost https://github.com/maxlego/csharp-sparkpost + sparkpost-net-core-compact.png + + Added template preview functionality @@ -23,4 +26,11 @@ + + + True + + + + diff --git a/src/SparkPost/Templates.cs b/src/SparkPost/Templates.cs index 735d5745..2e2d4bf8 100644 --- a/src/SparkPost/Templates.cs +++ b/src/SparkPost/Templates.cs @@ -4,6 +4,7 @@ using System.Reflection; using Newtonsoft.Json; using SparkPost.RequestSenders; +using SparkPost.Utilities; namespace SparkPost { @@ -136,5 +137,54 @@ public async Task Delete(string templateId) var response = await requestSender.Send(request); return response.StatusCode == HttpStatusCode.OK; } + + public async Task Preview(string templateId, IDictionary substitutionData, bool? draft = null) + { + var transmission = new Transmission + { + SubstitutionData = substitutionData + }; + + var url = $"api/{client.Version}/templates/{templateId}/preview"; + if (draft.HasValue) + { + url += $"?draft={draft.ToString().ToLower()}"; + } + + var request = new Request + { + Url = url, + Method = "POST", + Data = dataMapper.ToDictionary(transmission) + }; + + var response = await requestSender.Send(request); + if (response.StatusCode != HttpStatusCode.OK) throw new ResponseException(response); + + var results = Jsonification.DeserializeObject(response.Content).results; + + Dictionary Headers = new Dictionary(); + if (results.headers != null) + { + foreach (var property in results.headers.GetType().GetProperties()) + { + Headers[property.Name] = (string)property.GetValue(results.headers); + } + } + + return new TemplateContent + { + From = new Address + { + Email = results.from.email, + Name = results.from.name + }, + Subject = results.subject, + ReplyTo = results.reply_to ?? null, + Text = results.text ?? null, + Html = results.html ?? null, + Headers = Headers + }; + } } } From 15527fd89a7c5e13af12d8f00661815b1d9fdfb8 Mon Sep 17 00:00:00 2001 From: max Date: Fri, 9 Aug 2024 09:27:59 +0300 Subject: [PATCH 3/3] 1.14.0.5 --- sparkpost-net-core.png | Bin 15304 -> 11013 bytes src/SparkPost/SparkPost.csproj | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sparkpost-net-core.png b/sparkpost-net-core.png index f4340de05d083803fa2fa346ecb3bfa0570fb079..5c0f9696a57460e682b55633bcaf9931d1672d67 100644 GIT binary patch literal 11013 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 VXd??+id!!$Ktokmr9=sh`#)s$T9^O; literal 15304 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 TEn*k@Zy`llHJNHD^DqAgphE!6 diff --git a/src/SparkPost/SparkPost.csproj b/src/SparkPost/SparkPost.csproj index 92b58f12..220f44c6 100644 --- a/src/SparkPost/SparkPost.csproj +++ b/src/SparkPost/SparkPost.csproj @@ -1,18 +1,18 @@ - + netstandard2.0 Library - 1.14.0.4 + 1.14.0.5 true SparkPost.NetCore Lean Sparkpost API client port to .net standard 2.0 Apache-2.0 https://github.com/maxlego/csharp-sparkpost https://github.com/maxlego/csharp-sparkpost - sparkpost-net-core-compact.png + sparkpost-net-core.png Added template preview functionality @@ -27,7 +27,7 @@ - + True