gravatar_image_tag 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -33,7 +33,7 @@ Once you have installed it as a plugin for your rails app usage is simple.
33
33
 
34
34
  <pre>gravatar_image_tag('spam@spam.com'.gsub('spam', 'mdeering'), :alt => 'Michael Deering')</pre>
35
35
 
36
- *Boom* here is my gravatar !http://www.gravatar.com/avatar.php?gravatar_id=4da9ad2bd4a2d1ce3c428e32c423588a(Michael Deering)!
36
+ *Boom* here is my gravatar !http://www.gravatar.com/avata/4da9ad2bd4a2d1ce3c428e32c423588a(Michael Deering)!
37
37
 
38
38
  h2. Configuration Points
39
39
 
@@ -43,7 +43,7 @@ If no default image is given in either an initializer or through the options pas
43
43
 
44
44
  <pre>gravatar_image_tag('junk', :alt => 'Default Gravatar Image')</pre>
45
45
 
46
- *Splat* the default gravatar image !http://www.gravatar.com/avatar.php?gravatar_id=0c821f675f132d790b3f25e79da739a7(Default Gravatar Image)!
46
+ *Splat* the default gravatar image !http://www.gravatar.com/avatar/0c821f675f132d790b3f25e79da739a7(Default Gravatar Image)!
47
47
 
48
48
  You can specify the default image through an initializer as follows:
49
49
 
@@ -54,7 +54,13 @@ You can also specify the default image to fallback to or override the one set in
54
54
 
55
55
  <pre>gravatar_image_tag('junk', :alt => 'Github Default Gravatar', :gravatar => { :default => 'http://github.com/images/gravatars/gravatar-80.png' })</pre>
56
56
 
57
- *Ka-Pow* !http://www.gravatar.com/avatar.php?default=http%3A%2F%2Fgithub.com%2Fimages%2Fgravatars%2Fgravatar-80.png&gravatar_id=0c821f675f132d790b3f25e79da739a7(Github Default Gravatar)!
57
+ *Ka-Pow* !http://www.gravatar.com/avatar/0c821f675f132d790b3f25e79da739a7?default=http%3A%2F%2Fgithub.com%2Fimages%2Fgravatars%2Fgravatar-80.png(Github Default Gravatar)!
58
+
59
+ p. Other options supported besides an image url to fall back on include the following:
60
+ * :identicon !http://www.gravatar.com/avatar/0c821f675f132d790b3f25e79da739a7?default=identicon(Identicon Avatar)!
61
+ * :monsterid !http://www.gravatar.com/avatar/0c821f675f132d790b3f25e79da739a7?default=monsterid(Monster Id Avatar)!
62
+ * :wavatar !http://www.gravatar.com/avatar/0c821f675f132d790b3f25e79da739a7?default=wavatar(Wavatar Avatar)!
63
+ * 404: !http://www.gravatar.com/avatar/0c821f675f132d790b3f25e79da739a7?default=404(Not Found)!
58
64
 
59
65
  h3. Setting the default image size
60
66
 
@@ -69,7 +75,42 @@ You can also specify the image size or override the one set in the plugin config
69
75
 
70
76
  <pre>gravatar_image_tag('spam@spam.com'.gsub('spam', 'mdeering'), :alt => 'Michael Deering', :class => 'some-class', :gravatar => { :size => 15 })</pre>
71
77
 
