aggravatar 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +15 -3
- data/Gemfile +4 -0
- data/{LICENSE → LICENSE.txt} +2 -0
- data/README.md +37 -0
- data/Rakefile +4 -42
- data/aggravatar.gemspec +19 -0
- data/lib/aggravatar.rb +7 -46
- data/lib/aggravatar/gravatar.rb +55 -0
- data/lib/aggravatar/version.rb +3 -0
- data/spec/aggravatar_spec.rb +10 -22
- data/spec/gravatar_spec.rb +79 -0
- metadata +46 -64
- data/README.rdoc +0 -39
- data/VERSION +0 -1
- data/spec/spec_helper.rb +0 -9
data/.gitignore
CHANGED
data/Gemfile
ADDED
data/{LICENSE → LICENSE.txt}
RENAMED
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Aggravatar
|
2
|
+
|
3
|
+
You give it an email, it gives you a Gravatar URL. What more do you want?
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'aggravatar'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install aggravatar
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
require "aggravatar"
|
23
|
+
|
24
|
+
Aggravatar.gravatar_url "adam@adamtanner.org", size: 200, rating: "g", force_default: true
|
25
|
+
# => "http://www.gravatar.com/avatar/11591979f29ab9c2bb58868232d07b88?size=200&rating=g&forcedefault=y
|
26
|
+
|
27
|
+
Aggravatar.secure_gravatar_url "adam@adamtanner.org", default: "http://example.com/images/avatar.jpg"
|
28
|
+
# => "https://secure.gravatar.com/avatar/11591979f29ab9c2bb58868232d07b88?default=http%3A%2F%2Fexample.com%2Fimages%2Favatar.jpg"
|
29
|
+
```
|
30
|
+
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
1. Fork it
|
34
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
35
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
36
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
37
|
+
5. Create new Pull Request
|
data/Rakefile
CHANGED
@@ -1,44 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rake/testtask"
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "aggravatar"
|
8
|
-
gem.summary = %Q{TODO: one-line summary of your gem}
|
9
|
-
gem.description = %Q{TODO: longer description of your gem}
|
10
|
-
gem.email = "adam@adamtanner.org"
|
11
|
-
gem.homepage = "http://github.com/cxvii/aggravatar"
|
12
|
-
gem.authors = ["Adam Tanner"]
|
13
|
-
gem.add_development_dependency "rspec"
|
14
|
-
gem.add_development_dependency "yard"
|
15
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
|
-
end
|
17
|
-
rescue LoadError
|
18
|
-
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
19
|
-
end
|
20
|
-
|
21
|
-
require 'spec/rake/spectask'
|
22
|
-
Spec::Rake::SpecTask.new(:spec) do |spec|
|
23
|
-
spec.libs << 'lib' << 'spec'
|
24
|
-
spec.spec_files = FileList['spec/**/*_spec.rb']
|
25
|
-
end
|
26
|
-
|
27
|
-
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
28
|
-
spec.libs << 'lib' << 'spec'
|
29
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
30
|
-
spec.rcov = true
|
31
|
-
end
|
32
|
-
|
33
|
-
task :spec => :check_dependencies
|
34
|
-
|
35
|
-
task :default => :spec
|
36
|
-
|
37
|
-
begin
|
38
|
-
require 'yard'
|
39
|
-
YARD::Rake::YardocTask.new
|
40
|
-
rescue LoadError
|
41
|
-
task :yardoc do
|
42
|
-
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
43
|
-
end
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.pattern = "spec/**/*_spec.rb"
|
44
6
|
end
|
data/aggravatar.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'aggravatar/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "aggravatar"
|
8
|
+
gem.version = Aggravatar::VERSION
|
9
|
+
gem.authors = ["Adam Tanner"]
|
10
|
+
gem.email = ["adam@adamtanner.org"]
|
11
|
+
gem.description = %q{ You give it an email, it gives you a Gravatar URL. What more do you want? }
|
12
|
+
gem.summary = %q{ You give it an email, it gives you a Gravatar URL. What more do you want? }
|
13
|
+
gem.homepage = "http://github.com/adamtanner/aggravatar"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
end
|
data/lib/aggravatar.rb
CHANGED
@@ -1,51 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
base.send(:include, InstanceMethods)
|
4
|
-
end
|
5
|
-
|
6
|
-
def self.host
|
7
|
-
"gravatar.com"
|
8
|
-
end
|
1
|
+
require "aggravatar/version"
|
2
|
+
require "aggravatar/gravatar"
|
9
3
|
|
10
|
-
|
11
|
-
|
4
|
+
module Aggravatar
|
5
|
+
def self.gravatar_url(email, params = {})
|
6
|
+
Aggravatar::Gravatar.new(email, params).url
|
12
7
|
end
|
13
|
-
|
14
|
-
module InstanceMethods
|
15
|
-
require 'MD5'
|
16
|
-
require 'URI'
|
17
|
-
|
18
|
-
def gravatar_for(email, options={})
|
19
|
-
build_image_tag(hash(email), options)
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
def hash(email)
|
24
|
-
MD5.md5(email.strip)
|
25
|
-
end
|
26
|
-
|
27
|
-
def build_image_tag(email_hash, options={})
|
28
|
-
"<img src=\"#{build_url(email_hash, options)}\" #{build_tag_attributes(options[:html_attributes])}/>"
|
29
|
-
end
|
30
8
|
|
31
|
-
|
32
|
-
|
33
|
-
attributes.inject([]){|array, attribute| array << "#{attribute[0].to_s}=\"#{attribute[1]}\""}.join(" ")
|
34
|
-
end
|
35
|
-
|
36
|
-
def build_query(query_options)
|
37
|
-
query_options = query_options.reject{|key, value| key == :html_attributes}
|
38
|
-
return nil if query_options.empty?
|
39
|
-
query_options[:default] = URI.escape(query_options[:default], ":/")
|
40
|
-
query_options.inject([]){|array, option| array << "#{option[0].to_s[0].chr}=#{option[1]}"}.join("&")
|
41
|
-
end
|
42
|
-
|
43
|
-
def build_url(email_hash, query)
|
44
|
-
uri = URI::HTTP.build(
|
45
|
-
:host => Aggravatar.host,
|
46
|
-
:path => Aggravatar.path(email_hash),
|
47
|
-
:query => build_query(query)
|
48
|
-
)
|
49
|
-
end
|
9
|
+
def self.secure_gravatar_url(email, params = {})
|
10
|
+
Aggravatar::Gravatar.new(email, params).secure_url
|
50
11
|
end
|
51
12
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require "digest/md5"
|
2
|
+
|
3
|
+
class Aggravatar::Gravatar
|
4
|
+
attr_reader :email
|
5
|
+
|
6
|
+
def initialize(email, params = {})
|
7
|
+
@email = email
|
8
|
+
@params = params
|
9
|
+
end
|
10
|
+
|
11
|
+
def email_hash
|
12
|
+
Digest::MD5.hexdigest email
|
13
|
+
end
|
14
|
+
|
15
|
+
def url
|
16
|
+
uri = URI::HTTP.build(
|
17
|
+
host: "www.gravatar.com",
|
18
|
+
path: avatar_path
|
19
|
+
)
|
20
|
+
|
21
|
+
uri.query = build_query unless @params.empty?
|
22
|
+
|
23
|
+
uri.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
def secure_url
|
27
|
+
uri = URI::HTTPS.build(
|
28
|
+
host: "secure.gravatar.com",
|
29
|
+
path: avatar_path
|
30
|
+
)
|
31
|
+
|
32
|
+
uri.query = build_query unless @params.empty?
|
33
|
+
|
34
|
+
uri.to_s
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
def avatar_path
|
39
|
+
"/avatar/#{email_hash}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def build_query
|
43
|
+
URI.encode_www_form normalized_params
|
44
|
+
end
|
45
|
+
|
46
|
+
def normalized_params
|
47
|
+
params = @params.dup
|
48
|
+
|
49
|
+
if params.delete(:force_default)
|
50
|
+
params[:forcedefault] = "y"
|
51
|
+
end
|
52
|
+
|
53
|
+
params
|
54
|
+
end
|
55
|
+
end
|
data/spec/aggravatar_spec.rb
CHANGED
@@ -1,29 +1,17 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "minitest/spec"
|
2
|
+
require "minitest/autorun"
|
3
|
+
require "aggravatar"
|
3
4
|
|
4
|
-
describe
|
5
|
-
|
6
|
-
|
7
|
-
include Aggravatar
|
8
|
-
end
|
9
|
-
@helper = Helper.new
|
10
|
-
end
|
5
|
+
describe Aggravatar do
|
6
|
+
it "provides a Gravatar URL" do
|
7
|
+
url = Aggravatar.gravatar_url "adam@adamtanner.org"
|
11
8
|
|
12
|
-
|
13
|
-
valid_image_tag = "<img src=\"http://gravatar.com/avatar/11591979f29ab9c2bb58868232d07b88\" />"
|
14
|
-
image_tag = @helper.gravatar_for("adam@adamtanner.org")
|
15
|
-
image_tag.should == valid_image_tag
|
9
|
+
url.must_equal "http://www.gravatar.com/avatar/11591979f29ab9c2bb58868232d07b88"
|
16
10
|
end
|
17
11
|
|
18
|
-
it "
|
19
|
-
|
20
|
-
image_tag = @helper.gravatar_for("adam@adamtanner.org", :rating => "g", :default => "http://example.com/images/default.jpg", :size => 50)
|
21
|
-
image_tag.should == valid_image_tag
|
22
|
-
end
|
12
|
+
it "provides a secure Gravatar URL" do
|
13
|
+
url = Aggravatar.secure_gravatar_url "adam@adamtanner.org"
|
23
14
|
|
24
|
-
|
25
|
-
valid_image_tag = "<img src=\"http://gravatar.com/avatar/11591979f29ab9c2bb58868232d07b88\" class=\"gravatar\" id=\"my_gravatar\"/>"
|
26
|
-
image_tag = @helper.gravatar_for("adam@adamtanner.org", :html_attributes => {:class => "gravatar", :id => "my_gravatar"})
|
27
|
-
image_tag.should == valid_image_tag
|
15
|
+
url.must_equal "https://secure.gravatar.com/avatar/11591979f29ab9c2bb58868232d07b88"
|
28
16
|
end
|
29
17
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require "minitest/spec"
|
2
|
+
require "minitest/autorun"
|
3
|
+
require "aggravatar"
|
4
|
+
|
5
|
+
describe Aggravatar::Gravatar do
|
6
|
+
it "has an email" do
|
7
|
+
email = "adam@adamtanner.org"
|
8
|
+
gravatar = Aggravatar::Gravatar.new(email)
|
9
|
+
|
10
|
+
gravatar.email.must_equal email
|
11
|
+
end
|
12
|
+
|
13
|
+
it "has a hash of the email" do
|
14
|
+
email = "adam@adamtanner.org"
|
15
|
+
hash = "11591979f29ab9c2bb58868232d07b88"
|
16
|
+
gravatar = Aggravatar::Gravatar.new(email)
|
17
|
+
|
18
|
+
gravatar.email_hash.must_equal hash
|
19
|
+
end
|
20
|
+
|
21
|
+
it "builds a Gravatar URL" do
|
22
|
+
email = "adam@adamtanner.org"
|
23
|
+
gravatar = Aggravatar::Gravatar.new(email)
|
24
|
+
|
25
|
+
gravatar.url.must_equal "http://www.gravatar.com/avatar/11591979f29ab9c2bb58868232d07b88"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "builds a secure Gravatar URL" do
|
29
|
+
email = "adam@adamtanner.org"
|
30
|
+
gravatar = Aggravatar::Gravatar.new(email)
|
31
|
+
|
32
|
+
gravatar.secure_url.must_equal "https://secure.gravatar.com/avatar/11591979f29ab9c2bb58868232d07b88"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "supports the size option" do
|
36
|
+
email = "adam@adamtanner.org"
|
37
|
+
|
38
|
+
gravatar = Aggravatar::Gravatar.new(email, size: 200)
|
39
|
+
|
40
|
+
gravatar.url.must_match "?size=200"
|
41
|
+
gravatar.secure_url.must_match "?size=200"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "supports the rating option" do
|
45
|
+
email = "adam@adamtanner.org"
|
46
|
+
|
47
|
+
gravatar = Aggravatar::Gravatar.new(email, rating: "g")
|
48
|
+
|
49
|
+
gravatar.url.must_match "?rating=g"
|
50
|
+
gravatar.secure_url.must_match "?rating=g"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "supports the default option" do
|
54
|
+
email = "adam@adamtanner.org"
|
55
|
+
|
56
|
+
gravatar = Aggravatar::Gravatar.new(email, default: "404")
|
57
|
+
|
58
|
+
gravatar.url.must_match "?default=404"
|
59
|
+
gravatar.secure_url.must_match "?default=404"
|
60
|
+
end
|
61
|
+
|
62
|
+
it "supports the default option with URL" do
|
63
|
+
email = "adam@adamtanner.org"
|
64
|
+
|
65
|
+
gravatar = Aggravatar::Gravatar.new(email, default: "http://example.com/me.jpg")
|
66
|
+
|
67
|
+
gravatar.url.must_match "?default=http%3A%2F%2Fexample.com%2Fme.jpg"
|
68
|
+
gravatar.secure_url.must_match "?default=http%3A%2F%2Fexample.com%2Fme.jpg"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "supports the force default option" do
|
72
|
+
email = "adam@adamtanner.org"
|
73
|
+
|
74
|
+
gravatar = Aggravatar::Gravatar.new(email, force_default: true)
|
75
|
+
|
76
|
+
gravatar.url.must_match "?forcedefault=y"
|
77
|
+
gravatar.secure_url.must_match "?forcedefault=y"
|
78
|
+
end
|
79
|
+
end
|
metadata
CHANGED
@@ -1,84 +1,66 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: aggravatar
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
|
-
authors:
|
7
|
+
authors:
|
7
8
|
- Adam Tanner
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
type: :development
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: "0"
|
24
|
-
version:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: yard
|
27
|
-
type: :development
|
28
|
-
version_requirement:
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: "0"
|
34
|
-
version:
|
35
|
-
description: You give it an email. It gives you a Gravatar. What more do you want?
|
36
|
-
email: adam@adamtanner.org
|
12
|
+
date: 2013-01-22 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: ! ' You give it an email, it gives you a Gravatar URL. What more do you
|
15
|
+
want? '
|
16
|
+
email:
|
17
|
+
- adam@adamtanner.org
|
37
18
|
executables: []
|
38
|
-
|
39
19
|
extensions: []
|
40
|
-
|
41
|
-
|
42
|
-
- LICENSE
|
43
|
-
- README.rdoc
|
44
|
-
files:
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
45
22
|
- .document
|
46
23
|
- .gitignore
|
47
|
-
-
|
48
|
-
-
|
24
|
+
- Gemfile
|
25
|
+
- LICENSE.txt
|
26
|
+
- README.md
|
49
27
|
- Rakefile
|
50
|
-
-
|
28
|
+
- aggravatar.gemspec
|
51
29
|
- lib/aggravatar.rb
|
30
|
+
- lib/aggravatar/gravatar.rb
|
31
|
+
- lib/aggravatar/version.rb
|
52
32
|
- spec/aggravatar_spec.rb
|
53
|
-
- spec/
|
54
|
-
|
55
|
-
homepage: http://github.com/cxvii/aggravatar
|
33
|
+
- spec/gravatar_spec.rb
|
34
|
+
homepage: http://github.com/adamtanner/aggravatar
|
56
35
|
licenses: []
|
57
|
-
|
58
36
|
post_install_message:
|
59
|
-
rdoc_options:
|
60
|
-
|
61
|
-
require_paths:
|
37
|
+
rdoc_options: []
|
38
|
+
require_paths:
|
62
39
|
- lib
|
63
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
40
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
hash: -2729454159932039267
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
hash: -2729454159932039267
|
75
58
|
requirements: []
|
76
|
-
|
77
59
|
rubyforge_project:
|
78
|
-
rubygems_version: 1.
|
60
|
+
rubygems_version: 1.8.23
|
79
61
|
signing_key:
|
80
|
-
specification_version:
|
81
|
-
summary:
|
82
|
-
test_files:
|
62
|
+
specification_version: 3
|
63
|
+
summary: You give it an email, it gives you a Gravatar URL. What more do you want?
|
64
|
+
test_files:
|
83
65
|
- spec/aggravatar_spec.rb
|
84
|
-
- spec/
|
66
|
+
- spec/gravatar_spec.rb
|
data/README.rdoc
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
|
2
|
-
= Aggravatar
|
3
|
-
|
4
|
-
You give it an email, it gives you a Gravatar. What more do you want?
|
5
|
-
|
6
|
-
== How to Use It
|
7
|
-
Step 1: First you install it. (Assuming you already have Github sources added.)
|
8
|
-
gem install adamtanner-aggravatar
|
9
|
-
|
10
|
-
Step 2: Then you include Aggravatar in your class.
|
11
|
-
require 'aggravatar'
|
12
|
-
include Aggravatar
|
13
|
-
|
14
|
-
== How to Use It From Rails
|
15
|
-
Step 1: First you install it as a plugin.
|
16
|
-
script/plugin install git://github.com/adamtanner/aggravatar.git
|
17
|
-
|
18
|
-
Step 2: Skip to Step 3.
|
19
|
-
|
20
|
-
----------------------------
|
21
|
-
|
22
|
-
Step 3: Then you ask it for a Gravatar.
|
23
|
-
gravatar_for("email@example.com")
|
24
|
-
|
25
|
-
Aggravatar even supports the wide array of options Gravatar gives you!
|
26
|
-
gravatar_for("email@example.com", :size => 80, :default => "/my_default_gravatar.png", :rating => 'g')
|
27
|
-
|
28
|
-
I know what you're thinking, and I've already got you covered.
|
29
|
-
You're saying, "Hey, what if I need to add a class/title/id/etc to my Gravatar?!"
|
30
|
-
|
31
|
-
Well here you go:
|
32
|
-
gravatar_for("email@example.com", :html_attributes => {:class => "gravatar", :id => "my_gravatar", :title => "My Gravatar"}")
|
33
|
-
|
34
|
-
You're not limited to just class, title, and id either! You can use any attribute you want! (even ones you make up!)
|
35
|
-
|
36
|
-
== Copyright
|
37
|
-
|
38
|
-
Copyright (c) 2009 Adam Tanner. See LICENSE for details.
|
39
|
-
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.1.0
|