virility 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac683947bf3549a1496d9053715f9029040a37aa
4
- data.tar.gz: 25bd85930830e5d7a5941b2c42d2b3ed53569d68
3
+ metadata.gz: 0c8799af103e961664e0393019343a6f252d4979
4
+ data.tar.gz: 2037f8bfc2e346a761811d17187e886a79d14766
5
5
  SHA512:
6
- metadata.gz: c498ea3542fb97e31ab776eb242c12707c50157f3cbf6576170a6cc2bb135a68a061e37bbb748af986e9d07cad9600f83d5c8e82d2d3907e75126bba32659cfd
7
- data.tar.gz: 7c2911cc70fb54bdc4c9e0efb6e783f8c2317e85faad2e008c1dea9eadbf7199c481af3b92c2a69fc70bd734ff3245800a923a15a3641452690dc4d8ec5261ad
6
+ metadata.gz: 31b0b31c579607b0bb3002320e9e2968dbd335e2f4236619f7838158d9449c4ed27ccbf08031d652a3aaf8da26e26ddd53cd3154e77cad313590d61468717d8f
7
+ data.tar.gz: a2c111329aaa518ef6ee97c15d0c129cdd72825327a42a5aefb133097dfae98f813a99d54a84b8fcd69ab267a9b6341c2f2f26331fa40c42e99bfa760d6ce4d5
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .byebug_history
@@ -1 +1 @@
1
- ruby-2.3.1
1
+ ruby-2.3
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source 'https://rubygems.org'
3
3
  gem 'rake'
4
4
 
5
5
  # Specify your gem's dependencies in virility.gemspec
6
- gemspec
6
+ gemspec
data/README.md CHANGED
@@ -23,7 +23,7 @@ Or install it yourself as:
23
23
  If all you need is the raw shares numbers for a URL, Virility has some very simple methods you can use right out of the box:
24
24
 
25
25
  Virility.poll("http://rubygems.org") # => Returns a hash with the collected results from all of the social network strategies
26
- Virility.counts("http://rubygems.org") # => {:delicious=>0, :facebook=>72, :pinterest=>0, :plus_one=>138, :stumble_upon=>1488, :reddit=>2322}
26
+ Virility.counts("http://rubygems.org") # => {:facebook=>72, :pinterest=>0, :plus_one=>138, :stumble_upon=>1488, :reddit=>2322, :linkedin => 7}
27
27
  Virility.total("http://rubygems.org") # => 4020
28
28
  Virility.url("http://rubygems.org") # => Returns a Virility::Excitation object that you can manipulate
29
29
 
@@ -54,17 +54,23 @@ There are several ways you can access the object for an individual strategy.
54
54
 
55
55
  The Virility object has a __factory__ method that will return the strategy object:
56
56
 
57
- tweets = Virility.factory(:reddit, "http://rubygems.org") # => returns a Virility::Reddit object with the rubygems url
57
+ reddit = Virility.factory(:reddit, "http://rubygems.org") # => returns a Virility::Reddit object with the rubygems url
58
58
 
59
59
  You can also instate the Virility::Reddit object directly:
60
60
 
61
- tweets = Virility::Reddit.new("http://rubygems.org")
61
+ reddit = Virility::Reddit.new("http://rubygems.org")
62
62
 
63
63
  #### Ignoring Strategies
64
64
 