72
- *Mini Me!* !(some-class)http://www.gravatar.com/avatar.php?gravatar_id=4da9ad2bd4a2d1ce3c428e32c423588a&size=15(Michael Deering)!
78
+ *Mini Me!* !(some-class)http://www.gravatar.com/avatar/4da9ad2bd4a2d1ce3c428e32c423588a?size=15(Michael Deering)!
79
+
80
+ h3. Grabbing gravatars from the secure gravatar server.
81
+
82
+ p. You can make a request for a gravatar from the secure server at https://secure.gravatar.com by passing the _:gravatar => { :secure => true }_ option to the gravatar_image_tag call.
83
+
84
+ <pre>gravatar_image_tag('spam@spam.com'.gsub('spam', 'mdeering'), :alt => 'Michael Deering', :gravatar => { :secure => true } )</pre>
85
+
86
+ Delivered by a secure url! !https://secure.gravatar.com/avatar/4da9ad2bd4a2d1ce3c428e32c423588a(Michael Deering)!
87
+
88
+ p. You globally set the gravatar image tag to always use the secure server by setting the following. By default this is set to false.
89
+
90
+ <pre># config/initializers/gravatar_defaults.rb
91
+ ActionView::Base.secure_gravatar = true</pre>
92
+
93
+ h3. Using Gravatar's built in rating system
94
+
95
+ p. By default only those gravatars that have a rating of 'g' are returned. You can change this by passing in the rating parameter as follows. Possible options for ratings are _g, pg, r, or x_.
96
+
97
+ <pre>gravatar_image_tag('spam@spam.com'.gsub('spam', 'mdeering'), :alt => 'Michael Deering', :gravatar => { :rating => 'pg' } )</pre>
98
+
99
+ p. You can globally set the gravatar image tag rating by setting the following. There is no default value, the default of 'g' is being set by the gravatar service itself.
100
+
101
+ <pre># config/initializers/gravatar_defaults.rb
102
+ ActionView::Base.default_gravatar_rating = 'r'</pre>
103
+
104
+ h3. Specifying a filetype
105
+
106
+ p. By default no filetype extension is given in the produced gravatar urls but of your application requires it you can specify one to be added to the generated url.
107
+
108
+ <pre>gravatar_image_tag('spam@spam.com'.gsub('spam', 'mdeering'), :alt => 'Michael Deering', :gravatar => { :filetype => :gif } )</pre>
109
+
110
+ p. You can globally set the filetype extension as follows.
111
+
112
+ <pre># config/initializers/gravatar_defaults.rb
113
+ ActionView::Base.default_gravatar_filetype = :gif</pre>
73
114
 
74
115
  h2. Credits
75
116
 
@@ -1,9 +1,8 @@
1
1
  module GravatarImageTag
2
2
 
3
- GRAVATAR_BASE_URL = 'http://www.gravatar.com/avatar.php'
4
-
5
3
  def self.included(base)
6
- base.cattr_accessor :default_gravatar_image, :default_gravatar_size
4
+ base.cattr_accessor :default_gravatar_filetype, :default_gravatar_image,
5
+ :default_gravatar_rating, :default_gravatar_size, :secure_gravatar
7
6
  base.send :include, InstanceMethods
8
7
  end
9
8
 
@@ -11,20 +10,37 @@ module GravatarImageTag
11
10
 
12
11
  def gravatar_image_tag(email, options = {})
13
12
  options[:src] = gravatar_url( email, options.delete( :gravatar ) )
14
- options[:alt] ||= File.basename(options[:src], '.*').split('.').first.to_s.capitalize
13
+ options[:alt] ||= 'Gravatar'
15
14
  tag 'img', options, false, false # Patch submitted to rails to allow image_tag here https://rails.lighthouseapp.com/projects/8994/tickets/2878-image_tag-doesnt-allow-escape-false-option-anymore
16
15
  end
17
16
 
18
17
  def gravatar_url(email, overrides)
19
18
  overrides ||= {}
