static async Task <byte[]> GetGravatarAsync(string email, int size, float scale, DefaultGravatar defaultGravatar) { var requestUri = GetGravatarUri(email, size, scale, defaultGravatar); using var response = await lazyHttp.Value.GetAsync(requestUri); if (!response.IsSuccessStatusCode) { return(Array.Empty <byte>()); } return(await response.Content.ReadAsByteArrayAsync()); }
static string DefaultGravatarName(DefaultGravatar defaultGravatar) => defaultGravatar switch {
static string GetGravatarUri(string email, int size, float scale, DefaultGravatar defaultGravatar) => string.Format(requestUriFormat, GetMd5Hash(email), size * scale, DefaultGravatarName(defaultGravatar));
/// <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">A default Gravatar generation policy. See <see cref="Gravatar.DefaultGravatar"/> for details.</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, DefaultGravatar defaultImage, GravatarRating rating) { GravatarGenerator gravatar = new GravatarGenerator(email, false) .Size(size) .Rating(rating) .DefaultImage(defaultImage); return gravatar.Url; }
/// <summary> /// How to generate a default image if no gravatar exists for the email. See <see cref="Gravatar.DefaultGravatar"/> for details. /// </summary> /// <param name="defaultImage">What type of default image to generate.</param> public GravatarGenerator DefaultImage(DefaultGravatar defaultImage) { this._DefaultDisplay = defaultImage; return this; }
/// <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">A default Gravatar generation policy. See <see cref="Gravatar.DefaultGravatar"/> for details.</param> /// <returns>A Gravatar Url</returns> public static string Gravatar(this UrlHelper helper, string email, int size, DefaultGravatar defaultImage) { GravatarGenerator gravatar = new GravatarGenerator(email, helper.RequestContext.HttpContext.Request.IsSecureConnection) .Size(size) .DefaultImage(defaultImage); return gravatar.Url; }