private static string BuildUrl(string hash, int? size, GravatarRating rating, GravatarDefaultImage defaultImage) { var url = new StringBuilder("http://www.gravatar.com/avatar/", 90); url.Append(hash); bool isFirst = true; Action<string, string> addParam = (p, v) => { url.AppendFormat("{0}{1}={2}", (isFirst ? '?' : '&'), p, v); isFirst = false; }; if (size != null) { if (size < 1 || size > 512) { throw new ArgumentOutOfRangeException("size", size, "Must be null or between 1 and 512, inclusive"); } addParam("s", size.Value.ToString()); } if (rating != GravatarRating.Default) { addParam("r", rating.ToString().ToLower()); } if (defaultImage != GravatarDefaultImage.Default) { string code = GenerateDefaultImageCode(defaultImage); addParam("d", code); } return url.ToString(); }
private static string BuildUrl(string hash, int?size, GravatarRating rating, GravatarDefaultImage defaultImage) { var url = new StringBuilder("http://www.gravatar.com/avatar/", 90); url.Append(hash); bool isFirst = true; Action <string, string> addParam = (p, v) => { url.AppendFormat("{0}{1}={2}", (isFirst ? '?' : '&'), p, v); isFirst = false; }; if (size != null) { if (size < 1 || size > 512) { throw new ArgumentOutOfRangeException(nameof(size), size, "Must be null or between 1 and 512, inclusive"); } addParam("s", size.Value.ToString()); } if (rating != GravatarRating.Default) { addParam("r", rating.ToString().ToLower()); } if (defaultImage != GravatarDefaultImage.Default) { string code = GenerateDefaultImageCode(defaultImage); addParam("d", code); } return(url.ToString()); }
/// <summary> /// Creates HTML for an <c>img</c> element that presents a Gravatar icon. /// </summary> /// <param name="html">The <see cref="HtmlHelper"/> upon which this extension method is provided.</param> /// <param name="email">The email address used to identify the icon.</param> /// <param name="size">An optional parameter that specifies the size of the square image in pixels.</param> /// <param name="rating">An optional parameter that specifies the safety level of allowed images.</param> /// <param name="defaultImage">An optional parameter that controls what image is displayed for email addresses that don't have associated Gravatar icons.</param> /// <param name="htmlAttributes">An optional parameter holding additional attributes to be included on the <c>img</c> element.</param> /// <returns>An HTML string of the <c>img</c> element that presents a Gravatar icon.</returns> public static string Gravatar(this HtmlHelper html, string email, int? size = null, GravatarRating rating = GravatarRating.Default, GravatarDefaultImage defaultImage = GravatarDefaultImage.MysteryMan, object htmlAttributes = null) { var url = new StringBuilder("http://www.gravatar.com/avatar/", 90); url.Append(email.ToMd5Hash()); var isFirst = true; Action<string, string> addParam = (p, v) => { url.Append(isFirst ? '?' : '&'); isFirst = false; url.Append(p); url.Append('='); url.Append(v); }; if (size != null) { if (size < 1 || size > 512) throw new ArgumentOutOfRangeException("size", size, "Must be null or between 1 and 512, inclusive."); addParam("s", size.Value.ToString(CultureInfo.InvariantCulture)); } if (rating != GravatarRating.Default) addParam("r", rating.ToString().ToLower()); switch (defaultImage) { case GravatarDefaultImage.Http404: addParam("d", "404"); break; case GravatarDefaultImage.Identicon: addParam("d", "identicon"); break; case GravatarDefaultImage.MonsterId: addParam("d", "monsterid"); break; case GravatarDefaultImage.MysteryMan: addParam("d", "mm"); break; case GravatarDefaultImage.Wavatar: addParam("d", "wavatar"); break; } var tag = new TagBuilder("img"); tag.MergeAttributes(new RouteValueDictionary(htmlAttributes)); tag.Attributes.Add("src", url.ToString()); if (size != null) { tag.Attributes.Add("width", size.ToString()); tag.Attributes.Add("height", size.ToString()); } return tag.ToString(TagRenderMode.SelfClosing); }
/// <summary> /// <para>Predefined type of image to be returned when user's email address has no matching Gravatar image.</para> /// </summary> /// <param name="widget">Widget to call method on.</param> /// <param name="image">Type of default image.</param> /// <returns>Reference to provided <paramref name="widget"/>.</returns> /// <exception cref="ArgumentNullException">If <paramref name="widget"/> is a <c>null</c> reference.</exception> /// <seealso cref="Default(IGravatarImageUrlWidget, string)"/> public static IGravatarImageUrlWidget Default(this IGravatarImageUrlWidget widget, GravatarDefaultImage image) { Assertion.NotNull(widget); switch (image) { case GravatarDefaultImage.Blank : return widget.Default("blank"); case GravatarDefaultImage.IdentIcon : return widget.Default("identicon"); case GravatarDefaultImage.MonsterId : return widget.Default("monsterid"); case GravatarDefaultImage.MysteryMan : return widget.Default("mm"); case GravatarDefaultImage.Retro : return widget.Default("retro"); case GravatarDefaultImage.Wavatar : return widget.Default("wavatar"); default: return widget.Default("404"); } }
/// <summary> /// Gets image url that depends on the given e-mail address. /// </summary> /// <param name="email"></param> /// <param name="size"></param> /// <param name="rating"></param> /// <param name="defaultImage"></param> /// <returns></returns> /// <exception cref="ArgumentOutOfRangeException"></exception> public static string GetImageAddress(string email, int?size = null, GravatarRating rating = GravatarRating.Default, GravatarDefaultImage defaultImage = GravatarDefaultImage.MysteryMan) { var url = new StringBuilder("//www.gravatar.com/avatar/", 90); url.Append(GetEmailHash(email)); var isFirst = true; Action <string, string> addParam = (p, v) => { url.Append(isFirst ? '?' : '&'); isFirst = false; url.Append(p); url.Append('='); url.Append(v); }; if (size != null) { if (size < 1 || size > 512) { throw new ArgumentOutOfRangeException("size", size, "Must be null or between 1 and 512, inclusive."); } addParam("s", size.Value.ToString()); } if (rating != GravatarRating.Default) { addParam("r", rating.ToString().ToLower()); } if (defaultImage != GravatarDefaultImage.Default) { if (defaultImage == GravatarDefaultImage.Http404) { addParam("d", "404"); } else if (defaultImage == GravatarDefaultImage.Identicon) { addParam("d", "identicon"); } else if (defaultImage == GravatarDefaultImage.MonsterId) { addParam("d", "monsterid"); } else if (defaultImage == GravatarDefaultImage.MysteryMan) { addParam("d", "mm"); } else if (defaultImage == GravatarDefaultImage.Wavatar) { addParam("d", "wavatar"); } } return(url.ToString()); }
public Gravatar DefaultingTo(string alternativeUrl) { if (alternativeUrl.Contains("?") || alternativeUrl.ToLowerInvariant().Contains("%3f")) { throw new ArgumentException("URLs for default avatars cannot contain query components.", "alternativeUrl"); } _defaultAvatar = alternativeUrl; _defaultImage = GravatarDefaultImage.Url; return(this); }
public Gravatar DefaultingTo(GravatarDefaultImage defaultImage) { if (defaultImage == GravatarDefaultImage.Url) { throw new ArgumentException("Use the string version of DefaultingTo to set the URL.", "defaultImage"); } _defaultImage = defaultImage; return(this); }
private static string BuildGravatarUrl(string email, GravatarRating rating, GravatarDefaultImage defaultImage, int? size = null) { var urlBuilder = new StringBuilder(GRAVATAR_URL, 90); urlBuilder.Append(GetEmailHash(email)); var isFirst = true; Action<string, string> addParam = (name, value) => { urlBuilder.Append(isFirst ? '?' : '&'); isFirst = false; urlBuilder.Append(name); urlBuilder.Append("="); urlBuilder.Append(value); }; if (size != null) { if (size < 1 || size > 512) throw new ArgumentOutOfRangeException("size", size, "Must be null or value between 1 and 512, inclusive."); addParam("s", size.Value.ToString()); } if (rating != GravatarRating.Default) addParam("r", rating.ToString().ToLower()); if (defaultImage != GravatarDefaultImage.Default) { string imageToShow = ""; switch (defaultImage) { case GravatarDefaultImage.Http404: imageToShow = "404"; break; case GravatarDefaultImage.MysteryMan: imageToShow = "mm"; break; case GravatarDefaultImage.Identicon: imageToShow = "identicon"; break; case GravatarDefaultImage.MonsterId: imageToShow = "monsterid"; break; case GravatarDefaultImage.Wavatar: imageToShow = "wavatar"; break; } addParam("d", imageToShow); } return urlBuilder.ToString(); }
public static string Gravatar(this HtmlHelper html, string email, int? size = null, GravatarRating rating = GravatarRating.Default, GravatarDefaultImage defaultImage = GravatarDefaultImage.MysteryMan, object htmlAttributes = null) { string gravatarUrl = BuildGravatarUrl(email, rating, defaultImage, size); return BuildGravatarImageTag(gravatarUrl, size, htmlAttributes); }
/// <summary> /// Creates HTML for an <c>img</c> element that presents a Gravatar icon. /// </summary> /// <param name="html">The <see cref="HtmlHelper"/> upon which this extension method is provided.</param> /// <param name="email">The email address used to identify the icon.</param> /// <param name="size">An optional parameter that specifies the size of the square image in pixels.</param> /// <param name="rating">An optional parameter that specifies the safety level of allowed images.</param> /// <param name="defaultImage">An optional parameter that controls what image is displayed for email addresses that don't have associated Gravatar icons.</param> /// <param name="htmlAttributes">An optional parameter holding additional attributes to be included on the <c>img</c> element.</param> /// <returns>An HTML string of the <c>img</c> element that presents a Gravatar icon.</returns> public static string Gravatar(this HtmlHelper html, string email, int? size = null, GravatarDefaultImage defaultImage = GravatarDefaultImage.Default, object htmlAttributes = null) { var url = new StringBuilder("https://www.gravatar.com/avatar/", 90); url.Append(GetEmailHash(email)); var isFirst = true; Action<string, string> addParam = (p, v) => { url.Append(isFirst ? '?' : '&'); isFirst = false; url.Append(p); url.Append('='); url.Append(v); }; if (size != null) { if (size < 1 || size > 512) throw new ArgumentOutOfRangeException("size", size, "Must be null or between 1 and 512, inclusive."); addParam("s", size.Value.ToString()); } if (defaultImage != GravatarDefaultImage.Default) { if (defaultImage == GravatarDefaultImage.Http404) addParam("d", "404"); else if (defaultImage == GravatarDefaultImage.Identicon) addParam("d", "identicon"); if (defaultImage == GravatarDefaultImage.MonsterId) addParam("d", "monsterid"); if (defaultImage == GravatarDefaultImage.MysteryMan) addParam("d", "mm"); if (defaultImage == GravatarDefaultImage.Wavatar) addParam("d", "wavatar"); } var tag = new TagBuilder("img"); tag.MergeAttributes(new RouteValueDictionary(htmlAttributes)); tag.Attributes.Add("src", url.ToString()); if (size != null) { tag.Attributes.Add("width", size.ToString()); tag.Attributes.Add("height", (size-5).ToString()); } return tag.ToString(); }
/// <summary> /// Gets image as base64 formatted that depends on the given e-mail address. /// </summary> /// <param name="email"></param> /// <param name="size"></param> /// <param name="rating"></param> /// <param name="defaultImage"></param> /// <returns></returns> public static string GetImageAsBase64(string email, int?size = null, GravatarRating rating = GravatarRating.Default, GravatarDefaultImage defaultImage = GravatarDefaultImage.MysteryMan) { try { var image = GetImage(email, size, rating, defaultImage); return ($"data:image/jpeg;base64,{Convert.ToBase64String(ConvertToByte(image, ImageFormat.Jpeg))}"); } catch (Exception) { return(null); } }
private static string GenerateDefaultImageCode(GravatarDefaultImage defaultImage) { switch (defaultImage) { case GravatarDefaultImage.Http404: return "404"; case GravatarDefaultImage.Identicon: return "identicon"; case GravatarDefaultImage.MonsterId: return "monsterid"; case GravatarDefaultImage.MysteryMan: return "mm"; case GravatarDefaultImage.Wavatar: return "wavatar"; default: return string.Empty; } }
public static MvcHtmlString Gravatar(this HtmlHelper htmlHelper, string email, short? size = null, GravatarRating rating = GravatarRating.Default, GravatarDefaultImage defaultImage = GravatarDefaultImage.MysteryMan, object htmlAttributes = null) { string hash = GenerateEmailHash(email); string url = BuildUrl(hash, size, rating, defaultImage); var imgTagBuilder = new TagBuilder("img"); imgTagBuilder.MergeAttributes(new RouteValueDictionary(htmlAttributes)); imgTagBuilder.Attributes.Add("src", url); imgTagBuilder.Attributes.Add("alt", "Avatar Image"); if (size != null) { imgTagBuilder.Attributes.Add("width", size.ToString()); imgTagBuilder.Attributes.Add("height", size.ToString()); } return MvcHtmlString.Create(imgTagBuilder.ToString(TagRenderMode.SelfClosing)); }
/// <summary> /// Creates HTML for an <c>img</c> element that presents a Gravatar icon. /// </summary> /// <param name="html">The <see cref="HtmlHelper" /> upon which this extension method is provided.</param> /// <param name="email">The email address used to identify the icon.</param> /// <param name="size">An optional parameter that specifies the size of the square image in pixels.</param> /// <param name="rating">An optional parameter that specifies the safety level of allowed images.</param> /// <param name="defaultImage"> /// An optional parameter that controls what image is displayed for email addresses that don't /// have associated Gravatar icons. /// </param> /// <param name="htmlAttributes"> /// An optional parameter holding additional attributes to be included on the <c>img</c> /// element. /// </param> /// <returns>An HTML string of the <c>img</c> element that presents a Gravatar icon.</returns> public static MvcHtmlString Gravatar(this HtmlHelper html, string email, int?size = null, GravatarRating rating = GravatarRating.Default, GravatarDefaultImage defaultImage = GravatarDefaultImage.MysteryMan, object htmlAttributes = null) { var url = Web.Utilities.GravatarPack.Gravatar.GetImageAddress(email, size, rating, defaultImage); var tag = new TagBuilder("img"); tag.MergeAttributes(new RouteValueDictionary(htmlAttributes)); tag.Attributes.Add("src", url); if (size != null) { tag.Attributes.Add("width", size.ToString()); tag.Attributes.Add("height", size.ToString()); } return(new MvcHtmlString(tag.ToString())); }
private static string GenerateDefaultImageCode(GravatarDefaultImage defaultImage) { switch (defaultImage) { case GravatarDefaultImage.Http404: return("404"); case GravatarDefaultImage.Identicon: return("identicon"); case GravatarDefaultImage.MonsterId: return("monsterid"); case GravatarDefaultImage.MysteryMan: return("mm"); case GravatarDefaultImage.Wavatar: return("wavatar"); default: return(string.Empty); } }
/// <summary> /// Gets image that depends on the given e-mail address. /// </summary> /// <param name="email"></param> /// <param name="size"></param> /// <param name="rating"></param> /// <param name="defaultImage"></param> /// <returns></returns> public static Image GetImage(string email, int?size = null, GravatarRating rating = GravatarRating.Default, GravatarDefaultImage defaultImage = GravatarDefaultImage.MysteryMan) { try { // When protocol doesn't specificated, WebRequest.Create throws an exception. var imageUrl = $"http:{GetImageAddress(email, size, rating, defaultImage)}"; var request = WebRequest.Create(imageUrl); using (var response = request.GetResponse()) { using (var stream = response.GetResponseStream()) { return(stream != null ? Image.FromStream(stream) : null); } } } catch (Exception) { return(null); } }
public static IHtmlString Gravatar( HtmlHelper Html, dynamic Shape, string Email, int?Size = null, GravatarRating Rating = GravatarRating.Default, GravatarDefaultImage DefaultImage = GravatarDefaultImage.MysteryMan) { var url = new StringBuilder("//www.gravatar.com/avatar/", 90); url.Append(GetEmailHash(Email)); var isFirst = true; Action <string, string> addParam = (p, v) => { url.Append(isFirst ? '?' : '&'); isFirst = false; url.Append(p); url.Append('='); url.Append(v); }; if (Size != null) { if (Size < 1 || Size > 512) { throw new ArgumentOutOfRangeException("size", Size, "Must be null or between 1 and 512, inclusive."); } addParam("s", Size.Value.ToString()); } if (Rating != GravatarRating.Default) { addParam("r", Rating.ToString().ToLower()); } if (DefaultImage != GravatarDefaultImage.Default) { if (DefaultImage == GravatarDefaultImage.Http404) { addParam("d", "404"); } else if (DefaultImage == GravatarDefaultImage.Identicon) { addParam("d", "identicon"); } if (DefaultImage == GravatarDefaultImage.MonsterId) { addParam("d", "monsterid"); } if (DefaultImage == GravatarDefaultImage.MysteryMan) { addParam("d", "mm"); } if (DefaultImage == GravatarDefaultImage.Wavatar) { addParam("d", "wavatar"); } } var tagBuilder = new TagBuilder("img"); IDictionary <string, string> htmlAttributes = Shape.Attributes; IEnumerable <string> classes = Shape.Classes; string id = Shape.Id; tagBuilder.MergeAttributes(htmlAttributes, false); tagBuilder.Attributes.Add("src", url.ToString()); foreach (var cssClass in classes ?? Enumerable.Empty <string>()) { tagBuilder.AddCssClass(cssClass); } if (!string.IsNullOrWhiteSpace(id)) { tagBuilder.GenerateId(id); } if (Size != null) { tagBuilder.Attributes.Add("width", Size.ToString()); tagBuilder.Attributes.Add("height", Size.ToString()); } return(MvcHtmlString.Create(tagBuilder.ToString())); }
/// <summary> /// <para>Predefined type of image to be returned when user's email address has no matching Gravatar image.</para> /// </summary> /// <param name="widget">Widget to call method on.</param> /// <param name="image">Type of default image.</param> /// <returns>Reference to provided <paramref name="widget"/>.</returns> /// <exception cref="ArgumentNullException">If <paramref name="widget"/> is a <c>null</c> reference.</exception> /// <seealso cref="Default(IGravatarImageUrlWidget, string)"/> public static IGravatarImageUrlWidget Default(this IGravatarImageUrlWidget widget, GravatarDefaultImage image) { Assertion.NotNull(widget); switch (image) { case GravatarDefaultImage.Blank: return(widget.Default("blank")); case GravatarDefaultImage.IdentIcon: return(widget.Default("identicon")); case GravatarDefaultImage.MonsterId: return(widget.Default("monsterid")); case GravatarDefaultImage.MysteryMan: return(widget.Default("mm")); case GravatarDefaultImage.Retro: return(widget.Default("retro")); case GravatarDefaultImage.Wavatar: return(widget.Default("wavatar")); default: return(widget.Default("404")); } }
public static string Gravatar(this HtmlHelper html, string email, int?size = null, GravatarRating rating = GravatarRating.Default, GravatarDefaultImage defaultImage = GravatarDefaultImage.MysteryMan, object htmlAttributes = null) { var url = new StringBuilder("http://www.gravatar.com/avatar/", 90); url.Append(GetEmailHash(email)); var isFirst = true; Action <string, string> addParam = (p, v) => { url.Append(isFirst ? '?' : '&'); isFirst = false; url.Append(p); url.Append('='); url.Append(v); }; if (size != null) { if (size < 1 || size > 512) { throw new ArgumentOutOfRangeException("size", size, "Must be null or between 1 and 512, inclusive."); } addParam("s", size.Value.ToString()); } if (rating != GravatarRating.Default) { addParam("r", rating.ToString().ToLower()); } if (defaultImage != GravatarDefaultImage.Default) { if (defaultImage == GravatarDefaultImage.Http404) { addParam("d", "404"); } else if (defaultImage == GravatarDefaultImage.Identicon) { addParam("d", "identicon"); } if (defaultImage == GravatarDefaultImage.MonsterId) { addParam("d", "monsterid"); } if (defaultImage == GravatarDefaultImage.MysteryMan) { addParam("d", "mm"); } if (defaultImage == GravatarDefaultImage.Wavatar) { addParam("d", "wavatar"); } } var tag = new TagBuilder("img"); tag.MergeAttributes(new RouteValueDictionary(htmlAttributes)); tag.Attributes.Add("src", url.ToString()); if (size != null) { tag.Attributes.Add("width", size.ToString()); tag.Attributes.Add("height", size.ToString()); } return(tag.ToString()); }
public static IHtmlString Gravatar( HtmlHelper Html, dynamic Shape, string Email, int? Size = null, GravatarRating Rating = GravatarRating.Default, GravatarDefaultImage DefaultImage = GravatarDefaultImage.MysteryMan) { var url = new StringBuilder("//www.gravatar.com/avatar/", 90); url.Append(GetEmailHash(Email)); var isFirst = true; Action<string, string> addParam = (p, v) => { url.Append(isFirst ? '?' : '&'); isFirst = false; url.Append(p); url.Append('='); url.Append(v); }; if (Size != null) { if (Size < 1 || Size > 512) throw new ArgumentOutOfRangeException("size", Size, "Must be null or between 1 and 512, inclusive."); addParam("s", Size.Value.ToString()); } if (Rating != GravatarRating.Default) addParam("r", Rating.ToString().ToLower()); if (DefaultImage != GravatarDefaultImage.Default) { if (DefaultImage == GravatarDefaultImage.Http404) addParam("d", "404"); else if (DefaultImage == GravatarDefaultImage.Identicon) addParam("d", "identicon"); if (DefaultImage == GravatarDefaultImage.MonsterId) addParam("d", "monsterid"); if (DefaultImage == GravatarDefaultImage.MysteryMan) addParam("d", "mm"); if (DefaultImage == GravatarDefaultImage.Wavatar) addParam("d", "wavatar"); } var tagBuilder = new TagBuilder("img"); IDictionary<string, string> htmlAttributes = Shape.Attributes; IEnumerable<string> classes = Shape.Classes; string id = Shape.Id; tagBuilder.MergeAttributes(htmlAttributes, false); tagBuilder.Attributes.Add("src", url.ToString()); foreach (var cssClass in classes ?? Enumerable.Empty<string>()) { tagBuilder.AddCssClass(cssClass); } if (!string.IsNullOrWhiteSpace(id)) { tagBuilder.GenerateId(id); } if (Size != null) { tagBuilder.Attributes.Add("width", Size.ToString()); tagBuilder.Attributes.Add("height", Size.ToString()); } return MvcHtmlString.Create(tagBuilder.ToString()); }