Example #1
0
        // 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()));
        }
Example #2
0
 // 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());
 }
Example #3
0
        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();
        }
Example #4
0
        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());
        }
Example #5
0
    /// <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);
    }
Example #6
0
        /// <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);
        }
Example #9
0
        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()));
        }
Example #10
0
 /// <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);
     }
 }
Example #11
0
        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));
        }
Example #12
0
        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());
        }
Example #13
0
        /// <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()));
        }
Example #15
0
 /// <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)
         )
     );
 }
Example #16
0
        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());
        }
Example #17
0
        /// <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);
            }
        }
Example #18
0
        /// <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
            );
        }
Example #19
0
        /// <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[] { '&' })
            );
        }
Example #20
0
 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);
Example #21
0
 /// <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);
 }
Example #22
0
        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));
        }
Example #23
0
        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));
        }
Example #24
0
 public static string Value(this GravatarRating rating)
 => rating.ToString().ToLower();
Example #25
0
 private static string CalculateRatingOption(GravatarRating rating)
 {
     return rating == GravatarRating.PG ? string.Empty : string.Format("?r={0}", rating);
 }
Example #26
0
 public static Uri GetGravatarUrl(string email, GravatarRating rating)
 {
     return GetGravatarUrl(email, false, 80, false, rating);
 }
Example #27
0
 public Gravatar RatedAs(GravatarRating rating)
 {
     _rating = rating;
     return(this);
 }
Example #28
0
        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());
        }
Example #29
0
 /// <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;
 }
Example #30
0
        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));
            }
        }
Example #31
0
 /// <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;
 }
Example #32
0
 /// <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();
        }
Example #35
0
        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());
        }
Example #36
0
 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);
 }
Example #37
0
        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)));
        }
Example #39
0
 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);
     }
 }