jagg 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +45 -0
- data/.rspec +3 -0
- data/Gemfile +3 -0
- data/README.md +17 -0
- data/Rakefile +6 -0
- data/Vagrantfile +22 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/jagg.gemspec +27 -0
- data/lib/jagg.rb +23 -0
- data/lib/jagg/constants.rb +3 -0
- data/lib/jagg/gravatar.rb +22 -0
- data/lib/jagg/gravatar/image.rb +105 -0
- data/lib/jagg/gravatar/profile.rb +127 -0
- data/lib/jagg/helpers/string.rb +10 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/jagg/gravatar/image_spec.rb +2 -0
- data/spec/unit/jagg/gravatar/profile_spec.rb +2 -0
- data/spec/unit/jagg/helpers/string_spec.rb +10 -0
- metadata +150 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cad2ab2e9fca8656974b6348bbfbf7889c083824
|
4
|
+
data.tar.gz: 62a6b23ae9ad5e7a760825d6c3d7252fa1ae41ff
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 36868c4227ec13ef3ca9ebc3f21682de1fe1212ff44dd28c4ebb5f1879dacfb304ae019e6361038147247d190516975851b19307bd96709a45fe3e03458567a5
|
7
|
+
data.tar.gz: 8eb5b1e1cbe564f8f3d6de2c0225055e2d922557e5dc87f286e818fe3be6759c67363213397c38a26273fc6e70b680458d1d78e68fe79ec5d68d8de027ad8e8d
|
data/.gitignore
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# Packages #
|
2
|
+
############
|
3
|
+
*.7z
|
4
|
+
*.dmg
|
5
|
+
*.gz
|
6
|
+
*.iso
|
7
|
+
*.jar
|
8
|
+
*.rar
|
9
|
+
*.tar
|
10
|
+
*.zip
|
11
|
+
|
12
|
+
# Logs #
|
13
|
+
########
|
14
|
+
*.log
|
15
|
+
|
16
|
+
# Databases #
|
17
|
+
#############
|
18
|
+
*.sql
|
19
|
+
*.sqlite
|
20
|
+
|
21
|
+
# OS Files #
|
22
|
+
############
|
23
|
+
.DS_Store
|
24
|
+
.Trashes
|
25
|
+
ehthumbs.db
|
26
|
+
Icon?
|
27
|
+
Thumbs.db
|
28
|
+
|
29
|
+
# Vagrant #
|
30
|
+
###########
|
31
|
+
.vagrant
|
32
|
+
|
33
|
+
# Ruby Files #
|
34
|
+
##############
|
35
|
+
/.bundle/
|
36
|
+
/.yardoc
|
37
|
+
/Gemfile.lock
|
38
|
+
/_yardoc/
|
39
|
+
/coverage/
|
40
|
+
/doc/
|
41
|
+
/pkg/
|
42
|
+
/spec/reports/
|
43
|
+
/tmp/
|
44
|
+
/vendor/bundle/
|
45
|
+
*.gem
|
data/.rspec
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# JAGG
|
2
|
+
|
3
|
+
Just Another Gravatar Gem!
|
4
|
+
|
5
|
+
This gem uses the Gravatar API to provide you with both profile and image data.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
You can install **JAGG** using the following command:
|
10
|
+
|
11
|
+
$ gem install jagg
|
12
|
+
|
13
|
+
## Development
|
14
|
+
|
15
|
+
After checking out the repo, run `rake spec` to run the tests.
|
16
|
+
|
17
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
data/Rakefile
ADDED
data/Vagrantfile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Get the name of the gem
|
2
|
+
name = File.basename(File.expand_path('..', __FILE__))
|
3
|
+
raise 'Could not determine gem name' unless name
|
4
|
+
|
5
|
+
# Configure Vagrant
|
6
|
+
Vagrant.configure(2) do |config|
|
7
|
+
config.vm.box = 'ubuntu/xenial64'
|
8
|
+
config.vm.synced_folder './', "/opt/#{name}"
|
9
|
+
config.vm.provision 'shell', inline: <<-SHELL
|
10
|
+
locale-gen en_GB.UTF-8
|
11
|
+
apt-get update
|
12
|
+
apt-get dist-upgrade -y
|
13
|
+
apt-get install build-essential git software-properties-common -y
|
14
|
+
apt-add-repository ppa:brightbox/ruby-ng -y
|
15
|
+
apt-get update
|
16
|
+
apt-get install ruby2.3 ruby2.3-dev -y
|
17
|
+
echo 'export PATH="$PATH:$HOME/.gem/ruby/2.3.0/bin"' | su vagrant -l -c 'tee -a ~/.bash_profile'
|
18
|
+
echo 'gem: --no-document --user-install' | su vagrant -l -c 'tee -a ~/.gemrc'
|
19
|
+
su vagrant -l -c 'gem install bundle'
|
20
|
+
su vagrant -l -c "cd /opt/#{name}; bundle install"
|
21
|
+
SHELL
|
22
|
+
end
|
data/bin/console
ADDED
data/bin/setup
ADDED
data/jagg.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'jagg/constants'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'jagg'
|
8
|
+
spec.version = JAGG::VERSION
|
9
|
+
spec.authors = ['Nialto Services']
|
10
|
+
spec.email = ['support@nialtoservices.co.uk']
|
11
|
+
|
12
|
+
spec.summary = %q{Just Another Gravatar Gem}
|
13
|
+
spec.description = %q{This gem uses the Gravatar API to provide you with both profile and image data.}
|
14
|
+
spec.homepage = 'https://github.com/nialtoservices/jagg'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0")
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'argspec', '~> 0.3', '>= 0.3.3'
|
22
|
+
spec.add_dependency 'httpclient', '~> 2.8', '>= 2.8.2.4'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.11'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
27
|
+
end
|
data/lib/jagg.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module JAGG
|
2
|
+
class << self
|
3
|
+
# Load the gem's dependencies
|
4
|
+
#
|
5
|
+
# @api private
|
6
|
+
#
|
7
|
+
def load!
|
8
|
+
require 'argspec'
|
9
|
+
require 'digest/md5'
|
10
|
+
require 'httpclient'
|
11
|
+
require 'json'
|
12
|
+
require 'uri'
|
13
|
+
|
14
|
+
require 'jagg/constants'
|
15
|
+
require 'jagg/helpers/string'
|
16
|
+
require 'jagg/gravatar'
|
17
|
+
require 'jagg/gravatar/image'
|
18
|
+
require 'jagg/gravatar/profile'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
JAGG.load!
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module JAGG
|
2
|
+
# The Gravatar class (and it's namespaces) are used to convert the data from
|
3
|
+
# Gravatar's API into objects.
|
4
|
+
#
|
5
|
+
class Gravatar
|
6
|
+
class << self
|
7
|
+
# Get the HTTP Client.
|
8
|
+
#
|
9
|
+
# @return [HTTPClient] A HTTPClient instance.
|
10
|
+
# @example
|
11
|
+
# JAGG::Gravatar.http_client
|
12
|
+
#
|
13
|
+
def http_client
|
14
|
+
return @client if @client
|
15
|
+
|
16
|
+
@client = HTTPClient.new
|
17
|
+
@client.redirect_uri_callback = Proc.new { |uri, result| result.header['location'][0] }
|
18
|
+
@client
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module JAGG
|
2
|
+
class Gravatar
|
3
|
+
# This class holds an image contained within the profile data.
|
4
|
+
#
|
5
|
+
class Image
|
6
|
+
class << self
|
7
|
+
include ArgumentSpecification::DSL
|
8
|
+
|
9
|
+
# Get the Gravatar image URL for an email.
|
10
|
+
#
|
11
|
+
# @param email [String] The user's email address.
|
12
|
+
# @param size [Integer] The size of the image (in pixels).
|
13
|
+
# @return [String] The URL to the gravatar image.
|
14
|
+
# @example Get a Thumbnail
|
15
|
+
# JAGG::Gravatar::Image.url('user@example.com') #=> "https://www.gravatar.com/avatar/b58996c504c5638798eb6b511e6f49af"
|
16
|
+
# @example Get a custom size
|
17
|
+
# JAGG::Gravatar::Image.url('user@example.com', 256) #=> "https://www.gravatar.com/avatar/b58996c504c5638798eb6b511e6f49af?size=256"
|
18
|
+
#
|
19
|
+
def url(email, size = nil)
|
20
|
+
argument(email) { should be_a(String) }
|
21
|
+
argument(size) { should be_an(Integer) } if size
|
22
|
+
|
23
|
+
uri = URI.parse('https://www.gravatar.com/')
|
24
|
+
uri.path = '/avatar/' + email.to_md5
|
25
|
+
uri.query = 'size=' + size.to_s if size
|
26
|
+
uri.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
# Get a Gravatar image object for an email.
|
30
|
+
#
|
31
|
+
# @param email [String] The user's email address.
|
32
|
+
# @return [JAGG::Gravatar::Image] A gravatar image object.
|
33
|
+
# @example
|
34
|
+
# JAGG::Gravatar::Image.for('user@example.com') #=> #<JAGG::Gravatar::Image:0x00000000000000 ...>
|
35
|
+
#
|
36
|
+
def for(email)
|
37
|
+
new(url(email))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
include ArgumentSpecification::DSL
|
42
|
+
|
43
|
+
# The URL to the image.
|
44
|
+
#
|
45
|
+
attr_reader :url
|
46
|
+
|
47
|
+
# The type/kind of image (optional).
|
48
|
+
#
|
49
|
+
attr_reader :kind
|
50
|
+
|
51
|
+
# Create a new image object.
|
52
|
+
#
|
53
|
+
# @param url [String] The url to the image.
|
54
|
+
# @param kind [Symbol] The type/kind of image.
|
55
|
+
# @example
|
56
|
+
# JAGG::Gravatar::Image.new(url, kind) #=> #<JAGG::Gravatar::Image:0x00000000000000 ...>
|
57
|
+
#
|
58
|
+
def initialize(url, kind = nil)
|
59
|
+
uri = URI.parse(url)
|
60
|
+
uri.query = nil
|
61
|
+
@url = uri.to_s
|
62
|
+
@kind = kind
|
63
|
+
end
|
64
|
+
|
65
|
+
# Get the URL for the image at a specific size.
|
66
|
+
#
|
67
|
+
# @param size [Integer] The size of the image (in pixels).
|
68
|
+
# @return [String] The URL of the image at the specified size.
|
69
|
+
# @example
|
70
|
+
# image.url_of_size(256) #=> "https://www.gravatar.com/avatar/b58996c504c5638798eb6b511e6f49af?size=256"
|
71
|
+
#
|
72
|
+
def url_of_size(size)
|
73
|
+
return nil unless @url
|
74
|
+
|
75
|
+
argument(size) do
|
76
|
+
should be_an(Integer)
|
77
|
+
should be_within_range(1..2048)
|
78
|
+
end
|
79
|
+
|
80
|
+
uri = URI.parse(@url)
|
81
|
+
uri.query = 'size=' + size.to_s
|
82
|
+
uri.to_s
|
83
|
+
end
|
84
|
+
|
85
|
+
# Fetch the image data.
|
86
|
+
#
|
87
|
+
# @param size [Integer] The size of the image (in pixels).
|
88
|
+
# @return [String] The raw image data.
|
89
|
+
# @example
|
90
|
+
# image.fetch #=> "..."
|
91
|
+
#
|
92
|
+
def fetch(size = nil)
|
93
|
+
return nil unless @url
|
94
|
+
|
95
|
+
url = size ? url_of_size(size) : @url
|
96
|
+
|
97
|
+
response = Gravatar.http_client.get(url, follow_redirect: true)
|
98
|
+
|
99
|
+
return nil unless response.ok?
|
100
|
+
|
101
|
+
response.body
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
module JAGG
|
2
|
+
class Gravatar
|
3
|
+
# This class is responsible for fetching and parsing a user's profile.
|
4
|
+
#
|
5
|
+
class Profile
|
6
|
+
class << self
|
7
|
+
include ArgumentSpecification::DSL
|
8
|
+
|
9
|
+
# Get the Gravatar profile URL for an email.
|
10
|
+
#
|
11
|
+
# @param email [String] The user's email address.
|
12
|
+
# @param format [Symbol] The format to render the profile in.
|
13
|
+
# @return [String] The URL to the gravatar profile.
|
14
|
+
# @example HTML Format (default)
|
15
|
+
# JAGG::Gravatar::Profile.url('user@example.com') #=> "https://www.gravatar.com/b58996c504c5638798eb6b511e6f49af"
|
16
|
+
# @example JSON Format
|
17
|
+
# JAGG::Gravatar::Profile.url('user@example.com', :json) #=> "https://www.gravatar.com/b58996c504c5638798eb6b511e6f49af.json"
|
18
|
+
# @example XML Format
|
19
|
+
# JAGG::Gravatar::Profile.url('user@example.com', :xml) #=> "https://www.gravatar.com/b58996c504c5638798eb6b511e6f49af.xml"
|
20
|
+
#
|
21
|
+
def url(email, format = nil)
|
22
|
+
argument(email) { should be_a(String) }
|
23
|
+
argument(format) { should be_one_of(:json, :xml) } if format
|
24
|
+
|
25
|
+
uri = URI.parse('https://www.gravatar.com/')
|
26
|
+
uri.path = '/' + email.to_md5
|
27
|
+
uri.path += '.' + format.to_s if format
|
28
|
+
uri.to_s
|
29
|
+
end
|
30
|
+
|
31
|
+
# Get a Gravatar profile object for an email.
|
32
|
+
#
|
33
|
+
# @param email [String] The user's email address.
|
34
|
+
# @return [JAGG::Gravatar::Profile] A gravatar profile object.
|
35
|
+
# @example
|
36
|
+
# JAGG::Gravatar::Profile.for('user@example.com') #=> #<JAGG::Gravatar::Profile:0x00000000000000 ...>
|
37
|
+
#
|
38
|
+
def for(email)
|
39
|
+
response = Gravatar.http_client.get(url(email, :json), follow_redirect: true)
|
40
|
+
|
41
|
+
return nil unless response.ok?
|
42
|
+
return nil unless response = JSON.parse(response.body)
|
43
|
+
return nil unless response = response['entry'][0] rescue nil
|
44
|
+
|
45
|
+
new(response)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# The user's gravatar identifier.
|
50
|
+
#
|
51
|
+
attr_reader :gravatar_id
|
52
|
+
|
53
|
+
# The user's first name.
|
54
|
+
#
|
55
|
+
attr_reader :first_name
|
56
|
+
|
57
|
+
# The user's last name.
|
58
|
+
#
|
59
|
+
attr_reader :last_name
|
60
|
+
|
61
|
+
# The user's formatted name (usually full name).
|
62
|
+
#
|
63
|
+
attr_reader :formatted_name
|
64
|
+
|
65
|
+
# The user's display name.
|
66
|
+
#
|
67
|
+
attr_reader :display_name
|
68
|
+
|
69
|
+
# The user's preferred username.
|
70
|
+
#
|
71
|
+
attr_reader :preferred_username
|
72
|
+
|
73
|
+
# The user's thumbnail image.
|
74
|
+
#
|
75
|
+
attr_reader :thumbnail
|
76
|
+
|
77
|
+
# An array of the user's images.
|
78
|
+
#
|
79
|
+
attr_reader :images
|
80
|
+
|
81
|
+
private
|
82
|
+
# Create a new profile instance
|
83
|
+
#
|
84
|
+
# @param raw [Hash] A hash containins raw profile data.
|
85
|
+
# @example
|
86
|
+
# Profile.new(raw) #=> #<JAGG::Gravatar::Profile:0x00000000000000 ...>
|
87
|
+
#
|
88
|
+
def initialize(raw)
|
89
|
+
@gravatar_id = raw['id']
|
90
|
+
|
91
|
+
if display_name = raw['displayName']
|
92
|
+
@display_name = display_name
|
93
|
+
end
|
94
|
+
|
95
|
+
if preferred_username = raw['preferredUsername']
|
96
|
+
@preferred_username = preferred_username
|
97
|
+
end
|
98
|
+
|
99
|
+
if thumbnail_url = raw['thumbnailUrl']
|
100
|
+
@thumbnail = Gravatar::Image.new(thumbnail_url, :thumbnail)
|
101
|
+
end
|
102
|
+
|
103
|
+
if raw['photos'].is_a?(Array)
|
104
|
+
@images = raw['photos'].map do |data|
|
105
|
+
Gravatar::Image.new(data['value'], data['type'].to_sym)
|
106
|
+
end
|
107
|
+
else
|
108
|
+
@images = []
|
109
|
+
end
|
110
|
+
|
111
|
+
if raw['name'].is_a?(Hash)
|
112
|
+
if first_name = raw['name']['givenName']
|
113
|
+
@first_name = first_name
|
114
|
+
end
|
115
|
+
|
116
|
+
if last_name = raw['name']['familyName']
|
117
|
+
@last_name = last_name
|
118
|
+
end
|
119
|
+
|
120
|
+
if formatted_name = raw['name']['formatted']
|
121
|
+
@formatted_name = formatted_name
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jagg
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nialto Services
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-11-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: argspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.3'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.3.3
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.3'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.3.3
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: httpclient
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2.8'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 2.8.2.4
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '2.8'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 2.8.2.4
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: bundler
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.11'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '1.11'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: rake
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '10.0'
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '10.0'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rspec
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '3.0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '3.0'
|
95
|
+
description: This gem uses the Gravatar API to provide you with both profile and image
|
96
|
+
data.
|
97
|
+
email:
|
98
|
+
- support@nialtoservices.co.uk
|
99
|
+
executables: []
|
100
|
+
extensions: []
|
101
|
+
extra_rdoc_files: []
|
102
|
+
files:
|
103
|
+
- ".gitignore"
|
104
|
+
- ".rspec"
|
105
|
+
- Gemfile
|
106
|
+
- README.md
|
107
|
+
- Rakefile
|
108
|
+
- Vagrantfile
|
109
|
+
- bin/console
|
110
|
+
- bin/setup
|
111
|
+
- jagg.gemspec
|
112
|
+
- lib/jagg.rb
|
113
|
+
- lib/jagg/constants.rb
|
114
|
+
- lib/jagg/gravatar.rb
|
115
|
+
- lib/jagg/gravatar/image.rb
|
116
|
+
- lib/jagg/gravatar/profile.rb
|
117
|
+
- lib/jagg/helpers/string.rb
|
118
|
+
- spec/spec_helper.rb
|
119
|
+
- spec/unit/jagg/gravatar/image_spec.rb
|
120
|
+
- spec/unit/jagg/gravatar/profile_spec.rb
|
121
|
+
- spec/unit/jagg/helpers/string_spec.rb
|
122
|
+
homepage: https://github.com/nialtoservices/jagg
|
123
|
+
licenses:
|
124
|
+
- MIT
|
125
|
+
metadata: {}
|
126
|
+
post_install_message:
|
127
|
+
rdoc_options: []
|
128
|
+
require_paths:
|
129
|
+
- lib
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
requirements: []
|
141
|
+
rubyforge_project:
|
142
|
+
rubygems_version: 2.6.7
|
143
|
+
signing_key:
|
144
|
+
specification_version: 4
|
145
|
+
summary: Just Another Gravatar Gem
|
146
|
+
test_files:
|
147
|
+
- spec/spec_helper.rb
|
148
|
+
- spec/unit/jagg/gravatar/image_spec.rb
|
149
|
+
- spec/unit/jagg/gravatar/profile_spec.rb
|
150
|
+
- spec/unit/jagg/helpers/string_spec.rb
|