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’

  • :force (true, false) — default: false

    Force use of the default avatar, useful if you want to use only identicons or the like

Returns:

  • (URI)

See Also:

Author:

  • manveru



59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/ramaze/helper/gravatar.rb', line 59

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