Module: Ramaze::Helper::Gravatar

Defined in:
lib/ramaze/helper/gravatar.rb

Overview

Helps you building Gravatar URIs from an email address.

For more information about gravatars, please see: gravatar.com

The implementation of the gravatar method changed significantly, it does less hand-holding but is more flexible so you can simply put your own helper on top.

It might not know about all the secret parameters (like ‘force’), if you find out more of these please consider contributing a patch.

Instance Method Summary collapse

Instance Method Details

#gravatar(email, opts = {}) ⇒ URI

API to build gravatar URIs from an email address (or any other String).

Examples:

Simple usage


class Gravatars < Ramaze::Controller
  helper :gravatar

  def index
    %q(
    Input your email address and I'll show you your Gravatar
    <form>
      <input type="text" name="email" />
      <input type="submit" />
    </form>
    <?r if email = request[:email] ?>
      Your gravatar is:
      <img src="#{gravatar(email)}" />
    <?r end ?>
    )
  end
end

Parameters:

  • email (#to_str)
  • opts (Hash) (defaults to: {})

    a customizable set of options

Options Hash (opts):

  • :ext (#to_s) — default: nil

    append a filename extension for the image, like ‘.jpg’

  • :size (#to_i) — default: 80

    The size of the gravatar, square, so 80 is 80x80. Allowed range is from 1 to 512.

  • :rating (#to_s) — default: 'g'

    Only serve a gravatar if it has a content rating equal or below the one specified. Ratings, in order are: ‘g’, ‘pg’, ‘r’, or ‘x’

  • :default (#to_s) — default: nil

    Fall back to default if the given email doesn’t have an gravatar; may be an absolute url, ‘identicon’, ‘monsterid’, or ‘wavatar’

Returns:

  • (URI)

See Also:

Author:

  • manveru



63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/ramaze/helper/gravatar.rb', line 63

def gravatar(email, opts = {})
  uri = URI("http://www.gravatar.com/")
  ext = opts[:ext]
  uri.path = "/avatar/#{Digest::MD5.hexdigest(email.to_str)}#{ext}"

  query = {}
  query[:size]    = opts[:size].to_i.to_s if opts.key?(:size)
  query[:rating]  = opts[:rating].to_s if opts.key?(:rating)
  query[:default] = opts[:default].to_s if opts.key?(:default)
  query[:force]   = '1' if opts[:force]

  uri.query = Rack::Utils.build_query(query) if query.any?
  uri
end