popularity 0.0.1

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.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +21 -0
  5. data/Gemfile.lock +126 -0
  6. data/LICENSE.txt +20 -0
  7. data/README.rdoc +92 -0
  8. data/Rakefile +54 -0
  9. data/VERSION +1 -0
  10. data/lib/.DS_Store +0 -0
  11. data/lib/popularity.rb +92 -0
  12. data/lib/popularity/crawler.rb +76 -0
  13. data/lib/popularity/facebook.rb +26 -0
  14. data/lib/popularity/github.rb +28 -0
  15. data/lib/popularity/google_plus.rb +22 -0
  16. data/lib/popularity/medium.rb +33 -0
  17. data/lib/popularity/pinterest.rb +21 -0
  18. data/lib/popularity/reddit_comment.rb +32 -0
  19. data/lib/popularity/reddit_post.rb +47 -0
  20. data/lib/popularity/reddit_share.rb +72 -0
  21. data/lib/popularity/results_container.rb +70 -0
  22. data/lib/popularity/search.rb +79 -0
  23. data/lib/popularity/soundcloud.rb +44 -0
  24. data/lib/popularity/twitter.rb +21 -0
  25. data/popularity.gemspec +124 -0
  26. data/spec/cassettes/facebook.yml +50 -0
  27. data/spec/cassettes/github-valid.yml +105 -0
  28. data/spec/cassettes/google_plus.yml +89 -0
  29. data/spec/cassettes/medium-valid.yml +110 -0
  30. data/spec/cassettes/pinterest.yml +44 -0
  31. data/spec/cassettes/reddit-comment.yml +207 -0
  32. data/spec/cassettes/reddit-post.yml +174 -0
  33. data/spec/cassettes/reddit.yml +183 -0
  34. data/spec/cassettes/result-container-test.yml +97 -0
  35. data/spec/cassettes/search-multi.yml +1211 -0
  36. data/spec/cassettes/search.yml +598 -0
  37. data/spec/cassettes/soundcloud-valid.yml +682 -0
  38. data/spec/cassettes/twitter.yml +64 -0
  39. data/spec/cassettes/unknown-reddit-post.yml +68 -0
  40. data/spec/facebook_spec.rb +23 -0
  41. data/spec/github_spec.rb +39 -0
  42. data/spec/google_plus_spec.rb +27 -0
  43. data/spec/medium_spec.rb +47 -0
  44. data/spec/pinterest_spec.rb +27 -0
  45. data/spec/reddit_comment_spec.rb +60 -0
  46. data/spec/reddit_post_spec.rb +64 -0
  47. data/spec/reddit_spec.rb +89 -0
  48. data/spec/results_container_spec.rb +61 -0
  49. data/spec/search_spec.rb +79 -0
  50. data/spec/soundcloud_spec.rb +66 -0
  51. data/spec/spec_helper.rb +95 -0
  52. data/spec/twitter_spec.rb +19 -0
  53. data/test/facebook_test.rb +28 -0
  54. data/test/fixtures/vcr_cassettes/facebook.yml +50 -0
  55. data/test/fixtures/vcr_cassettes/google.yml +425 -0
  56. data/test/helper.rb +34 -0
  57. data/test/test_non_specific.rb +27 -0
  58. data/test/test_twitter.rb +28 -0
  59. metadata +242 -0
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popularity::ResultsContainer do
4
+ context "same results" do
5
+ use_vcr_cassette "result-container-test"
6
+
7
+ subject {
8
+ Popularity::ResultsContainer.new
9
+ }
10
+
11
+ it "should add first result" do
12
+ subject.add_result Popularity::Facebook.new("http://google.com")
13
+ expect(1).to equal(subject.results.size)
14
+
15
+ subject.add_result Popularity::Facebook.new("http://facebook.com")
16
+ expect(2).to equal(subject.results.size)
17
+ end
18
+ end
19
+
20
+ context "same results" do
21
+ use_vcr_cassette "result-container-test"
22
+
23
+ subject {
24
+ Popularity::ResultsContainer.new
25
+ }
26
+
27
+ it "should reject differnt types" do
28
+ subject.add_result Popularity::Facebook.new("http://google.com")
29
+ expect(1).to equal(subject.results.size)
30
+
31
+ expect{
32
+ subject.add_result(Popularity::Twitter.new("http://google.com"))
33
+ } .to raise_error(TypeError)
34
+
35
+ end
36
+ end
37
+
38
+ context "adding results" do
39
+ use_vcr_cassette "result-container-test"
40
+
41
+ subject {
42
+ Popularity::ResultsContainer.new
43
+ }
44
+
45
+ it "should add methods together" do
46
+ subject.add_result Popularity::Facebook.new("http://google.com")
47
+ subject.add_result Popularity::Facebook.new("http://yahoo.com")
48
+
49
+ expect(subject.results.collect(&:shares).reduce(:+)).to eq(subject.shares)
50
+ end
51
+
52
+ it "should add methods together" do
53
+ subject.add_result Popularity::Facebook.new("http://google.com")
54
+ subject.add_result Popularity::Facebook.new("http://yahoo.com")
55
+
56
+ expect(subject.results.collect(&:shares).reduce(:+)).to eq(subject.shares)
57
+ end
58
+
59
+ end
60
+
61
+ end
@@ -0,0 +1,79 @@
1
+ # require 'spec_helper'
2
+
3
+ describe Popularity::Search do
4
+ context "single url" do
5
+ use_vcr_cassette "search"
6
+
7
+ subject {
8
+ Popularity.search('http://google.com')
9
+ }
10
+
11
+ it "should return correct total" do
12
+ expect(23422351).to equal subject.total
13
+ end
14
+
15
+ context "json" do
16
+ let(:json) { subject.to_json }
17
+
18
+ it "should have each url as root json key" do
19
+ subject.sources.each do |source|
20
+ expect(json[source.to_s]).to_not be_nil
21
+ end
22
+ end
23
+
24
+ it "should have each network as root json key" do
25
+ subject.searches.each do |search|
26
+ expect(json[search.url.to_s]).to_not be_nil
27
+ end
28
+ end
29
+
30
+ it "should have each total as root json key" do
31
+ expect(json["total"]).to_not be_nil
32
+ end
33
+ end
34
+ end
35
+
36
+ context "multiple url" do
37
+ use_vcr_cassette "search-multi"
38
+
39
+ subject {
40
+ Popularity.search("http://google.com", "http://yahoo.com")
41
+ }
42
+
43
+ it "should return correct aggregates" do
44
+ shares = subject.searches.collect do |search|
45
+ search.facebook.shares
46
+ end
47
+
48
+ expect(subject.facebook.shares).to eq(shares.reduce(:+))
49
+ end
50
+
51
+ it "should combine results" do
52
+ expect(subject.searches.collect(&:results).reduce(:+).size).to eq(subject.results.size)
53
+ end
54
+
55
+ it "should allow access to individual results" do
56
+ expect(subject.facebook.results.size).to eq(2)
57
+ end
58
+
59
+ context "json" do
60
+ let(:json) { subject.to_json }
61
+
62
+ it "should have each url as root json key" do
63
+ subject.sources.each do |source|
64
+ expect(json[source.to_s]).to_not be_nil
65
+ end
66
+ end
67
+
68
+ it "should have each network as root json key" do
69
+ subject.searches.each do |search|
70
+ expect(json[search.url.to_s]).to_not be_nil
71
+ end
72
+ end
73
+
74
+ it "should have each total as root json key" do
75
+ expect(json["total"]).to_not be_nil
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popularity::Soundcloud do
4
+ context "non-soundcloud url" do
5
+ use_vcr_cassette "soundcloud-invalid"
6
+
7
+ subject {
8
+ Popularity::Soundcloud.new('http://google.com')
9
+ }
10
+
11
+ it "should be invalid" do
12
+ expect(subject.valid?).to eq(false)
13
+ end
14
+
15
+ it "should have no resposne" do
16
+ expect(subject.response).to eq(false)
17
+ end
18
+ end
19
+
20
+ context "soundcloud url" do
21
+ use_vcr_cassette "soundcloud-valid"
22
+
23
+ subject {
24
+ Popularity::Soundcloud.new('http://soundcloud.com/jeffkeen/i-know-its-you')
25
+ }
26
+
27
+ it "should be valid" do
28
+ expect(subject.valid?).to eq(true)
29
+ end
30
+
31
+ it "should have response" do
32
+ expect(subject.response).to_not eq(false)
33
+ end
34
+
35
+ it "should have correct number of plays" do
36
+ expect(14710).to eq(subject.plays)
37
+ end
38
+
39
+ it "should have correct number of likes" do
40
+ expect(12).to eq(subject.likes)
41
+ end
42
+
43
+ it "should have correct number of downloads" do
44
+ expect(0).to eq(subject.downloads)
45
+ end
46
+
47
+ it "should have correct number of comments" do
48
+ expect(2).to eq(subject.comments)
49
+ end
50
+
51
+ it "should have the correct total" do
52
+ expect(subject.comments + subject.downloads + subject.likes + subject.plays).to eq(subject.total)
53
+ end
54
+
55
+ context "json" do
56
+ let(:json) { subject.to_json }
57
+
58
+ it "should have required attributes in json" do
59
+ [:plays, :likes, :downloads, :comments].each do |att|
60
+ expect(subject.send(att)).to eq(json[att.to_s])
61
+ end
62
+ end
63
+ end
64
+
65
+ end
66
+ end
@@ -0,0 +1,95 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'popularity'
5
+ require 'vcr'
6
+
7
+ VCR.configure { |c|
8
+ c.hook_into :webmock
9
+ c.cassette_library_dir = 'spec/cassettes'
10
+ # c.default_cassette_options = { :record => :new_episodes }
11
+ }
12
+
13
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
14
+ RSpec.configure do |config|
15
+ config.extend VCR::RSpec::Macros
16
+ config.expect_with :rspec do |c|
17
+ c.syntax = :expect
18
+ end
19
+
20
+ # config.order = 'random'
21
+ # config.treat_symbols_as_metadata_keys_with_true_values = true
22
+
23
+ # rspec-expectations config goes here. You can use an alternate
24
+ # assertion/expectation library such as wrong or the stdlib/minitest
25
+ # assertions if you prefer.
26
+ config.expect_with :rspec do |expectations|
27
+ # This option will default to `true` in RSpec 4. It makes the `description`
28
+ # and `failure_message` of custom matchers include text for helper methods
29
+ # defined using `chain`, e.g.:
30
+ # be_bigger_than(2).and_smaller_than(4).description
31
+ # # => "be bigger than 2 and smaller than 4"
32
+ # ...rather than:
33
+ # # => "be bigger than 2"
34
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
35
+ end
36
+
37
+ # rspec-mocks config goes here. You can use an alternate test double
38
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
39
+ config.mock_with :rspec do |mocks|
40
+ # Prevents you from mocking or stubbing a method that does not exist on
41
+ # a real object. This is generally recommended, and will default to
42
+ # `true` in RSpec 4.
43
+ mocks.verify_partial_doubles = true
44
+ end
45
+
46
+ # The settings below are suggested to provide a good initial experience
47
+ # with RSpec, but feel free to customize to your heart's content.
48
+ =begin
49
+ # These two settings work together to allow you to limit a spec run
50
+ # to individual examples or groups you care about by tagging them with
51
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
52
+ # get run.
53
+ config.filter_run :focus
54
+ config.run_all_when_everything_filtered = true
55
+
56
+ # Limits the available syntax to the non-monkey patched syntax that is
57
+ # recommended. For more details, see:
58
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
59
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
60
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
61
+ config.disable_monkey_patching!
62
+
63
+ # This setting enables warnings. It's recommended, but in some cases may
64
+ # be too noisy due to issues in dependencies.
65
+ config.warnings = true
66
+
67
+ # Many RSpec users commonly either run the entire suite or an individual
68
+ # file, and it's useful to allow more verbose output when running an
69
+ # individual spec file.
70
+ if config.files_to_run.one?
71
+ # Use the documentation formatter for detailed output,
72
+ # unless a formatter has already been configured
73
+ # (e.g. via a command-line flag).
74
+ config.default_formatter = 'doc'
75
+ end
76
+
77
+ # Print the 10 slowest examples and example groups at the
78
+ # end of the spec run, to help surface which specs are running
79
+ # particularly slow.
80
+ config.profile_examples = 10
81
+
82
+ # Run specs in random order to surface order dependencies. If you find an
83
+ # order dependency and want to debug it, you can fix the order by providing
84
+ # the seed, which is printed after each run.
85
+ # --seed 1234
86
+ config.order = :random
87
+
88
+ # Seed global randomization in this process using the `--seed` CLI option.
89
+ # Setting this allows you to use `--seed` to deterministically reproduce
90
+ # test failures related to randomization by passing the same `--seed` value
91
+ # as the one that triggered the failure.
92
+ Kernel.srand config.seed
93
+ =end
94
+
95
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popularity::Twitter do
4
+ context "valid url" do
5
+ use_vcr_cassette "twitter"
6
+
7
+ subject {
8
+ Popularity::Twitter.new('http://google.com')
9
+ }
10
+
11
+ it "should return correct tweet" do
12
+ expect(11551).to equal subject.tweets
13
+ end
14
+
15
+ it "should calculate the correct total" do
16
+ expect(subject.tweets).to equal subject.total
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ require 'helper'
2
+
3
+ class FacebookTest < Minitest::Test
4
+ def test_total
5
+ VCR.use_cassette("facebook") do
6
+ @p = Popularity::Facebook.new('http://google.com')
7
+
8
+ assert_equal (@p.shares + @p.comments), @p.total
9
+ end
10
+ end
11
+
12
+ def test_comments
13
+ VCR.use_cassette("facebook") do
14
+ @p = Popularity::Facebook.new('http://google.com')
15
+
16
+ assert_equal 10121, @p.comments
17
+ end
18
+ end
19
+
20
+ def test_shares
21
+ VCR.use_cassette("facebook") do
22
+ @p = Popularity::Facebook.new('http://google.com')
23
+
24
+ assert_equal 12081903, @p.shares
25
+ end
26
+ end
27
+ end
28
+
@@ -0,0 +1,50 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://graph.facebook.com/?id=http://google.com
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip
14
+ User-Agent:
15
+ - unirest-ruby/1.1
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - application/json; charset=UTF-8
23
+ Access-Control-Allow-Origin:
24
+ - "*"
25
+ X-Fb-Rev:
26
+ - '1681606'
27
+ Etag:
28
+ - '"523448c3a7520f974c21df595817ef80012b47d0"'
29
+ Pragma:
30
+ - no-cache
31
+ Cache-Control:
32
+ - private, no-cache, no-store, must-revalidate
33
+ Facebook-Api-Version:
34
+ - v1.0
35
+ Expires:
36
+ - Sat, 01 Jan 2000 00:00:00 GMT
37
+ X-Fb-Debug:
38
+ - 07Cu0odh39qT26VUJHXjNAMAaUQTVP55LqKfQmXDHda/YhKlkZQcTv+z8D6kIJpgPdlsv/1cRwBZw2ArSB6eDA==
39
+ Date:
40
+ - Thu, 09 Apr 2015 03:13:39 GMT
41
+ Connection:
42
+ - keep-alive
43
+ Content-Length:
44
+ - '63'
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"id":"http:\/\/google.com","shares":12081903,"comments":10121}'
48
+ http_version:
49
+ recorded_at: Thu, 09 Apr 2015 03:13:39 GMT
50
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,425 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://api.pinterest.com/v1/urls/count.json?url=http://google.com
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip
14
+ User-Agent:
15
+ - unirest-ruby/1.1
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Accept-Ranges:
22
+ - bytes
23
+ Age:
24
+ - '0'
25
+ Cache-Control:
26
+ - private
27
+ Content-Type:
28
+ - application/javascript
29
+ Date:
30
+ - Thu, 09 Apr 2015 03:12:39 GMT
31
+ Expires:
32
+ - Thu, 09 Apr 2015 03:27:39 GMT
33
+ Via:
34
+ - 1.1 varnish
35
+ X-Pinterest-Rid:
36
+ - '757429265171'
37
+ X-Varnish:
38
+ - '2939856995'
39
+ Content-Length:
40
+ - '55'
41
+ Connection:
42
+ - keep-alive
43
+ body:
44
+ encoding: UTF-8
45
+ string: receiveCount({"url":"http://google.com","count":11278})
46
+ http_version:
47
+ recorded_at: Thu, 09 Apr 2015 03:12:39 GMT
48
+ - request:
49
+ method: get
50
+ uri: https://cdn.api.twitter.com/1/urls/count.json?url=http://google.com
51
+ body:
52
+ encoding: US-ASCII
53
+ string: ''
54
+ headers:
55
+ Accept:
56
+ - "*/*; q=0.5, application/xml"
57
+ Accept-Encoding:
58
+ - gzip
59
+ User-Agent:
60
+ - unirest-ruby/1.1
61
+ response:
62
+ status:
63
+ code: 200
64
+ message: OK
65
+ headers:
66
+ Date:
67
+ - Thu, 09 Apr 2015 03:12:39 GMT
68
+ Server:
69
+ - tsa_a
70
+ Cache-Control:
71
+ - must-revalidate, max-age=900
72
+ Content-Encoding:
73
+ - gzip
74
+ Content-Type:
75
+ - application/json;charset=utf-8
76
+ Expires:
77
+ - Thu, 09 Apr 2015 03:27:01 GMT
78
+ Last-Modified:
79
+ - Thu, 09 Apr 2015 03:12:01 GMT
80
+ Strict-Transport-Security:
81
+ - max-age=631138519
82
+ X-Connection-Hash:
83
+ - 4574ad1f705ba9a017f67db5e8fa9a9e
84
+ X-Response-Time:
85
+ - '8'
86
+ Content-Length:
87
+ - '71'
88
+ Accept-Ranges:
89
+ - bytes
90
+ Via:
91
+ - 1.1 varnish
92
+ Age:
93
+ - '38'
94
+ X-Served-By:
95
+ - cache-tw-dfw1-cr1-7-TWDFW1
96
+ X-Cache:
97
+ - HIT
98
+ X-Cache-Hits:
99
+ - '1'
100
+ Vary:
101
+ - Accept-Encoding
102
+ body:
103
+ encoding: ASCII-8BIT
104
+ string: !binary |-
105
+ H4sIAAAAAAAAAKpWSs4vzStRsjI0NDUx11EqLcpRslLKKCkpsIrRj9FPz89P
106
+ z0nVS87PjdFXqgUAAAD//wMAyAG0hy0AAAA=
107
+ http_version:
108
+ recorded_at: Thu, 09 Apr 2015 03:12:40 GMT
109
+ - request:
110
+ method: get
111
+ uri: http://www.reddit.com/r/search/search.json?q=url:http://google.com
112
+ body:
113
+ encoding: US-ASCII
114
+ string: ''
115
+ headers:
116
+ Accept:
117
+ - "*/*; q=0.5, application/xml"
118
+ Accept-Encoding:
119
+ - gzip
120
+ User-Agent:
121
+ - unirest-ruby/1.1
122
+ response:
123
+ status:
124
+ code: 200
125
+ message: OK
126
+ headers:
127
+ Date:
128
+ - Thu, 09 Apr 2015 03:12:40 GMT
129
+ Content-Type:
130
+ - application/json; charset=UTF-8
131
+ Transfer-Encoding:
132
+ - chunked
133
+ Connection:
134
+ - keep-alive
135
+ Set-Cookie:
136
+ - __cfduid=dc7ca1cb87dca3cfcd56dc1941116f6f41428549159; expires=Fri, 08-Apr-16
137
+ 03:12:39 GMT; path=/; domain=.reddit.com; HttpOnly
138
+ X-Ua-Compatible:
139
+ - IE=edge
140
+ X-Frame-Options:
141
+ - SAMEORIGIN
142
+ X-Content-Type-Options:
143
+ - nosniff
144
+ X-Xss-Protection:
145
+ - 1; mode=block
146
+ Access-Control-Allow-Origin:
147
+ - "*"
148
+ Access-Control-Expose-Headers:
149
+ - X-Reddit-Tracking, X-Moose
150
+ X-Reddit-Tracking:
151
+ - https://pixel.redditmedia.com/pixel/of_destiny.png?v=Su64bYnwfouZP4ET8hUjlgl93jq09FCNXXsel6v1CwWKQluLktCmlnVbTjLMFr1YREYXuPKAxiQ%3D
152
+ Vary:
153
+ - Accept-Encoding
154
+ X-Moose:
155
+ - majestic
156
+ Cache-Control:
157
+ - no-cache
158
+ Cf-Cache-Status:
159
+ - HIT
160
+ Server:
161
+ - cloudflare-nginx
162
+ Cf-Ray:
163
+ - 1d430819b0690107-DFW
164
+ Content-Encoding:
165
+ - gzip
166
+ body:
167
+ encoding: ASCII-8BIT
168
+ string: !binary |-
169
+ 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
289
+ dHrW8dhzAAA=
290
+ http_version:
291
+ recorded_at: Thu, 09 Apr 2015 03:12:40 GMT
292
+ - request:
293
+ method: get
294
+ uri: https://plusone.google.com/_/+1/fastbutton?url=http://google.com
295
+ body:
296
+ encoding: US-ASCII
297
+ string: ''
298
+ headers:
299
+ Accept:
300
+ - "*/*; q=0.5, application/xml"
301
+ Accept-Encoding:
302
+ - gzip
303
+ User-Agent:
304
+ - unirest-ruby/1.1
305
+ response:
306
+ status:
307
+ code: 200
308
+ message: OK
309
+ headers:
310
+ Content-Type:
311
+ - text/html; charset=utf-8
312
+ X-Ua-Compatible:
313
+ - IE=edge, chrome=1
314
+ Vary:
315
+ - Accept-Encoding
316
+ Timing-Allow-Origin:
317
+ - "*"
318
+ Cache-Control:
319
+ - no-cache, no-store, max-age=0, must-revalidate
320
+ Pragma:
321
+ - no-cache
322
+ Expires:
323
+ - Fri, 01 Jan 1990 00:00:00 GMT
324
+ Date:
325
+ - Thu, 09 Apr 2015 03:12:40 GMT
326
+ Set-Cookie:
327
+ - NID=67=gGR_Ix72yF1ah2CP71ZuFb1b7XaXHCrKnezVJNjofCXaFSCWnjoYyGMJsYCt7PfgkUMOnfLLodJBkYnbv2T6NtrILqyXxCjJELYBZ5pJUT8zZtEIXwyOUKRzfYBZJDfe;Domain=.google.com;Path=/;Expires=Fri,
328
+ 09-Oct-2015 03:12:40 GMT;HttpOnly
329
+ P3p:
330
+ - CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657
331
+ for more info."
332
+ X-Content-Type-Options:
333
+ - nosniff
334
+ X-Xss-Protection:
335
+ - 1; mode=block
336
+ Server:
337
+ - GSE
338
+ Alternate-Protocol:
339
+ - 443:quic,p=0.5
340
+ Accept-Ranges:
341
+ - none
342
+ Transfer-Encoding:
343
+ - chunked
344
+ body:
345
+ encoding: UTF-8
346
+ string: |-
347
+ <!DOCTYPE html><html lang="en" dir="ltr"><head><base href="https://plusone.google.com/wm/1/"><style>body {-webkit-font-smoothing: antialiased;}@font-face {
348
+ font-family: 'Roboto';
349
+ font-style: normal;
350
+ font-weight: 400;
351
+ src: url(//fonts.gstatic.com/s/roboto/v15/W5F8_SL0XFawnjxHGsZjJA.ttf) format('truetype');
352
+ }
353
+ </style><link rel="stylesheet" href="/_/scs/apps-static/_/ss/k=oz.plusone.1gqu2bwggaja0.L.X.O/d=0/rs=AGLTcCPuKn23za2sQkdpg8dg1DC0KN0O8w"><script>function __sp() {try {var params = {};params['height'] = 24.0 ;params['width'] = 106.0 ;params['title'] = '+1';} catch (e) {return null}return params;}var _F_jsUrl = "\/_\/scs\/apps-static\/_\/js\/k\x3doz.plusone.en_US.PH2K4T6R8Xw.O\/m\x3dp1b,p1p\/rt\x3dj\/d\x3d1\/t\x3dzcms\/rs\x3dAGLTcCPutGWkp0nc2HeI_31uRDWtZjPi3A";var gapi=window.gapi=window.gapi||{};(function() { var f=function(a,c){var d=a.match(new RegExp(".*(\\?|#|&)"+c+"=([^&#]+)"))||[];return decodeURIComponent(d[d.length-1]||"")},r=function(a,c){g(l(),a,c)},t=function(a,c){g(!0,a,c)},g=function(a,c,d){function u(b){if(!b.match(/^https?\:\/\//))return"";var a=m.createElement("a");a.href=b;a.pathname=a.search=a.hash="";return a.href.replace(/\/\??\#?$/,"")}function n(){a?(e.s=p+"/"+h+":"+p+":"+e.s,e.g=!1,d&&(e.a=d.slice(1)),b.parent.postMessage("!_"+b.JSON.stringify(e),q||"*")):b.parent.postMessage(b.JSON.stringify(e),
354
+ q||"*")}var b=window,m=b.document;if(b.postMessage&&b.JSON&&b.JSON.stringify&&b!=b.parent){var h=b.name,k=b.location.href,q=u(f(k,"parent")),p=f(k,"pfname"),e={s:c,f:h,r:h,t:f(k,"rpctoken"),a:d||[""],g:"ping"};m.all?b.setTimeout(n,0):n()}},v=function(a,c){g(!1,"widget-csi-tick-"+window.name,[a,null,c])},l=function(a){var c=window;return"1"===f(a||c.location.href,"usegapi")};window.gapi.inline=window.gapi.inline||{ping:r,tick:v,shouldUseGapi:l,pingGapi:t}; })();
355
+ var sentRenderStart = false; function gapi_sendRenderStart() {if (sentRenderStart) {return}sentRenderStart = true; var sz = __sp(); if (sz) {gapi.inline.ping('_renderstart', ['', sz]);}}document.createElement('content');</script><script>var AF_initDataKeys = []
356
+ ; var AF_dataServiceRequests = {}; var AF_initDataChunkQueue = []; var AF_initDataCallback; var AF_initDataInitializeCallback; if (AF_initDataInitializeCallback) {AF_initDataInitializeCallback(AF_initDataKeys, AF_initDataChunkQueue, AF_dataServiceRequests);}if (!AF_initDataCallback) {AF_initDataCallback = function(chunk) {AF_initDataChunkQueue.push(chunk);};}</script></head><body class="kv8eNc "><div id="root"><script>var AF_initDataKeys = []
357
+ ; var AF_dataServiceRequests = {}; var AF_initDataChunkQueue = []; var AF_initDataCallback; var AF_initDataInitializeCallback; if (AF_initDataInitializeCallback) {AF_initDataInitializeCallback(AF_initDataKeys, AF_initDataChunkQueue, AF_dataServiceRequests);}if (!AF_initDataCallback) {AF_initDataCallback = function(chunk) {AF_initDataChunkQueue.push(chunk);};}</script><script type="text/javascript">window.__SSR = {c: 1.11715E7 ,a:'bubble',at:'AEIZW7SxAsNTTKWnXp0H0mrR63iRs\/mlSjtGgwp\/x4j7Uu7M6k3E+KkmXKFEpSsLUnk8qF697m2OsKakRRkbp+Z2XdfgnQGvC5f5qQmIGl7o9hhC0ys5ZEA\x3d',ld:[,[2,11171500,[]
358
+ ,1,106]
359
+ ]
360
+ ,s:'widget',annd: 2.0 ,bp: {}, id:'http:\/\/google.com\/'}; document.addEventListener && document.addEventListener('DOMContentLoaded', function () {gapi.inline.tick('wdc', new Date().getTime());}, false);</script><div id="plusone" dir="ltr" class="Jg" ><span id="widget_bounds"><div class="dIa"><div style="height:24px;width:38px;" class="FP HP Gib Ina " id="button" title="+1" role="button" tabindex="0"><div class="Ul"><div style="margin:0px 0px 0 0px;" class="s7"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" width="36px" height="22px" viewBox="-7 -4 36 22" class="u7 uzlpSb"><path d="m6.165,5.363c.438-.427 .478-1.019 .478-1.351 0-1.33-.821-3.397-2.407-3.397-.496,0-1.031,.239-1.337,.61-.325,.388-.42,.883-.42,1.358 0,1.236 .745,3.287 2.388,3.287 .476,.009 .991-.212 1.298-.507m-1.248,3.491c0,0-1.062,.092-1.865,.354-.419,.146-1.529,.535-1.529,1.854 0,1.312 1.318,2.252 3.362,2.252 1.833,0 2.809-.852 2.809-1.994 0-.938-.92-1.893-2.083-2.438-.219-.003-.694-.028-.694-.028zm2.426-7.942c.321,.381 .98,.987 .98,2.252 0,1.367-.804,2.014-1.604,2.623-.248,.239-.535,.498-.535,.905 0,.406 .287,.63 .496,.793l.688,.519c.841,.687 1.592,1.312 1.592,2.588 0,1.736-1.728,3.408-5.011,3.408-2.771,0-3.949-1.189-3.949-2.561 0-.666 .185-1.744 1.312-2.396 1.185-.695 2.536-.771 3.394-.814-.268-.333-.318-.575-.318-1.147 0-.313 .098-.5 .193-.723-.211,.02-.422,.037-.613,.037-2.024,0-3.171-1.459-3.171-2.898 0-.852 .403-1.793 1.223-2.477 1.089-.867 2.388-1.021 3.418-1.021h3.521l-.682,.904h-.937l.003,.008z"/><path d="m6.165,5.363c.438-.427 .478-1.019 .478-1.351 0-1.33-.821-3.397-2.407-3.397-.496,0-1.031,.239-1.337,.61-.325,.388-.42,.883-.42,1.358 0,1.236 .745,3.287 2.388,3.287 .476,.009 .991-.212 1.298-.507m-1.248,3.491c0,0-1.062,.092-1.865,.354-.419,.146-1.529,.535-1.529,1.854 0,1.312 1.318,2.252 3.362,2.252 1.833,0 2.809-.852 2.809-1.994 0-.938-.92-1.893-2.083-2.438-.219-.003-.694-.028-.694-.028zm2.426-7.942c.321,.381 .98,.987 .98,2.252 0,1.367-.804,2.014-1.604,2.623-.248,.239-.535,.498-.535,.905 0,.406 .287,.63 .496,.793l.688,.519c.841,.687 1.592,1.312 1.592,2.588 0,1.736-1.677,3.408-4.96,3.408-2.771,0-4-1.189-4-2.561 0-.666 .185-1.744 1.312-2.396 1.185-.695 2.536-.771 3.394-.814-.268-.333-.318-.575-.318-1.147 0-.313 .098-.5 .193-.723-.211,.02-.422,.037-.613,.037-2.024,0-3.171-1.459-3.171-2.898 0-.852 .403-1.793 1.223-2.477 1.089-.867 2.388-1.021 3.418-1.021h3.521l-.682,.904h-.937l.003,.008z"/><path d="M15,4h-2v2h-2v2h2v2h2V8h2V6h-2V4z M18.004,2v2h2v8h1.987L22,1L18.004,2z"/></svg><div class="xuwmvb xuwmvb-Dy7EIf"></div></div></div><div class="GP"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" width="22px" height="22px" viewBox="-1.5555555555555554 -1.5555555555555554 17.11111111111111 17.11111111111111" class="u7 u7 iva"><g id="Q0N8Vc" fill="#aaaaaa" transform="rotate(0,7,7)"><path class="zVaWQ" d="M5.5,1.5h3v4h4v3h-4v4h-3v-4h-4v-3h4z"></path></g></svg><div class="C9sAve C9sAve-Dy7EIf"></div></div><div class="q7"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" width="20px" height="22px" viewBox="0 -2 20 22" class="u7 u7 hva"><path fill="#DD4B39" d="m19.8059,16.041-8.74-15.404c-.223-.394-.635-.637-1.078-.637-.443,0-.855,.243-1.078,.637l-8.739,15.404c-.227,.396-.227,.9-.005,1.299 .223,.398 .637,.66 1.283,.66h17.279c.445,0 .859-.262 1.082-.66 .22-.399 .22-.902-.004-1.299zm-9.798-1.041c-.552,0-1-.463-1-1.02 0-.555 .448-1.002 1-1.002 .552,0 1,.447 1,1.002-.001,.557-.448,1.02-1,1.02zm.999-9-.375,5h-1.25l-.374-5h.004l-.004-.02c0-.551 .448-.996 1-.996 .552,0 1,.449 1,1-.001,.007-.004,.016-.004,.016h.003z"/></svg><div class="tapvDe tapvDe-Dy7EIf"></div></div></div></div><div class="ap"><div class="iQa HI"><div id="aggregateCount" class="Oy">11M</div></div></div></span></div><script type="text/javascript">window['__P1_XP'] = {"UC":true,"UCP":true,"UH":true};</script></div><script>window.__GOOGLEAPIS = {googleapis: {versions: {pos: 'v1'}}};window['__P1_BASEURL'] = 'https:\/\/plusone.google.com\/'; window['__P1_LOCALE'] = 'en_US'; var OZ_domReady = 1;
361
+ var _DumpException = function(e) {
362
+ e['errsource'] = e['errsource'] || 'api_widget';
363
+ throw e;
364
+ }
365
+ window['___jsl'] = window['___jsl'] || {}; window['___jsl']['ci'] = [{"client":{"headers":{"response":["Cache-Control","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-MD5","Content-Range","Content-Type","Date","ETag","Expires","Last-Modified","Location","Pragma","Range","Server","Transfer-Encoding","WWW-Authenticate","Vary","X-Goog-Safety-Content-Type","X-Goog-Safety-Encoding","X-Goog-Upload-Chunk-Granularity","X-Goog-Upload-Control-URL","X-Goog-Upload-Size-Received","X-Goog-Upload-Status","X-Goog-Upload-URL","X-Goog-Diff-Download-Range","X-Goog-Hash","X-Goog-Updated-Authorization","X-Server-Object-Version","X-Guploader-Customer","X-Guploader-Upload-Result","X-Guploader-Uploadid"],"request":["Accept","Accept-Language","Authorization","Cache-Control","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-MD5","Content-Range","Content-Type","Date","GData-Version","Host","If-Match","If-Modified-Since","If-None-Match","If-Unmodified-Since","Origin","OriginToken","Pragma","Range","Slug","Transfer-Encoding","X-ClientDetails","X-GData-Client","X-GData-Key","X-Goog-AuthUser","X-Goog-PageId","X-Goog-Encode-Response-If-Executable","X-Goog-Correlation-Id","X-Goog-Request-Info","X-Goog-Experiments","x-goog-iam-role","x-goog-iam-authorization-token","X-Goog-Spatula","X-Goog-Upload-Command","X-Goog-Upload-Content-Disposition","X-Goog-Upload-Content-Length","X-Goog-Upload-Content-Type","X-Goog-Upload-File-Name","X-Goog-Upload-Offset","X-Goog-Upload-Protocol","X-Goog-Visitor-Id","X-HTTP-Method-Override","X-JavaScript-User-Agent","X-Pan-Versionid","X-Origin","X-Referer","X-Upload-Content-Length","X-Upload-Content-Type","X-Use-HTTP-Status-Code-Override","X-YouTube-VVT","X-YouTube-Page-CL","X-YouTube-Page-Timestamp"]},"rms":"migrated","cors":false},"llang":"en","plus_layer":"{\"isEnabled\":false}","enableMultilogin":true,"disableRealtimeCallback":false,"drive_share":{"useStandaloneSharingService":true},"isLoggedIn":false,"isPlusUser":false,"iframes":{"additnow":{"methods":["launchurl"],"url":"https://apis.google.com/additnow/additnow.html?usegapi\u003d1"},"person":{"url":":socialhost:/:session_prefix:_/widget/render/person?usegapi\u003d1"},"visibility":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/visibility?usegapi\u003d1"},"photocomments":{"url":":socialhost:/:session_prefix:_/widget/render/photocomments?usegapi\u003d1"},"plus_followers":{"params":{"url":""},"url":":socialhost:/_/im/_/widget/render/plus/followers?usegapi\u003d1"},"playreview":{"url":"https://play.google.com/store/ereview?usegapi\u003d1"},"share":{"url":":socialhost:/:session_prefix::im_prefix:_/widget/render/share?usegapi\u003d1"},"signin":{"methods":["onauth"],"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/signin?usegapi\u003d1"},"commentcount":{"url":":socialhost:/:session_prefix:_/widget/render/commentcount?usegapi\u003d1"},"page":{"url":":socialhost:/:session_prefix:_/widget/render/page?usegapi\u003d1"},"plus_circle":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/plus/circle?usegapi\u003d1"},"hangout":{"url":"https://talkgadget.google.com/:session_prefix:talkgadget/_/widget"},"youtube":{"methods":["scroll","openwindow"],"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/youtube?usegapi\u003d1"},"evwidget":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/events/widget?usegapi\u003d1"},"card":{"url":":socialhost:/:session_prefix:_/hovercard/card"},"zoomableimage":{"url":"https://ssl.gstatic.com/microscope/embed/"},"reportabuse":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/reportabuse?usegapi\u003d1"},"follow":{"url":":socialhost:/:session_prefix:_/widget/render/follow?usegapi\u003d1"},"shortlists":{"url":""},"plus":{"url":":socialhost:/:session_prefix:_/widget/render/badge?usegapi\u003d1"},"post":{"params":{"url":""},"url":":socialhost:/:session_prefix::im_prefix:_/widget/render/post?usegapi\u003d1"},":socialhost:":"https://apis.google.com","configurator":{"url":":socialhost:/:session_prefix:_/plusbuttonconfigurator?usegapi\u003d1"},"community":{"url":":ctx_socialhost:/:session_prefix::im_prefix:_/widget/render/community?usegapi\u003d1"},"rbr_s":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/render/recobarsimplescroller"},":gplus_url:":"https://plus.google.com","autocomplete":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/autocomplete"},"plus_share":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/+1/sharebutton?plusShare\u003dtrue\u0026usegapi\u003d1"},":source:":"3p","blogger":{"methods":["scroll","openwindow"],"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/blogger?usegapi\u003d1"},"rbr_i":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/render/recobarinvitation"},"savetowallet":{"url":"https://clients5.google.com/s2w/o/savetowallet"},"appcirclepicker":{"url":":socialhost:/:session_prefix:_/widget/render/appcirclepicker"},"udc_webconsentflow":{"params":{"url":""},"url":"https://www.google.com/settings/webconsent?usegapi\u003d1"},":im_socialhost:":"https://plus.googleapis.com","savetodrive":{"methods":["save"],"url":"https://drive.google.com/savetodrivebutton?usegapi\u003d1"},":signuphost:":"https://plus.google.com","ytshare":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/ytshare?usegapi\u003d1"},"plusone":{"params":{"count":"","url":"","size":""},"url":":socialhost:/:session_prefix::se:_/+1/fastbutton?usegapi\u003d1"},"comments":{"methods":["scroll","openwindow"],"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/comments?usegapi\u003d1"},"ytsubscribe":{"url":"https://www.youtube.com/subscribe_embed?usegapi\u003d1"}},"debug":{"host":"https://apis.google.com","forceIm":false,"reportExceptionRate":0.05,"rethrowException":false},"deviceType":"desktop","lexps":[100,81,97,127,124,79,122,61,30,45],"inline":{"css":1},"report":{"apiRate":{"gapi\\.signin\\..*":0.05},"rate":0.001,"host":"https://apis.google.com","apis":["iframes\\..*","gadgets\\..*","gapi\\.appcirclepicker\\..*","gapi\\.auth\\..*","gapi\\.client\\..*"]},"oauth-flow":{"disableOpt":true,"usegapi":false,"authUrl":"https://accounts.google.com/o/oauth2/auth","proxyUrl":"https://accounts.google.com/o/oauth2/postmessageRelay","idpIframeUrl":"https://accounts.google.com/o/oauth2/iframe"},"include_granted_scopes":true,"csi":{"rate":0.01},"googleapis.config":{"auth":{"useFirstPartyAuthV2":false}}}];</script><script>(function(){var gapi=window.gapi=window.gapi||{};gapi._bs=new Date().getTime();(function(){var g=encodeURIComponent,h=window,k=decodeURIComponent,n="shift",p="replace",q="split",t="push",u="test",w="length",x="join";var D=h,E=document,aa=D.location,ba=function(){},ca=/\[native code\]/,F=function(a,b,c){return a[b]=a[b]||c},da=function(a){for(var b=0;b<this[w];b++)if(this[b]===a)return b;return-1},ea=function(a){a=a.sort();for(var b=[],c=void 0,d=0;d<a[w];d++){var e=a[d];e!=c&&b[t](e);c=e}return b},H=function(){var a;if((a=Object.create)&&ca[u](a))a=a(null);else{a={};for(var b in a)a[b]=void 0}return a},I=F(D,"gapi",{});var J;J=F(D,"___jsl",H());F(J,"I",0);F(J,"hel",10);var K=function(){var a=aa.href,b;if(J.dpo)b=J.h;else{b=J.h;var c=RegExp("([#].*&|[#])jsh=([^&#]*)","g"),d=RegExp("([?#].*&|[?#])jsh=([^&#]*)","g");if(a=a&&(c.exec(a)||d.exec(a)))try{b=k(a[2])}catch(e){}}return b},fa=function(a){var b=F(J,"PQ",[]);J.PQ=[];var c=b[w];if(0===c)a();else for(var d=0,e=function(){++d===c&&a()},f=0;f<c;f++)b[f](e)},L=function(a){return F(F(J,"H",H()),a,H())};var M=F(J,"perf",H()),N=F(M,"g",H()),ga=F(M,"i",H());F(M,"r",[]);H();H();var P=function(a,b,c){var d=M.r;"function"===typeof d?d(a,b,c):d[t]([a,b,c])},R=function(a,b,c){b&&0<b[w]&&(b=Q(b),c&&0<c[w]&&(b+="___"+Q(c)),28<b[w]&&(b=b.substr(0,28)+(b[w]-28)),c=b,b=F(ga,"_p",H()),F(b,c,H())[a]=(new Date).getTime(),P(a,"_p",c))},Q=function(a){return a[x]("__")[p](/\./g,"_")[p](/\-/g,"_")[p](/\,/g,"_")};var S=H(),T=[],U=function(a){throw Error("Bad hint"+(a?": "+a:""));};T[t](["jsl",function(a){for(var b in a)if(Object.prototype.hasOwnProperty.call(a,b)){var c=a[b];"object"==typeof c?J[b]=F(J,b,[]).concat(c):F(J,b,c)}if(b=a.u)a=F(J,"us",[]),a[t](b),(b=/^https:(.*)$/.exec(b))&&a[t]("http:"+b[1])}]);var ha=/^(\/[a-zA-Z0-9_\-]+)+$/,ia=/^[a-zA-Z0-9\-_\.,!]+$/,ja=/^gapi\.loaded_[0-9]+$/,ka=/^[a-zA-Z0-9,._-]+$/,oa=function(a,b,c,d){var e=a[q](";"),f=e[n](),m=S[f],l=null;m?l=m(e,b,c,d):U("no hint processor for: "+f);l||U("failed to generate load url");b=l;c=b.match(la);(d=b.match(ma))&&1===d[w]&&na[u](b)&&c&&1===c[w]||U("failed sanity: "+a);return l},qa=function(a,b,c,d){a=pa(a);ja[u](c)||U("invalid_callback");b=V(b);d=d&&d[w]?V(d):null;var e=function(a){return g(a)[p](/%2C/g,",")};return[g(a.e)[p](/%2C/g,
366
+ ",")[p](/%2F/g,"/"),"/k=",e(a.version),"/m=",e(b),d?"/exm="+e(d):"","/rt=j/sv=1/d=1/ed=1",a.a?"/am="+e(a.a):"",a.c?"/rs="+e(a.c):"",a.d?"/t="+e(a.d):"","/cb=",e(c)][x]("")},pa=function(a){"/"!==a.charAt(0)&&U("relative path");for(var b=a.substring(1)[q]("/"),c=[];b[w];){a=b[n]();if(!a[w]||0==a.indexOf("."))U("empty/relative directory");else if(0<a.indexOf("=")){b.unshift(a);break}c[t](a)}a={};for(var d=0,e=b[w];d<e;++d){var f=b[d][q]("="),m=k(f[0]),l=k(f[1]);2==f[w]&&m&&l&&(a[m]=a[m]||l)}b="/"+c[x]("/");
367
+ ha[u](b)||U("invalid_prefix");c=W(a,"k",!0);d=W(a,"am");e=W(a,"rs");a=W(a,"t");return{e:b,version:c,a:d,c:e,d:a}},V=function(a){for(var b=[],c=0,d=a[w];c<d;++c){var e=a[c][p](/\./g,"_")[p](/-/g,"_");ka[u](e)&&b[t](e)}return b[x](",")},W=function(a,b,c){a=a[b];!a&&c&&U("missing: "+b);if(a){if(ia[u](a))return a;U("invalid: "+b)}return null},na=/^https?:\/\/[a-z0-9_.-]+\.google\.com(:\d+)?\/[a-zA-Z0-9_.,!=\-\/]+$/,ma=/\/cb=/g,la=/\/\//g,ra=/^\/[a-z_]+\//,sa=function(){var a=K();if(!a)throw Error("Bad hint");
368
+ return a};S.m=function(a,b,c,d){(a=a[0])||U("missing_hint");return"https://apis.google.com"+qa(a,b,c,d)};var X=decodeURI("%73cript"),Y=function(a,b){for(var c=[],d=0;d<a[w];++d){var e=a[d];e&&0>da.call(b,e)&&c[t](e)}return c},ta=function(a){"loading"!=E.readyState?Z(a):E.write("<"+X+' src="'+encodeURI(a)+'"></'+X+">")},Z=function(a){ua(a)},ua=function(a){var b=E.createElement(X);b.setAttribute("src",a);b.async="true";(a=E.getElementsByTagName(X)[0])?a.parentNode.insertBefore(b,a):(E.head||E.body||E.documentElement).appendChild(b)},va=function(a,b){var c=b&&b._c;if(c)for(var d=0;d<T[w];d++){var e=T[d][0],
369
+ f=T[d][1];f&&Object.prototype.hasOwnProperty.call(c,e)&&f(c[e],a,b)}},xa=function(a,b){wa(function(){var c;c=b===K()?F(I,"_",H()):H();c=F(L(b),"_",c);a(c)})},za=function(a,b){var c=b||{};"function"==typeof b&&(c={},c.callback=b);va(a,c);var d=a?a[q](":"):[],e=c.h||sa(),f=F(J,"ah",H());if(f["::"]&&d[w]){for(var m=[],l=null;l=d[n]();){var r=l[q]("."),r=f[l]||f[r[1]&&"ns:"+r[0]||""]||e,y=m[w]&&m[m[w]-1]||null,B=y;y&&y.hint==r||(B={hint:r,b:[]},m[t](B));B.b[t](l)}var C=m[w];if(1<C){var G=c.callback;G&&
370
+ (c.callback=function(){0==--C&&G()})}for(;d=m[n]();)ya(d.b,c,d.hint)}else ya(d||[],c,e)},ya=function(a,b,c){a=ea(a)||[];var d=b.callback,e=b.config,f=b.timeout,m=b.ontimeout,l=null,r=!1;if(f&&!m||!f&&m)throw"Timeout requires both the timeout parameter and ontimeout parameter to be set";var y=F(L(c),"r",[]).sort(),B=F(L(c),"L",[]).sort(),C=[].concat(y),G=function(a,b){if(r)return 0;D.clearTimeout(l);B[t].apply(B,v);var d=((I||{}).config||{}).update;d?d(e):e&&F(J,"cu",[])[t](e);if(b){R("me0",a,C);try{xa(b,
371
+ c)}finally{R("me1",a,C)}}return 1};0<f&&(l=D.setTimeout(function(){r=!0;m()},f));var v=Y(a,B);if(v[w]){var v=Y(a,y),z=F(J,"CP",[]),A=z[w];z[A]=function(a){if(!a)return 0;R("ml1",v,C);var b=function(b){z[A]=null;G(v,a)&&fa(function(){d&&d();b()})},c=function(){var a=z[A+1];a&&a()};0<A&&z[A-1]?z[A]=function(){b(c)}:b(c)};if(v[w]){var O="loaded_"+J.I++;I[O]=function(a){z[A](a);I[O]=null};a=oa(c,v,"gapi."+O,y);y[t].apply(y,v);R("ml0",v,C);b.sync||D.___gapisync?ta(a):Z(a,b,O)}else z[A](ba)}else G(v)&&
372
+ d&&d()};var wa=function(a){if(J.hee&&0<J.hel)try{return a()}catch(b){J.hel--,za("debug_error",function(){try{h.___jsl.hefn(b)}catch(a){throw b;}})}else return a()};I.load=function(a,b){return wa(function(){return za(a,b)})};var Aa=/^(\/\* JS \*\/ ){0,1}gapi.loaded_\d+\(/,Ba=function(a,b,c,d){(d=d.before_eval_cb)&&d();D.execScript?D.execScript(b,"JavaScript"):c?a.eval(b):(a=a.document,c=a.createElement("script"),c.defer=!1,c.appendChild(a.createTextNode(b)),a.body.appendChild(c),a.body.removeChild(c))},Ca=function(a,b,c,d){var e=D.XMLHttpRequest;a=a[p](/^https?:\/\/[^\/]+\//,"/");if(!ra[u](a))throw"Bad URL "+a;var f=new e;f.open("GET",a,!0);f.onreadystatechange=function(){if(4===f.readyState)if(200===f.status){var e=
373
+ f.responseText,l=b.src_cb;l&&l();var r=!1;h.GAPI_EVAL&&(e+="\n//@ sourceURL="+encodeURI(a),r=!0);l=function(){if(Aa[u](e))Ba(D,e,r,b);else I[c](function(){Ba(this,e,r,b)})};d?d(l):l()}else throw"Error requesting "+a+": "+f.statusText+"\nCurrent location: "+location.href;};f.send(null)};var Da="mousemove mouseover mousedown click touchstart keydown focus resize".split(" "),Ea=["onmouseover","onmousedown","onkeydown","onfocusin"],Fa=function(){if(F(J,"LI",!1))return!0;J.LI=!0;return!1},Ga=0,Ha=function(){J.LE=!0;for(var a=J.LQ,b=0;a&&b<a[w];b++)(0,a[b])();J.LQ=null},Ia=function(){function a(a){for(var d=0;d<Da[w];d++)D[a+"EventListener"](Da[d],b,!0)}if(!Fa()){var b=function(b){"resize"==b.type&&2>++Ga||(a("remove"),Ha())};a("add")}},Ja=function(){function a(a){for(var d=0;d<Ea[w];d++)E[a+
374
+ "Event"](Ea[d],b)}if(!Fa()){var b=function(b){if(!("resize"==b.type&&2>++Ga)){a("detach");var d=E.createEventObject(b);Ha();d.srcElement.fireEvent("on"+d.type,d);b.cancelBubble=!0;b.stopPropagation&&b.stopPropagation()}};a("attach")}},Z=function(a,b,c){var d=!0;D.XMLHttpRequest&&!/\/widget\//[u](a)&&D.JSON?D.addEventListener?Ia():E.attachEvent&&E.createEventObject?Ja():d=!1:d=!1;d?Ca(a,b,c,function(a){J.LE?a():F(J,"LQ",[])[t](a)}):ua(a)};N.bs0=h.gapi._bs||(new Date).getTime();P("bs0");N.bs1=(new Date).getTime();P("bs1");delete h.gapi._bs;})();
375
+ gapi.load("",{callback:window["gapi_onload"],_c:{"jsl":{"ci":{"llang":"en","client":{"headers":{"response":["Cache-Control","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-MD5","Content-Range","Content-Type","Date","ETag","Expires","Last-Modified","Location","Pragma","Range","Server","Transfer-Encoding","WWW-Authenticate","Vary","X-Goog-Safety-Content-Type","X-Goog-Safety-Encoding","X-Goog-Upload-Chunk-Granularity","X-Goog-Upload-Control-URL","X-Goog-Upload-Size-Received","X-Goog-Upload-Status","X-Goog-Upload-URL","X-Goog-Diff-Download-Range","X-Goog-Hash","X-Goog-Updated-Authorization","X-Server-Object-Version","X-Guploader-Customer","X-Guploader-Upload-Result","X-Guploader-Uploadid"],"request":["Accept","Accept-Language","Authorization","Cache-Control","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-MD5","Content-Range","Content-Type","Date","GData-Version","Host","If-Match","If-Modified-Since","If-None-Match","If-Unmodified-Since","Origin","OriginToken","Pragma","Range","Slug","Transfer-Encoding","X-ClientDetails","X-GData-Client","X-GData-Key","X-Goog-AuthUser","X-Goog-PageId","X-Goog-Encode-Response-If-Executable","X-Goog-Correlation-Id","X-Goog-Request-Info","X-Goog-Experiments","x-goog-iam-role","x-goog-iam-authorization-token","X-Goog-Spatula","X-Goog-Upload-Command","X-Goog-Upload-Content-Disposition","X-Goog-Upload-Content-Length","X-Goog-Upload-Content-Type","X-Goog-Upload-File-Name","X-Goog-Upload-Offset","X-Goog-Upload-Protocol","X-Goog-Visitor-Id","X-HTTP-Method-Override","X-JavaScript-User-Agent","X-Pan-Versionid","X-Origin","X-Referer","X-Upload-Content-Length","X-Upload-Content-Type","X-Use-HTTP-Status-Code-Override","X-YouTube-VVT","X-YouTube-Page-CL","X-YouTube-Page-Timestamp"]},"rms":"migrated","cors":false},"plus_layer":{"isEnabled":false},"enableMultilogin":true,"drive_share":{"useStandaloneSharingService":true},"disableRealtimeCallback":false,"isLoggedIn":false,"iframes":{"additnow":{"methods":["launchurl"],"url":"https://apis.google.com/additnow/additnow.html?usegapi\u003d1"},"person":{"url":":socialhost:/:session_prefix:_/widget/render/person?usegapi\u003d1"},"visibility":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/visibility?usegapi\u003d1"},"photocomments":{"url":":socialhost:/:session_prefix:_/widget/render/photocomments?usegapi\u003d1"},"plus_followers":{"params":{"url":""},"url":":socialhost:/_/im/_/widget/render/plus/followers?usegapi\u003d1"},"playreview":{"url":"https://play.google.com/store/ereview?usegapi\u003d1"},"signin":{"methods":["onauth"],"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/signin?usegapi\u003d1"},"share":{"url":":socialhost:/:session_prefix::im_prefix:_/widget/render/share?usegapi\u003d1"},"commentcount":{"url":":socialhost:/:session_prefix:_/widget/render/commentcount?usegapi\u003d1"},"page":{"url":":socialhost:/:session_prefix:_/widget/render/page?usegapi\u003d1"},"hangout":{"url":"https://talkgadget.google.com/:session_prefix:talkgadget/_/widget"},"plus_circle":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/plus/circle?usegapi\u003d1"},"youtube":{"methods":["scroll","openwindow"],"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/youtube?usegapi\u003d1"},"zoomableimage":{"url":"https://ssl.gstatic.com/microscope/embed/"},"card":{"url":":socialhost:/:session_prefix:_/hovercard/card"},"evwidget":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/events/widget?usegapi\u003d1"},"reportabuse":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/reportabuse?usegapi\u003d1"},"follow":{"url":":socialhost:/:session_prefix:_/widget/render/follow?usegapi\u003d1"},"shortlists":{"url":""},"plus":{"url":":socialhost:/:session_prefix:_/widget/render/badge?usegapi\u003d1"},"configurator":{"url":":socialhost:/:session_prefix:_/plusbuttonconfigurator?usegapi\u003d1"},":socialhost:":"https://apis.google.com","post":{"params":{"url":""},"url":":socialhost:/:session_prefix::im_prefix:_/widget/render/post?usegapi\u003d1"},"community":{"url":":ctx_socialhost:/:session_prefix::im_prefix:_/widget/render/community?usegapi\u003d1"},":gplus_url:":"https://plus.google.com","rbr_s":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/render/recobarsimplescroller"},"autocomplete":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/autocomplete"},"plus_share":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/+1/sharebutton?plusShare\u003dtrue\u0026usegapi\u003d1"},":source:":"3p","blogger":{"methods":["scroll","openwindow"],"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/blogger?usegapi\u003d1"},"savetowallet":{"url":"https://clients5.google.com/s2w/o/savetowallet"},"rbr_i":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/render/recobarinvitation"},"appcirclepicker":{"url":":socialhost:/:session_prefix:_/widget/render/appcirclepicker"},"udc_webconsentflow":{"params":{"url":""},"url":"https://www.google.com/settings/webconsent?usegapi\u003d1"},"savetodrive":{"methods":["save"],"url":"https://drive.google.com/savetodrivebutton?usegapi\u003d1"},":im_socialhost:":"https://plus.googleapis.com","ytshare":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/ytshare?usegapi\u003d1"},":signuphost:":"https://plus.google.com","plusone":{"params":{"count":"","size":"","url":""},"url":":socialhost:/:session_prefix::se:_/+1/fastbutton?usegapi\u003d1"},"comments":{"methods":["scroll","openwindow"],"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/comments?usegapi\u003d1"},"ytsubscribe":{"url":"https://www.youtube.com/subscribe_embed?usegapi\u003d1"}},"isPlusUser":false,"debug":{"host":"https://apis.google.com","forceIm":false,"reportExceptionRate":0.05,"rethrowException":false},"deviceType":"desktop","inline":{"css":1},"lexps":[100,81,97,127,124,79,122,61,30,45],"include_granted_scopes":true,"oauth-flow":{"usegapi":false,"disableOpt":true,"authUrl":"https://accounts.google.com/o/oauth2/auth","proxyUrl":"https://accounts.google.com/o/oauth2/postmessageRelay","idpIframeUrl":"https://accounts.google.com/o/oauth2/iframe"},"report":{"apiRate":{"gapi\\.signin\\..*":0.05},"host":"https://apis.google.com","rate":0.001,"apis":["iframes\\..*","gadgets\\..*","gapi\\.appcirclepicker\\..*","gapi\\.auth\\..*","gapi\\.client\\..*"]},"csi":{"rate":0.01},"googleapis.config":{"auth":{"useFirstPartyAuthV2":false}}},"h":"m;/_/scs/apps-static/_/js/k\u003doz.gapi.en_US.rhF5yvMESo0.O/m\u003d__features__/am\u003dIQ/rt\u003dj/d\u003d1/t\u003dzcms/rs\u003dAGLTcCNgDOwdh5JDZNnuDpccRoxJFydRpg","u":"https://plusone.google.com/_/+1/fastbutton?url\u003dhttp://google.com","hee":true,"fp":"f7d8afe8ee25c3d31ffd7f208d75ad7e660f8ca1","dpo":false},"fp":"f7d8afe8ee25c3d31ffd7f208d75ad7e660f8ca1","annotation":["interactivepost","recobar","autocomplete","profile","signin2"],"bimodal":["signin","share"]}});var s = 'GAPI_INTERACTIVE'; window[s] = 'loading'; var c = 0; function cb() {if (++c == 2) {window[s] = 'interactive'; gapi.inline.ping('widget-interactive-' + window.name);}}gapi.load('googleapis.client,iframes-styles-bubble-internal,iframes', {'callback': function() {cb();var sw = window['__sw']; if (sw) {sw();}var sz = __sp(); if (sz) {iframes.ready(sz, {'canAutoClose': function() {var f = window['__CAN_AUTOCLOSE_BUBBLE']; return f ? f() : true;}, 'showSharebox': function() {var f = window['__SHOW_SHAREBOX']; return f ? f() : false;}});}}, 'src_cb': cb, 'before_eval_cb': function() {gapi.inline.tick('wje0', new Date().getTime());}});gapi.load('p1b,p1p', {'h': 'm;\/_\/scs\/apps-static\/_\/js\/k\x3doz.plusone.en_US.PH2K4T6R8Xw.O\/m\x3dp1b,p1p\/rt\x3dj\/d\x3d1\/t\x3dzcms\/rs\x3dAGLTcCPutGWkp0nc2HeI_31uRDWtZjPi3A','callback': function() {cb();gapi.inline.tick('wje1', new Date().getTime());}, 'src_cb': cb});})(); gapi_sendRenderStart();</script></body></html>
376
+ http_version:
377
+ recorded_at: Thu, 09 Apr 2015 03:12:40 GMT
378
+ - request:
379
+ method: get
380
+ uri: http://graph.facebook.com/?id=http://google.com
381
+ body:
382
+ encoding: US-ASCII
383
+ string: ''
384
+ headers:
385
+ Accept:
386
+ - "*/*; q=0.5, application/xml"
387
+ Accept-Encoding:
388
+ - gzip
389
+ User-Agent:
390
+ - unirest-ruby/1.1
391
+ response:
392
+ status:
393
+ code: 200
394
+ message: OK
395
+ headers:
396
+ Content-Type:
397
+ - application/json; charset=UTF-8
398
+ Access-Control-Allow-Origin:
399
+ - "*"
400
+ X-Fb-Rev:
401
+ - '1681606'
402
+ Etag:
403
+ - '"523448c3a7520f974c21df595817ef80012b47d0"'
404
+ Pragma:
405
+ - no-cache
406
+ Cache-Control:
407
+ - private, no-cache, no-store, must-revalidate
408
+ Facebook-Api-Version:
409
+ - v1.0
410
+ Expires:
411
+ - Sat, 01 Jan 2000 00:00:00 GMT
412
+ X-Fb-Debug:
413
+ - O/Z1lCZvTpYETBVJgQKJTuMKAjXHbzMQOS8c91nu1aaSXexp9i3XooA4mprgA6OxoAjex+zrGCxKWaHtIWS5Zw==
414
+ Date:
415
+ - Thu, 09 Apr 2015 03:12:40 GMT
416
+ Connection:
417
+ - keep-alive
418
+ Content-Length:
419
+ - '63'
420
+ body:
421
+ encoding: UTF-8
422
+ string: '{"id":"http:\/\/google.com","shares":12081903,"comments":10121}'
423
+ http_version:
424
+ recorded_at: Thu, 09 Apr 2015 03:12:40 GMT
425
+ recorded_with: VCR 2.9.3