/// <summary> /// Method to convert a property value to an instance /// of the ColorPalette class. /// </summary> /// <param name="propertyType">The current published property /// type to convert.</param> /// <param name="source">The original property data.</param> /// <param name="preview">True if in preview mode.</param> /// <returns>An instance of the ColorPalette class.</returns> public override object ConvertDataToSource(PublishedPropertyType propertyType, object source, bool preview) { if (source == null) return null; if (UmbracoContext.Current == null) return null; var retval = new ColorPalette(); var palette = JsonConvert.DeserializeObject<ColorPalette>(source.ToString()); if (palette == null || palette.Colors.Count < 0) return retval; var colors = new List<Color>(); foreach (var color in palette.Colors) { colors.Add(color); } retval.Name = palette.Name; retval.Alias = palette.Alias; retval.Colors = colors; return retval; }
/// <summary> /// Get palette from COLOURLovers /// </summary> /// <param name="id">Palette id</param> /// <returns></returns> public string GetColourLoversPalette(int id) { // example to get a palette from COLOURLovers: http://www.colourlovers.com/api/palette/1367601 XmlDocument doc = new XmlDocument(); HttpWebRequest r = (HttpWebRequest)HttpWebRequest.Create("http://www.colourlovers.com/api/palette/" + id); r.Method = "POST"; string bodyRequest = ""; using (Stream writeStream = r.GetRequestStream()) { UTF8Encoding encoding = new UTF8Encoding(); byte[] bytes = encoding.GetBytes(bodyRequest); writeStream.Write(bytes, 0, bytes.Length); } try { using (HttpWebResponse response = (HttpWebResponse)r.GetResponse()) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { doc.Load(readStream); } } } XmlNodeList xmllist = doc.SelectNodes("//palettes"); ColorPalette palette = new ColorPalette(); List<Color> colorlist = new List<Color>(); foreach (XmlNode i in xmllist) { XmlNode xmldetail = i.SelectSingleNode("palette[id='" + id + "']"); // 1367601 if (xmldetail != null) { string title = xmldetail.SelectSingleNode("title").InnerText; palette.Name = title; palette.Alias = title.ToLower().Replace(" ", "-"); XmlNode xmlColors = xmldetail.SelectSingleNode("colors"); foreach (XmlNode hex in xmlColors) { Color color = new Color(); color.Code = "#" + hex.InnerText; colorlist.Add(color); } palette.Colors = colorlist; } } var jsonSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; return JsonConvert.SerializeObject(palette, jsonSettings); } catch (WebException ex) { //Handle exception } return ""; }
/// <summary> /// Get palette from Kuler /// </summary> /// <param name="id">Theme id</param> /// <returns></returns> public string GetKulerPalette(int id) { // example to get a palette from Kuler: http://kuler-api.adobe.com/rss/search.cfm?searchQuery=themeID:1367601&key=[key] string queryVariable = "themeID:" + id; XmlDocument doc = new XmlDocument(); HttpWebRequest r = (HttpWebRequest)HttpWebRequest.Create("http://kuler-api.adobe.com/rss/search.cfm?searchQuery=" + queryVariable + "&key=[key]"); //r.Method = "POST"; //string bodyRequest = ""; //using (Stream writeStream = r.GetRequestStream()) //{ // UTF8Encoding encoding = new UTF8Encoding(); // byte[] bytes = encoding.GetBytes(bodyRequest); // writeStream.Write(bytes, 0, bytes.Length); //} try { using (HttpWebResponse response = (HttpWebResponse)r.GetResponse()) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) { doc.Load(readStream); } } } XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("kuler", "http://kuler.adobe.com/kuler/API/rss/"); XmlNodeList xmllist = doc.SelectNodes("rss/channel/item", nsmgr); ColorPalette palette = new ColorPalette(); List<Color> colorlist = new List<Color>(); foreach (XmlNode i in xmllist) { XmlNode xmldetail = i.SelectSingleNode("kuler:themeItem[kuler:themeID='" + id + "']", nsmgr); // 1367601 if (xmldetail != null) { string title = xmldetail.SelectSingleNode("kuler:themeTitle", nsmgr).InnerText; palette.Name = title; palette.Alias = title.ToLower().Replace(" ", "-"); XmlNodeList xmlColors = xmldetail.SelectNodes("kuler:themeSwatches/kuler:swatch/kuler:swatchHexColor", nsmgr); foreach (XmlNode hex in xmlColors) { Color color = new Color(); color.Code = "#" + hex.InnerText; colorlist.Add(color); } palette.Colors = colorlist; } } var jsonSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; return JsonConvert.SerializeObject(palette, jsonSettings); } catch (WebException ex) { //Handle exception } return ""; }