65
65
  Thanks to (Storyful)[https://github.com/storyful/virility], it is now possible to specify which strategies you want to use when initializing the Excitation object. Simply pass in an array of identifiers when creating the object and only those strategies will be implemented. The default is to use all available strategies.
66
66
 
67
- Virility.poll("http://rubygems.org",[:facebook,:linkedin,:pinterest])
67
+ Virility.poll("http://rubygems.org",strategies: [:facebook,:linkedin,:pinterest])
68
+
69
+ #### Using Proxy Server
70
+
71
+ It is now possible to specify the ip address of a proxy server to utilise whilst performing the call
72
+
73
+ Virility.poll("http://rubygems.org", proxy: { http_proxyaddr: '192.168.0.23', http_proxyport: 8888 } )
68
74
 
69
75
  #### Individual Usage Example
70
76
 
@@ -79,15 +85,15 @@ Let's say you only need to get the number of tweets for a URL, you could use the
79
85
 
80
86
  fb = Virility::Facebook.new("http://rubygems.org")
81
87
  fb.poll # returns a hash with the collected output from Facebook
82
- fb.count # returns the total_count for that URL
88
+ fb.count # returns the engagement_count for that URL
83
89
 
84
- The Facebook strategy leverages the FQL query against the link_stat table. Because of this, the following data fields are available:
85
- * like_count
86
- * click_count
87
- * share_count
90
+ The Facebook strategy leverages the Graph api call. Because of this, the following data fields are available:
88
91
  * comment_count
89
- * commentsbox_count
90
- * total_count (used as the default count for all Facebook activity)
92
+ * share_count
93
+ * engagement_count
94
+ * social_sentence
95
+
96
+ However, the share_count and engagement_count return the same value for un-authenticated api calls.
91
97
 
92
98
  #### Virility::Excitation
93
99
 
@@ -106,16 +112,16 @@ If you have a Virility::Excitation object, there are dynamic finders that will r
106
112
  If you have a Strategy object, any of the attributes that are commonly returned through the API call will be available as a dynamic finder. This is particularly useful with the Facebook strategy:
107
113
 
108
114
  fb = Virility::Facebook.new("http://rubygems.org/")
109
- fb.like_count # => 12
110
- fb.share_count # => 40
111
- fb.comment_count # => 20
112
- fb.total_count # => 72
115
+ fb.comment_count # => 0
116
+ fb.share_count # => 673
117
+ fb.engagement_count # => 673
118
+ fb.social_sentence # => "673 people like this."
113
119
 
114
120
  #### Combined Finders
115
121
 
116
122
  Leveraging both sets of dynamic finders allows you to build an Excitation object and get all the way through to an attribute for a specific strategy:
117
123
 
118
- Virility.url("http://google.com/").facebook.like_count # => 979662
124
+ Virility.url("http://google.com/").facebook.share_count # => 39790003
119
125
  Virility.url("http://google.com/").stumble_upon.info_link # => "http://www.stumbleupon.com/url/www.google.com/"
120
126
 
121
127
  ## Important Notes
@@ -8,7 +8,7 @@ require 'virility/excitation'
8
8
  require 'virility/strategy'
9
9
  require 'virility/exceptions'
10
10
 
11
- Dir["#{File.dirname(__FILE__)}/virility/strategies/**/*.rb"].each {|f| require f}
11
+ Dir["#{File.dirname(__FILE__)}/virility/strategies/**/*.rb"].each { |f| require f }
12
12
 
13
13
  module Virility
14
14
 
@@ -16,20 +16,20 @@ module Virility
16
16
  # Public API
17
17
  #
18
18
 
19
- def self.counts(url, strategies = [])
20
- Virility::Excitation.new(url, strategies).counts
19
+ def self.counts(url, strategies: [], proxy: {})
20
+ Virility::Excitation.new(url, strategies, proxy: proxy).counts
21
21
  end
22
22
 
23
- def self.total(url, strategies = [])
24
- Virility::Excitation.new(url, strategies).total
23
+ def self.total(url, strategies: [], proxy: {})
24
+ Virility::Excitation.new(url, strategies, proxy: proxy).total
25
25
  end
26
26
 
27
- def self.poll(url, strategies = [])
28
- Virility::Excitation.new(url, strategies).poll
27
+ def self.poll(url, strategies: [], proxy: {})
28
+ Virility::Excitation.new(url, strategies, proxy: proxy).poll
29
29
  end
30
30
 
31
- def self.url(url, strategies = [])
32
- virility = Virility::Excitation.new(url, strategies)
31
+ def self.url(url, strategies: [], proxy: {})
32
+ virility = Virility::Excitation.new(url, strategies, proxy: proxy)
33
33
  virility.poll
34
34
  virility
35
35
  end
@@ -38,7 +38,7 @@ module Virility
38
38
  # Factory
39
39
  #
40
40
 
41
- def self.factory(strategy, url)
42
- Virility::Excitation.new(url).send(strategy)
41
+ def self.factory(strategy, url, proxy = {})
42
+ Virility::Excitation.new(url).send(strategy, proxy)
43
43
  end
44
44
  end
@@ -2,17 +2,18 @@ module Virility
2
2
  class Excitation
3
3
  include Virility::Supporter
4
4
 
5
- attr_accessor :url, :results, :strategies, :counts
5
+ attr_accessor :url, :results, :strategies, :counts, :proxy
6
6
 
7
7
  #
8
8
  # Initialization
9
9
  #
10
- def initialize(url, strategies = [])
10
+ def initialize(url, strategies = [], proxy: {})
11
11
  @url = url
12
12
  @strategies = {}
13
13
  @results = {}
14
14
  @counts = {}
15
15
  @filter_strategies = strategies || []
16
+ @proxy = proxy
16
17
  collect_strategies
17
18
  filter_strategies
18
19
  end
@@ -66,7 +67,12 @@ module Virility
66
67
  #
67
68
 
68
69
  def collect_strategies
69
- Dir["#{File.dirname(__FILE__)}/strategies/**/*.rb"].each { |klass| @strategies[get_class_string(klass).to_sym] = Virility.const_get(camelize(get_class_string(klass))).new(@url) }
70
+ Dir["#{File.dirname(__FILE__)}/strategies/**/*.rb"].each { |klass| @strategies[get_class_string(klass).to_sym] = Virility.const_get(camelize(get_class_string(klass))).new(@url, proxy: @proxy) }
71
+ end
72
+
73
+ def filter_strategies
74
+ return if @filter_strategies.empty?
75
+ @strategies.select! { |k, _v| @filter_strategies.include?(k) }
70
76
  end
71
77
 
72
78
  def filter_strategies
@@ -1,23 +1,27 @@
1
1
  module Virility
2
2
  class Facebook < Strategy
3
- BASE_URL = "https://api.facebook.com/method/links.getStats?urls="
3
+ BASE_URL = 'https://graph.facebook.com/?fields=share,og_object{engagement,title}&id='.freeze
4
+
4
5
  def census
5
- self.class.get("#{BASE_URL}#{@url}")
6
+ self.class.get("#{BASE_URL}#{@url}", http_proxyaddr: @http_proxyaddr, http_proxyport: @http_proxyport)
6
7
  end
7
8
 
8
9
  def outcome
9
- @response.parsed_response["links_getStats_response"]["link_stat"]
10
+ response = @response.parsed_response.dig('share')
11
+ engagement = @response.parsed_response.dig('og_object', 'engagement')
12
+ response['engagement_count'] = engagement.dig('count')
13
+ response['social_sentence'] = engagement.dig('social_sentence')
14
+ response
10
15
  end
11
16
 
12
17
  def count
13
- results["total_count"] || 0
18
+ results.dig('engagement_count') || 0
14
19
  end
15
20
 
16
21
  private
17
22
 
18
23
  def valid_response_test
19
- @response.respond_to?(:parsed_response) and @response.parsed_response.is_a?(Hash) and !@response.parsed_response["links_getStats_response"].nil? and !@response.parsed_response["links_getStats_response"]["link_stat"].nil?
24
+ @response.respond_to?(:parsed_response) && @response.parsed_response.is_a?(Hash) && !@response.parsed_response['share'].nil?
20
25
  end
21
-
22
26
  end
23
27
  end
@@ -6,7 +6,7 @@ module Virility
6
6
  end
7
7
 
8
8
  def census
9
- self.class.get("http://www.reddit.com/api/info.json?&url=#{@url}")
9
+ self.class.get("http://www.reddit.com/api/info.json?&url=#{@url}", http_proxyaddr: @http_proxyaddr, http_proxyport: @http_proxyport)
10
10
  end
11
11
 
12
12
  def count
@@ -3,12 +3,14 @@ module Virility
3
3
  include HTTParty
4
4
  include Virility::Supporter
5
5
 
6
- attr_accessor :url, :response, :results, :original_url
6
+ attr_accessor :url, :response, :results, :original_url, :http_proxyaddr, :http_proxyport
7
7
 
8
- def initialize url
8
+ def initialize(url, proxy: {})
9
9
  @original_url = url
10
10
  @url = encode(url)
11
11
  @results = {}
12
+ @http_proxyaddr = proxy.dig(:http_proxyaddr)
13
+ @http_proxyport = proxy.dig(:http_proxyport)
12
14
  end
13
15
 
14
16
  #
@@ -96,4 +98,4 @@ module Virility
96
98
  end
97
99
 
98
100
  end
99
- end
101
+ end
@@ -1,3 +1,3 @@
1
1
  module Virility
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -28,8 +28,7 @@ module Virility
28
28
  :reddit => Virility::Reddit
29
29
  }
