// review - extract conversion of anonymous object to html attributes string into separate helper public static HtmlString GetHtml(string email, int imageSize = 80, string defaultImage = null, GravatarRating rating = GravatarRating.Default, string imageExtension = null, object attributes = null) { bool altSpecified = false; string url = GetUrl(email, imageSize, defaultImage, rating, imageExtension); StringBuilder html = new StringBuilder(String.Format(CultureInfo.InvariantCulture, "<img src=\"{0}\" ", url)); if (attributes != null) { foreach (var p in attributes.GetType().GetProperties().OrderBy(p => p.Name)) { if (!p.Name.Equals("src", StringComparison.OrdinalIgnoreCase)) { object value = p.GetValue(attributes, null); if (value != null) { string encodedValue = HttpUtility.HtmlAttributeEncode(value.ToString()); html.Append(String.Format(CultureInfo.InvariantCulture, "{0}=\"{1}\" ", p.Name, encodedValue)); } if (p.Name.Equals("alt", StringComparison.OrdinalIgnoreCase)) { altSpecified = true; } } } } if (!altSpecified) { html.Append("alt=\"gravatar\" "); } html.Append("/>"); return(new HtmlString(html.ToString())); }
// review - extract conversion of anonymous object to html attributes string into separate helper public static HtmlString GetHtml(string email, int imageSize = 80, string defaultImage = null, GravatarRating rating = GravatarRating.Default, string imageExtension = null, object attributes = null) { bool altSpecified = false; string url = GetUrl(email, imageSize, defaultImage, rating, imageExtension); StringBuilder html = new StringBuilder(String.Format(CultureInfo.InvariantCulture, "<img src=\"{0}\" ", url)); if (attributes != null) { foreach (var p in attributes.GetType().GetProperties().OrderBy(p => p.Name)) { if (!p.Name.Equals("src", StringComparison.OrdinalIgnoreCase)) { object value = p.GetValue(attributes, null); if (value != null) { string encodedValue = HttpUtility.HtmlAttributeEncode(value.ToString()); html.Append(String.Format(CultureInfo.InvariantCulture, "{0}=\"{1}\" ", p.Name, encodedValue)); } if (p.Name.Equals("alt", StringComparison.OrdinalIgnoreCase)) { altSpecified = true; } } } } if (!altSpecified) { html.Append("alt=\"gravatar\" "); } html.Append("/>"); return new HtmlString(html.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("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> /// 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()); }
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); }
public static string GetUrl( string email, int imageSize = 80, string defaultImage = null, GravatarRating rating = GravatarRating.Default, string imageExtension = null ) { if (String.IsNullOrEmpty(email)) { throw new ArgumentException( CommonResources.Argument_Cannot_Be_Null_Or_Empty, "email" ); } if ((imageSize <= 0) || (imageSize > 512)) { throw new ArgumentException( HelpersToolkitResources.Gravatar_InvalidImageSize, "imageSize" ); } StringBuilder url = new StringBuilder(GravatarUrl); email = email.Trim().ToLowerInvariant(); url.Append(Crypto.Hash(email, algorithm: "md5").ToLowerInvariant()); if (!String.IsNullOrEmpty(imageExtension)) { if (!imageExtension.StartsWith(".", StringComparison.Ordinal)) { url.Append('.'); } url.Append(imageExtension); } url.Append("?s="); url.Append(imageSize); if (rating != GravatarRating.Default) { url.Append("&r="); url.Append(rating.ToString().ToLowerInvariant()); } if (!String.IsNullOrEmpty(defaultImage)) { url.Append("&d="); url.Append(HttpUtility.UrlEncode(defaultImage)); } return(HttpUtility.HtmlAttributeEncode(url.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); } }
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)); }
public static string GetUrl(string email, int imageSize = 80, string defaultImage = null, GravatarRating rating = GravatarRating.Default, string imageExtension = null, bool useHttps = false) { if (String.IsNullOrEmpty(email)) { throw new ArgumentException(CommonResources.Argument_Cannot_Be_Null_Or_Empty, "email"); } if ((imageSize <= 0) || (imageSize > 512)) { throw new ArgumentException(HelpersToolkitResources.Gravatar_InvalidImageSize, "imageSize"); } StringBuilder url = new StringBuilder(useHttps ? GravatarSecureUrl : GravatarUrl); email = email.Trim().ToLowerInvariant(); url.Append(Crypto.Hash(email, algorithm: "md5").ToLowerInvariant()); if (!String.IsNullOrEmpty(imageExtension)) { if (!imageExtension.StartsWith(".", StringComparison.Ordinal)) { url.Append('.'); } url.Append(imageExtension); } url.Append("?s="); url.Append(imageSize); if (rating != GravatarRating.Default) { url.Append("&r="); url.Append(rating.ToString().ToLowerInvariant()); } if (!String.IsNullOrEmpty(defaultImage)) { url.Append("&d="); url.Append(HttpUtility.UrlEncode(defaultImage)); } return HttpUtility.HtmlAttributeEncode(url.ToString()); }
/// <summary> /// Make the URL for the Gravatar image of a given email adress. /// </summary> /// <param name="email"></param> /// <param name="extension">Adds .jpg extension to URL.</param> /// <param name="size">Size, in pixels, of the retrieved image.</param> /// <param name="ssl">Use a secure connection to retrieve image.</param> /// <param name="rating">Rating to limit retrieval at. Gravatars above set limit are returned as "default" Gravatar.</param> /// <param name="defaultOption">Decides what is returned if no Gravatar exists for given email.</param> /// <param name="defaultUrl">URL to custom default image, if set.</param> /// <returns>URL for requesting specified Gravatar image.</returns> public static Uri GetGravatarUrl( string email, bool extension = false, int size = 80, bool ssl = false, GravatarRating rating = GravatarRating.PG, GravatarDefault defaultOption = GravatarDefault.Default, string defaultUrl = "" ) { var sb = new StringBuilder(); sb.Append(ssl ? UrlBaseSsl : UrlBase); sb.Append(Utility.GravatarHash(email)); sb.Append(extension ? ".jpg" : string.Empty); sb.Append(CalculateSizeOption(size)); sb.Append(CalculateRatingOption(rating)); sb.Append(CalculateDefaultOption(defaultOption, defaultUrl)); return new Uri(sb.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 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())); }
/// <summary> /// Gets an <c>img</c> tag of the Gravatar for the supplied email address and parameters. /// </summary> /// <param name="htmlHelper">The HtmlHelper object that does the rendering.</param> /// <param name="emailAddress">The email address whose Gravatar should be rendered.</param> /// <param name="size">The size of the rendered Gravatar.</param> /// <param name="rating">The maximum Gravatar rating to allow for rendered Gravatars.</param> /// <param name="default">The default image to display if no Gravatar exists for the specified <paramref name="emailAddress"/>.</param> /// <param name="forceDefault"><c>true</c> to always display the default image. Otherwise, <c>false</c>.</param> /// <param name="useHttps"><c>true</c> to use the HTTPS Gravatar URL. Otherwise, <c>false</c>.</param> /// <param name="htmlAttributes">Additional attributes to include in the rendered <c>img</c> tag.</param> /// <returns>An HTML string of the rendered <c>img</c> tag.</returns> public static MvcHtmlString Gravatar( this HtmlHelper htmlHelper, string emailAddress, int? size = null, GravatarRating? rating = null, string @default = null, bool? forceDefault = null, bool? useHttps = null, object htmlAttributes = null ) { return MvcHtmlString.Create( NGravatar.Gravatar.DefaultInstance.Render( emailAddress, size, rating, @default, forceDefault, useHttps, HtmlAttributeTypeFilter.FilterToDictionary(htmlAttributes) ) ); }
private string GetUrl(string email, int?size, string defaultImage, GravatarRating rating) { StringBuilder url = new StringBuilder("http://www.gravatar.com/avatar/"); url.Append(GetHash(Email)); if (size == null) { size = 80; } url.Append("?s="); url.Append(size); if (!String.IsNullOrEmpty(defaultImage)) { url.Append("&d="); url.Append(defaultImage); } else if (DefaultImageBehavior != GravatarDefaultImageBehavior.Default) { var behaviorName = DefaultImageBehavior.ToString().ToLower(); switch (DefaultImageBehavior) { case GravatarDefaultImageBehavior.MysteryMan: behaviorName = "mm"; break; } url.Append("&d=" + behaviorName); } if (rating != GravatarRating.Default) { url.Append("&r="); url.Append(rating.ToString().ToLowerInvariant()); } return(url.ToString()); }
/// <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); } }
/// <summary> /// Creates an img tag whose source is the address of the Gravatar for the specified <paramref name="emailAddress"/>. /// </summary> /// <param name="emailAddress">The email address whose Gravatar should be rendered.</param> /// <param name="size">The size of the Gravatar image, or <c>null</c> to use the default size.</param> /// <param name="rating">The allowed rating of the Gravatar avatar, or <c>null</c> to use the default rating.</param> /// <param name="default">The location of the default Gravatar image, or <c>null</c> to use the default location.</param> /// <param name="forceDefault"><c>true</c> to force the <paramref name="default"/> image to be loaded. Otherwise, <c>false</c>.</param> /// <param name="useHttps"> /// <c>true</c> to use the HTTPS Gravatar URL. Otherwise, <c>false</c>. /// This value can be <c>null</c> to use the <see cref="Gravatar.UseHttps"/> value /// of the <see cref="Gravatar.DefaultInstance"/>. /// </param> /// <param name="htmlAttributes">Additional attributes to include in the img tag.</param> /// <returns>An HTML img tag of the rendered Gravatar.</returns> public string Render(string emailAddress, int? size = null, GravatarRating? rating = null, string @default = null, bool? forceDefault = null, bool? useHttps = null, IDictionary<string, object> htmlAttributes = null) { size = size ?? Size ?? RenderedSize; return HtmlBuilder.RenderImageTag( url: GetUrl(emailAddress, size, rating, @default, forceDefault, useHttps), size: size, htmlAttributes: htmlAttributes ); }
/// <summary> /// Gets a link to the image file of the Gravatar for the specified <paramref name="emailAddress"/>. /// </summary> /// <param name="emailAddress">The email whose Gravatar image source should be returned.</param> /// <param name="size">The size of the Gravatar image, or <c>null</c> to use the default size.</param> /// <param name="rating">The allowed rating of the Gravatar avatar, or <c>null</c> to use the default rating.</param> /// <param name="default">The location of the default Gravatar image, or <c>null</c> to use the default location.</param> /// <param name="forceDefault"><c>true</c> to force the <paramref name="default"/> image to be loaded. Otherwise, <c>false</c>.</param> /// <param name="useHttps"><c>true</c> to use the base HTTPS Gravatar URL. Otherwise, <c>false</c>.</param> /// <returns>The URL of the Gravatar for the specified <paramref name="emailAddress"/>.</returns> public string GetUrl(string emailAddress, int? size = null, GravatarRating? rating = null, string @default = null, bool? forceDefault = null, bool? useHttps = null) { var query = string.Empty; size = size ?? Size; if (size.HasValue) query += "s=" + size.Value; rating = rating ?? Rating; if (rating.HasValue) query += "&r=" + rating.Value.ToString().ToLower(); @default = @default ?? Default; if (@default != null) query += "&d=" + HttpUtility.UrlEncode(@default); forceDefault = forceDefault ?? ForceDefault; if (forceDefault.HasValue && forceDefault.Value) query += "&f=y"; return string.Format("{0}/avatar/{1}{2}", GetBaseUrl(useHttps), GetHash(emailAddress), query == string.Empty ? string.Empty : "?" + query.TrimStart(new[] { '&' }) ); }
public static string GetUrl(string email, int imageSize = 80, string?defaultImage = null, GravatarRating rating = GravatarRating.Default, string?imageExtension = null) => Microsoft.Web.Helpers.Gravatar.GetUrl(email, imageSize, defaultImage, rating, imageExtension);
/// <summary> /// Gets the URI of the Gravatar image for the email address and parameters. /// </summary> /// <param name="urlHelper">The UrlHelper object getting the URL.</param> /// <param name="emailAddress">The email whose Gravatar source should be returned.</param> /// <param name="size">The size of the requested Gravatar.</param> /// <param name="rating">The maximum Gravatar rating to allow for requested images.</param> /// <param name="default">The default image to return if no Gravatar is found for the specified <paramref name="emailAddress"/>.</param> /// <param name="forceDefault"><c>true</c> to force the <paramref name="default"/> image to be loaded. Otherwise, <c>false</c>.</param> /// <param name="useHttps"><c>true</c> to use the HTTPS Gravatar URL. Otherwise, <c>false</c>.</param> /// <returns>The URI of the Gravatar for the email address and parameters.</returns> public static string Gravatar(this UrlHelper urlHelper, string emailAddress, int? size = null, GravatarRating? rating = null, string @default = null, bool? forceDefault = null, bool? useHttps = null) { return NGravatar.Gravatar.DefaultInstance.GetUrl(emailAddress, size, rating, @default, forceDefault, useHttps); }
public static MvcHtmlString GravatarImage(this HtmlHelper helper, string email, GravatarRating rating, IconSet iconSet, int size) { var emailHashed = MD5(email); var gravatarUrl = string.Format(BASE_URL, emailHashed, iconSet, size, rating); return new MvcHtmlString(string.Format(IMG_TAG, gravatarUrl, size)); }
public static IAsyncResult BeginGetGravatar(AsyncCallback callback, string email, DefaultGravatarType defaultType, GravatarRating rating, int size) { var func = new Func <string, DefaultGravatarType, GravatarRating, int, Bitmap>(GetGravatar); return(func.BeginInvoke(email, defaultType, rating, size, callback, func)); }
public static string Value(this GravatarRating rating) => rating.ToString().ToLower();
private static string CalculateRatingOption(GravatarRating rating) { return rating == GravatarRating.PG ? string.Empty : string.Format("?r={0}", rating); }
public static Uri GetGravatarUrl(string email, GravatarRating rating) { return GetGravatarUrl(email, false, 80, false, rating); }
public Gravatar RatedAs(GravatarRating rating) { _rating = rating; return(this); }
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> /// Image rating to display for. See <see cref="Gravatar.GravatarRating"/> for details. /// </summary> /// <param name="defaultImage">The rating to filter Gravatars for.</param> public GravatarGenerator Rating(GravatarRating rating) { this._DisplayRating = rating; return this; }
public static Bitmap GetGravatar(string email, DefaultGravatarType defaultType, GravatarRating rating, int size) { var url = string.Format(URL, MD5(email), defaultType, size, rating); var http = HttpWebRequest.Create(url); using (var response = http.GetResponse()) { return(ExtractGravatar(response)); } }
/// <summary> /// Gets a Gravatar Url as string. /// </summary> /// <param name="email">Email to generate Gravatar for.</param> /// <param name="size">The size in pixels, between 1 and 512.</param> /// <param name="defaultImage">An Url to a default image to use if no Gravatar exists.</param> /// <param name="rating">Image rating to display for. See <see cref="Gravatar.GravatarRating"/> for details.</param> /// <returns>A Gravatar Url</returns> public static string Generate(string email, int size, string defaultImage, GravatarRating rating) { GravatarGenerator gravatar = new GravatarGenerator(email, false) .Size(size) .Rating(rating) .DefaultImage(defaultImage); return gravatar.Url; }
/// <summary> /// Gets a Gravatar Url as string. /// </summary> /// <param name="helper">UrlHelper object.</param> /// <param name="email">Email to generate Gravatar for.</param> /// <param name="size">The size in pixels, between 1 and 512.</param> /// <param name="defaultImage">An Url to a default image to use if no Gravatar exists.</param> /// <param name="rating">Image rating to display for. See <see cref="Gravatar.GravatarRating"/> for details.</param> /// <returns>A Gravatar Url</returns> public static string Gravatar(this UrlHelper helper, string email, int size, string defaultImage, GravatarRating rating) { GravatarGenerator gravatar = new GravatarGenerator(email, helper.RequestContext.HttpContext.Request.IsSecureConnection) .Size(size) .Rating(rating) .DefaultImage(defaultImage); return gravatar.Url; }
public static string Gravatar(this UrlHelper helper, string email, int size = 32, GravatarDefault def = GravatarDefault.Default, GravatarRating rating = GravatarRating.G) { return GravatarUrl.ForEmail(email).Size(size).Default(def).WithRating(rating); }
string GetUrl(string email, int? size, string defaultImage, GravatarRating rating) { var url = new StringBuilder("http://www.gravatar.com/avatar/"); url.Append(GetHash(Email)); if(size == null) size = 80; url.Append("?s="); url.Append(size); if(!String.IsNullOrEmpty(defaultImage)) { url.Append("&d="); url.Append(defaultImage); } else if(DefaultImageBehavior != GravatarDefaultImageBehavior.Default) { var behaviorName = DefaultImageBehavior.ToString().ToLower(); switch(DefaultImageBehavior) { case GravatarDefaultImageBehavior.MysteryMan: behaviorName = "mm"; break; } url.Append("&d=" + behaviorName); } if(rating != GravatarRating.Default) { url.Append("&r="); url.Append(rating.ToString().ToLowerInvariant()); } return url.ToString(); }
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 IAsyncResult BeginGetGravatar(AsyncCallback callback, string email, DefaultGravatarType defaultType, GravatarRating rating, int size) { var func = new Func<string, DefaultGravatarType, GravatarRating, int, Bitmap>(GetGravatar); return func.BeginInvoke(email, defaultType, rating, size, callback, func); }
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> /// Renders an HTML img tag that references a Gravatar avatar based off a user's email address /// </summary> /// <param name="html">The <see cref="HtmlHelper"/></param> /// <param name="email">The email address</param> /// <param name="defaultGravatar"> /// The avatar you want to use if the email address doesn't have a Gravatar associated with it. /// You can either provide a URL to the image you want to use, or pass in one of the constants /// defined in <see cref="GravatarDefaults"/>. /// </param> /// <param name="size">The size in pixels of the image return. Must be between 1 and 512.</param> /// <param name="rating">The maximum rating that the Gravatar can be.</param> /// <param name="htmlAttributes">Any HTML attributes you want applied to the img tag</param> /// <returns>The img tag string</returns> /// <exception cref="ArgumentException"> /// If <paramref name="size"/> is less than 1 or greater than 512 /// </exception> public static MvcHtmlString Gravatar(this HtmlHelper html, string email, string defaultGravatar, int size, GravatarRating rating, IDictionary <string, object> htmlAttributes) { if (size < 1 || size > 512) { throw new ArgumentException("size must be between 1 and 512", "size"); } UrlHelper url = new UrlHelper(html.ViewContext.RequestContext); defaultGravatar = url.Encode(defaultGravatar); if (email == null) { email = String.Empty; } email = email.ToLower(); StringBuilder hashBuilder = new StringBuilder(); MD5 md5 = MD5.Create(); foreach (byte aByte in md5.ComputeHash(Encoding.Default.GetBytes(email))) { hashBuilder.Append(aByte.ToString("x2")); } TagBuilder img = new TagBuilder("img"); img.MergeAttributes(htmlAttributes); img.Attributes["src"] = String.Format("http://www.gravatar.com/avatar/{0}?d={1}&s={2}&r={3}", hashBuilder, defaultGravatar, size, rating.ToString().ToLower()); img.Attributes["width"] = size.ToString(); img.Attributes["height"] = size.ToString(); return(MvcHtmlString.Create(img.ToString(TagRenderMode.SelfClosing))); }
public static Bitmap GetGravatar(string email, DefaultGravatarType defaultType, GravatarRating rating, int size) { var url = string.Format(URL, MD5(email), defaultType, size, rating); var http = HttpWebRequest.Create(url); using(var response = http.GetResponse()) { return ExtractGravatar(response); } }