20
- url_params = {
19
+ gravatar_params = {
21
20
  :default => ActionView::Base.default_gravatar_image,
22
- :gravatar_id => Digest::MD5.hexdigest(email),
21
+ :filetype => ActionView::Base.default_gravatar_filetype,
22
+ :rating => ActionView::Base.default_gravatar_rating,
23
+ :secure => ActionView::Base.secure_gravatar,
23
24
  :size => ActionView::Base.default_gravatar_size
24
25
  }.merge(overrides).delete_if { |key, value| value.nil? }
25
- "#{GRAVATAR_BASE_URL}?#{url_params.map { |key, value| "#{key}=#{URI.escape(value.is_a?(String) ? value : value.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}"}.join('&')}"
26
+ "#{gravatar_url_base(gravatar_params.delete(:secure))}/#{gravatar_id(email, gravatar_params.delete(:filetype))}#{url_params(gravatar_params)}"
26
27
  end
27
28
 
29
+ private
30
+
31
+ def gravatar_url_base(secure = false)
32
+ 'http' + (!!secure ? 's://secure.' : '://') + 'gravatar.com/avatar'
33
+ end
34
+
35
+ def gravatar_id(email, filetype = nil)
36
+ "#{ Digest::MD5.hexdigest(email) }#{ ".#{filetype}" unless filetype.nil? }"
37
+ end
38
+
39
+ def url_params(gravatar_params)
40
+ return nil if gravatar_params.keys.count == 0
41
+ "?#{gravatar_params.map { |key, value| "#{key}=#{URI.escape(value.is_a?(String) ? value : value.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}"}.join('&')}"
42
+ end
43
+
28
44
  end
29
45
 
30
46
  end
@@ -8,8 +8,10 @@ describe GravatarImageTag do
8
8
 
9
9
  email = 'mdeering@mdeering.com'
10
10
  md5 = '4da9ad2bd4a2d1ce3c428e32c423588a'
11
+ default_filetype = :gif
11
12
  default_image = 'http://mdeering.com/images/default_gravatar.png'
12
13
  default_image_escaped = 'http%3A%2F%2Fmdeering.com%2Fimages%2Fdefault_gravatar.png'
14
+ default_rating = 'x'
13
15
  default_size = 50
14
16
  other_image = 'http://mdeering.com/images/other_gravatar.png'
15
17
  other_image_escaped = 'http%3A%2F%2Fmdeering.com%2Fimages%2Fother_gravatar.png'
@@ -18,6 +20,7 @@ describe GravatarImageTag do
18
20
 
19
21
  {
20
22
  { :gravatar_id => md5 } => {},
23
+ { :gravatar_id => md5 } => { :gravatar => { :rating => 'x' } },
21
24
  { :gravatar_id => md5, :size => 30 } => { :gravatar => {:size => 30 } },
22
25
  { :gravatar_id => md5, :default => other_image_escaped } => { :gravatar => {:default => other_image } },
23
26
  { :gravatar_id => md5, :default => other_image_escaped, :size => 30 } => { :gravatar => {:default => other_image, :size => 30 } }
@@ -25,13 +28,16 @@ describe GravatarImageTag do
25
28
  it "#gravatar_image_tag should create the provided url with the provided options #{options}" do
26
29
  view = ActionView::Base.new
27
30
  image_tag = view.gravatar_image_tag(email, options)
31
+ image_tag.include?("#{params.delete(:gravatar_id)}").should be_true
28
32
  params.all? {|key, value| image_tag.include?("#{key}=#{value}")}.should be_true
29
33
  end
30
34
  end
31
35
 
32
36
  {
33
- :default_gravatar_image => default_image,
34
- :default_gravatar_size => default_size
37
+ :default_gravatar_image => default_image,
38
+ :default_gravatar_filetype => default_filetype,
39
+ :default_gravatar_rating => default_rating,
40
+ :default_gravatar_size => default_size
35
41
  }.each do |singleton_variable, value|
36
42
  it "should create gravatar class (singleton) variable #{singleton_variable} on its included class" do
37
43
  ActionView::Base.send(singleton_variable).should == nil
@@ -50,8 +56,17 @@ describe GravatarImageTag do
50
56
  it "#gravatar_image_tag should create the provided url when defaults have been set with the provided options #{options}" do
51
57
  view = ActionView::Base.new
52
58
  image_tag = view.gravatar_image_tag(email, options)
59
+ image_tag.include?("#{params.delete(:gravatar_id)}.#{default_filetype}").should be_true
53
60
  params.all? {|key, value| image_tag.include?("#{key}=#{value}")}.should be_true
54
61
  end
55
62
  end
56
63
 
64
+ it 'should request the gravatar image from the non-secure server if the https => false option is given' do
65
+ (!!view.gravatar_image_tag(email, { :gravatar => { :secure => false } }).match(/^https:\/\/secure.gravatar.com\/avatar\//)).should be_false
66
+ end
67
+
68
+ it 'should request the gravatar image from the secure server if the https => true option is given' do
69
+ (!!view.gravatar_image_tag(email, { :gravatar => { :secure => true } }).match(/src="https:\/\/secure.gravatar.com\/avatar\//)).should be_true
70
+ end
71
+
57
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gravatar_image_tag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Deering