30
30
  FAKE_TESTING_STRATEGIES = [:digg, :instagram, :tumblr]
31
-
32
- FB_RESULTS = {"like_count"=>"19", "click_count"=>"0", "share_count"=>"3", "comment_count"=>"0", "commentsbox_count"=>"0", "total_count"=>"22"}
31
+ FB_RESULTS = { 'comment_count' => '4', 'share_count' => '97173', 'engagement_count' => '97384', 'social_sentence' => "97K people like this."}
33
32
  FAKE_FB_RESULTS = [:face_count, :pages, :friends]
34
33
  end
35
34
 
@@ -10,7 +10,7 @@ describe "Virility::Facebook" do
10
10
  expect{ @virility.poll }.not_to raise_error
11
11
  end
12
12
 
13
- ["like_count", "click_count", "share_count", "comment_count", "commentsbox_count", "total_count"].each do |attribute|
13
+ ["share_count", "comment_count", "engagement"].each do |attribute|
14
14
  it "should return 0 for #{attribute}" do
15
15
  expect(@virility.send(attribute.to_sym)).to eq(0)
16
16
  end
@@ -38,7 +38,7 @@ describe "Virility::Facebook" do
38
38
  it_should_behave_like "no facebook results"
39
39
  end
40
40
 
41
- context "when there is a result but no links_getStats_response" do
41
+ context "when there is a result but no response" do
42
42
  before(:each) do
