popularity 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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