public Task <string> SerializeImageAsync(JToken input, SanityOptions options) { var asset = input["asset"]; var imageRef = asset?["_ref"]?.ToString(); if (asset == null || imageRef == null) { return(Task.FromResult("")); } var parameters = new StringBuilder(); if (input["query"] != null) { parameters.Append($"?{(string)input["query"]}"); } //build url var imageParts = imageRef.Split('-'); var url = new StringBuilder(); url.Append("https://cdn.sanity.io/"); url.Append(imageParts[0] + "s/"); // images/ url.Append(options.ProjectId + "/"); // projectid/ url.Append(options.Dataset + "/"); // dataset/ url.Append(imageParts[1] + "-"); // asset id- url.Append(imageParts[2] + "."); // dimensions. url.Append(imageParts[3]); // file extension url.Append(parameters.ToString()); // ?crop etc.. return(Task.FromResult($"<figure><img src=\"{url}\"/></figure>")); }
public SanityHtmlBuilder(SanityOptions options, Dictionary <string, Func <JToken, SanityOptions, Task <string> > > customSerializers = null, JsonSerializerSettings serializerSettings = null, SanityHtmlBuilderOptions htmlBuilderOptions = null) { _options = options; SerializerSettings = serializerSettings ?? new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver(), NullValueHandling = NullValueHandling.Ignore, Converters = new List <JsonConverter> { new SanityReferenceTypeConverter() } }; if (customSerializers != null) { InitSerializers(customSerializers); } else { InitSerializers(); } if (htmlBuilderOptions != null) { _htmlBuilderOptions = htmlBuilderOptions; } else { _htmlBuilderOptions = new SanityHtmlBuilderOptions(); } }
public Task <string> SerializeTableAsync(JToken input, SanityOptions options) { var html = ""; return(Task.FromResult(html)); }
public static string GetImageURL(SanityImage source, SanityOptions options) { if (source == null || source.Asset == null) { return(null); } //build url var imageParts = source.Asset.Ref.Split('-'); var url = new StringBuilder(); url.Append("https://cdn.sanity.io/"); url.Append(imageParts[0] + "s/"); // images/ url.Append(options.ProjectId + "/"); // projectid/ url.Append(options.Dataset + "/"); // dataset/ url.Append(imageParts[1] + "-"); // asset id- url.Append(imageParts[2] + "."); // dimensions. url.Append(imageParts[3]); // file extension return(url.ToString()); }
// Sanity Default Serializers public Task <string> SerializeDefaultBlockAsync(JToken input, SanityOptions sanity) { var text = new StringBuilder(); var listStart = new StringBuilder(); var listEnd = new StringBuilder(); var listItemStart = new StringBuilder(); var listItemEnd = new StringBuilder(); var text2 = new StringBuilder(); // get style var tag = ""; if (input["style"]?.ToString() == "normal") { tag = "p"; } else { //default to span tag = input["style"]?.ToString() ?? "span"; } // get markdefs var markDefs = input["markDefs"]; var isList = input["listItem"]?.ToString(); if (input["listItem"]?.ToString() == "bullet") { listItemEnd.Append("</li>"); // unordered <ul> for (var i = 0; i < ((int?)input["level"]).GetValueOrDefault(0) - 1; i++) { listItemStart.Append("<ul>"); listItemEnd.Append("</ul>"); } listItemStart.Append("<li>"); //check if first or last in list if (input["firstItem"] != null) { if ((bool)input["firstItem"] == true) { listStart.Append("<ul>"); } } if (input["lastItem"] != null) { if ((bool)input["lastItem"] == true) { listEnd.Append("</ul>"); } } } if (input["listItem"]?.ToString() == "number") { listItemEnd.Append("</li>"); // ordered <ol> for (var i = 0; i < ((int?)input["level"]).GetValueOrDefault(0) - 1; i++) { listItemStart.Append("<ol>"); listItemEnd.Append("</ol>"); } listItemStart.Append("<li>"); //check if first or last in list if (((bool?)input["firstItem"]) == true) { listStart.Append("<ol>"); } if (((bool?)input["lastItem"]) == true) { listEnd.Append("</ol>"); } } // iterate through children and apply marks and add to text foreach (var child in input["children"]) { var start = new StringBuilder(); var end = new StringBuilder(); if (child["marks"] != null && child["marks"].HasValues) { foreach (var mark in child["marks"]) { var sMark = mark?.ToString(); var markDef = markDefs?.FirstOrDefault(m => m["_key"]?.ToString() == sMark); if (markDef != null) { if (markDef["_type"]?.ToString() == "link") { start.Append($"<a target=\"_blank\" href=\"{markDef["href"]?.ToString()}\">"); end.Append("</a>"); } else { // Mark not supported.... } } else { // Default start.Append($"<{mark}>"); end.Append($"</{mark}>"); } } } text.Append(start.ToString() + child["text"] + end.ToString()); } return(Task.FromResult($"{listStart}{listItemStart}<{tag}>{text}</{tag}>{listItemEnd}{listEnd}")); //return listStart + listItemStart + "<" + tag + ">" + text + "</" + tag + ">" + listItemEnd + listEnd; }
public SanityRouteValueTransformer(IOptions <SanityOptions> options, ISanityTemplateResolver templateResolver) { _options = options.Value; _templateResolver = templateResolver; }
internal SanityBlockSerializer(SanityOptions options, IImageService imgservice) { _imgService = imgservice; _opts = options; }
public static SanityDataContext UseSanityBlockSerializer(this SanityDataContext sanity, SanityOptions options, IImageService imageSvc) { var serializer = new SanityBlockSerializer(options, imageSvc); serializer.Initialize(sanity); return(sanity); }