43
43
  response = double("HTTParty::Response", :parsed_response => {})
44
44
  allow(Virility::Facebook).to receive(:get) { response }
@@ -59,8 +59,11 @@ describe "Virility::Facebook" do
59
59
  end
60
60
 
61
61
  context "when there is a valid result" do
62
+ let(:fb_response) { { 'share' => { 'comment_count' => '4', 'share_count' => '97173'},
63
+ 'og_object' => { 'engagement' => { 'count' => '97384', 'social_sentence' => "97K people like this."},
64
+ title: "Guardians of the Galaxy (2014)", id: "10150298925420108"}, id: "http://www.imdb.com/title/tt2015381/"} }
62
65
  before(:each) do
63
- response = double("HTTParty::Response", :parsed_response => {"links_getStats_response"=>{"list"=>"true", "link_stat"=>{"like_count"=>"977662", "click_count"=>"265614", "share_count"=>"3020040", "comment_count"=>"1118601", "commentsbox_count"=>"0", "total_count"=>"5116303"}}})
66
+ response = double("HTTParty::Response", parsed_response: fb_response)
64
67
  allow(Virility::Facebook).to receive(:get) { response }
65
68
  @virility = Virility::Facebook.new(@url)
66
69
  end
@@ -69,7 +72,7 @@ describe "Virility::Facebook" do
69
72
  expect{ @virility.poll }.not_to raise_error
70
73
  end
71
74
 
72
- {"like_count"=>"977662", "click_count"=>"265614", "share_count"=>"3020040", "comment_count"=>"1118601", "commentsbox_count"=>"0", "total_count"=>"5116303"}.each do |key, value|
75
+ {"share_count"=>"97173", "engagement_count"=>'97384', "comment_count"=>"4", 'social_sentence' => "97K people like this."}.each do |key, value|
73
76
  it "should return #{value} for #{key}" do
74
77
  expect(@virility.send(key.to_sym)).to eq(value)
75
78
  end
@@ -77,22 +80,22 @@ describe "Virility::Facebook" do
77
80
  end
78
81
 
79
82
  context "when there is a valid result, but not all fields are present" do
