Sha256: 448d978f1da9c937191b515ec1ef82b99dbdc8bd7c8d20d3d8eff9c8fa47bf53

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'digest/md5'
require 'net/http'
require 'uri'

module EasyGravatar
  class Gravatar

    attr_reader :md5

    def initialize(email)
      if email && email.length > 0
        @valid_email = true
      else
        email = ''
      end

     @md5 = Digest::MD5.hexdigest(email.downcase)
    end

    def hash
      return {} unless @valid_email
      @hash ||= EasyGravatar::JsonParser.for(get_hash).parse
    end

    def full_name
      get_value :formattedName
    end

    def avatar(width = 80)
      "#{get_value(:thumbnailUrl)}?w=#{width}"
    end

    def get_value(key, subkey = nil)
      return '' unless @valid_email
      return '' unless hash[key]
      return '' if subkey and !hash[key][subkey]

      return hash[key][subkey] if subkey

      hash[key]
    end

    private

    def get_hash
      Net::HTTP.get(URI.parse(profile_url))
    end

    def profile_url(url = "https://www.gravatar.com/#{@md5}.json")
      response = Net::HTTP.get_response(URI.parse(url))

      case response
      when Net::HTTPSuccess then
        url
      when Net::HTTPRedirection then
        new_url = response['location']
        profile_url(new_url)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
easy_gravatar-1.0.1 lib/easy_gravatar/gravatar.rb