83
+ let(:fb_response) { { 'share' => { 'comment_count' => '4', 'share_count' => '97173'},
84
+ 'og_object' => { 'engagement' => { 'count' => '97384', 'social_sentence' => "97K people like this."},
85
+ title: "Guardians of the Galaxy (2014)", id: "10150298925420108"}, id: "http://www.imdb.com/title/tt2015381/"} }
80
86
  before(:each) do
81
- response = double("HTTParty::Response", :parsed_response => {"links_getStats_response"=>{"list"=>"true", "link_stat"=>{"like_count"=>"977662", "comment_count"=>"1118601", "commentsbox_count"=>"0", "total_count"=>"5116303"}}})
87
+ response = double('HTTParty::Response', parsed_response: fb_response)
82
88
  allow(Virility::Facebook).to receive(:get) { response }
83
89
  @virility = Virility::Facebook.new(@url)
84
90
  end
85
-
86
91
  it "should not raise an error" do
87
92
  expect{ @virility.poll }.not_to raise_error
88
93
  end
89
-
90
- {"like_count"=>"977662", "click_count"=>0, "share_count"=>0, "comment_count"=>"1118601", "commentsbox_count"=>"0", "total_count"=>"5116303"}.each do |key, value|
94
+ {"share_count"=>"97173", "engagement_count"=>'97384', "comment_count"=>"4", 'social_sentence' => "97K people like this."}.each do |key, value|
91
95
  it "should return #{value} for #{key}" do
92
96
  expect(@virility.send(key.to_sym)).to eq(value)
93
97
  end
94
98
  end
95
99
  end
96
100
  end
97
-
98
101
  end
@@ -31,7 +31,7 @@ describe "Virility" do
31
31
  describe "Public API testing" do
32
32
  before(:each) do
33
33
  @url = "http://creativeallies.com"
34
- allow(Virility::Facebook).to receive(:get) { double("HTTParty::Response", :parsed_response => {"links_getStats_response"=>{"list"=>"true", "link_stat"=>{"like_count"=>"977662", "click_count"=>"265614", "share_count"=>"3020040", "comment_count"=>"1118601", "commentsbox_count"=>"0", "total_count"=>"5116303"}}}) }
34
+ allow(Virility::Facebook).to receive(:get) { double("HTTParty::Response", :parsed_response => { 'share' => { 'comment_count' => '4', 'share_count' => '97173'}, 'og_object' => { 'engagement' => { 'count' => '97384', 'social_sentence' => "97K people like this."}, title: "Guardians of the Galaxy (2014)", id: "10150298925420108"}, id: "http://www.imdb.com/title/tt2015381/"}) }
35
35
  allow(Virility::Pinterest).to receive(:get) { double("HTTParty::Response", :parsed_response => {"count"=>1, "url"=>"http://creativeallies.com"}) }
36
36
  allow(Virility::PlusOne).to receive(:get) { double("HTTParty::Response", :parsed_response => {"shares"=>"8"}) }
37
37
  allow(Virility::StumbleUpon).to receive(:get) { double("HTTParty::Response", :parsed_response => {"url"=>"http://creativeallies.com/", "in_index"=>true, "publicid"=>"2UhTwK", "views"=>4731, "title"=>"Creative Allies | Create Art For Rockstars | Upload For A Chance To Win", "thumbnail"=>"http://cdn.stumble-upon.com/mthumb/388/49348388.jpg", "thumbnail_b"=>"http://cdn.stumble-upon.com/images/nobthumb.png", "submit_link"=>"http://www.stumbleupon.com/submit/?url=http://creativeallies.com/", "badge_link"=>"http://www.stumbleupon.com/badge/?url=http://creativeallies.com/", "info_link"=>"http://www.stumbleupon.com/url/creativeallies.com/"}) }
@@ -40,16 +40,16 @@ describe "Virility" do
40
40
  end
41
41
 
42
42
  it "Virility.counts should return a hash of counts" do
43
- expect(Virility.counts(@url)).to eq({:facebook=>5116303, :linkedin => 17, :pinterest=>1, :plus_one=>8, reddit:35, :stumble_upon=>4731 })
43
+ expect(Virility.counts(@url)).to eq({:facebook=>97384, :linkedin => 17, :pinterest=>1, :plus_one=>8, reddit:35, :stumble_upon=>4731})
44
44
  end
45
45
 
46
46
  it "Virility.total should return the total count" do
47
- expect(Virility.total(@url)).to eq(5121095)
47
+ expect(Virility.total(@url)).to eq(102176)
48
48
  end
49
49
 
50
50
  it "Virility.poll should return all of the hashed responses" do
51
51
  expect(Virility.poll(@url)).to eq({
52
- :facebook=>{"like_count"=>"977662", "click_count"=>"265614", "share_count"=>"3020040", "comment_count"=>"1118601", "commentsbox_count"=>"0", "total_count"=>"5116303"},
52
+ :facebook=>{"comment_count"=>"4", "share_count"=>"97173", "engagement_count"=>"97384", "social_sentence"=>"97K people like this."},
53
53
  :linkedin=>{ "count":17, "fCnt":"17", "fCntPlusOne":"18", "url":"http:\/\/creativeallies.com" },
54
54
  :pinterest=>{"count"=>1, "url"=>"http://creativeallies.com"},
55
55
  :plus_one=>{"shares"=>"8"},
@@ -59,7 +59,16 @@ describe "Virility" do
59
59
  end
60
60
  it "Virility.poll should return all of the hashed responses with filtered strategies only" do
61
61
  expect(Virility.poll(@url,[:facebook,:linkedin,:pinterest,:plus_one,:stumble_upon])).to eq({
62
- :facebook=>{"like_count"=>"977662", "click_count"=>"265614", "share_count"=>"3020040", "comment_count"=>"1118601", "commentsbox_count"=>"0", "total_count"=>"5116303"},
62
+ :facebook=>{"share_count"=>"97173", "engagement_count"=>'97384', "comment_count"=>"4", 'social_sentence' => "97K people like this."},
63
+ :linkedin=>{ "count":17, "fCnt":"17", "fCntPlusOne":"18", "url":"http:\/\/creativeallies.com" },
64
+ :pinterest=>{"count"=>1, "url"=>"http://creativeallies.com"},
65
+ :plus_one=>{"shares"=>"8"},
66
+ :stumble_upon=>{"url"=>"http://creativeallies.com/", "in_index"=>true, "publicid"=>"2UhTwK", "views"=>4731, "title"=>"Creative Allies | Create Art For Rockstars | Upload For A Chance To Win", "thumbnail"=>"http://cdn.stumble-upon.com/mthumb/388/49348388.jpg", "thumbnail_b"=>"http://cdn.stumble-upon.com/images/nobthumb.png", "submit_link"=>"http://www.stumbleupon.com/submit/?url=http://creativeallies.com/", "badge_link"=>"http://www.stumbleupon.com/badge/?url=http://creativeallies.com/", "info_link"=>"http://www.stumbleupon.com/url/creativeallies.com/"}
67
+ })
68
+ end
69
+ it "Virility.poll should return all of the hashed responses with filtered strategies only" do
70
+ expect(Virility.poll(@url,[:facebook,:linkedin,:pinterest,:plus_one,:stumble_upon])).to eq({
71
+ :facebook=>{"share_count"=>"97173", "engagement_count"=>'97384', "comment_count"=>"4", 'social_sentence' => "97K people like this."},
63
72
  :linkedin=>{ "count":17, "fCnt":"17", "fCntPlusOne":"18", "url":"http:\/\/creativeallies.com" },
64
73
  :pinterest=>{"count"=>1, "url"=>"http://creativeallies.com"},
65
74
  :plus_one=>{"shares"=>"8"},
@@ -21,6 +21,7 @@ Gem::Specification.new do |gem|
21
21
  # Development
22
22
  gem.add_development_dependency "rspec", "~> 3.4"
23
23
  gem.add_development_dependency "pry", "~> 0.10"
24
+
24
25
  # Dependencies
25
26
  gem.add_dependency "httparty", "~> 0.11"
26
27
  gem.add_dependency "multi_json", "~> 1.11"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virility
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Sanders
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-04 00:00:00.000000000 Z
11
+ date: 2017-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  requirements: []
128
128
  rubyforge_project:
129
- rubygems_version: 2.5.1
129
+ rubygems_version: 2.6.11
130
130
  signing_key:
131
131
  specification_version: 4
132
132
  summary: Virility calls upon the API's of many popular social services such as Facebook,