scouter 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +5 -0
- data/Gemfile +5 -0
- data/README.md +1 -1
- data/lib/scouter/base/multi_url_api.rb +39 -0
- data/lib/scouter/base/object.rb +0 -42
- data/lib/scouter/base/single_url_api.rb +39 -0
- data/lib/scouter/base/version.rb +1 -1
- data/lib/scouter/buffer.rb +1 -29
- data/lib/scouter/facebook.rb +2 -2
- data/lib/scouter/feedly.rb +2 -18
- data/lib/scouter/google_plus.rb +1 -17
- data/lib/scouter/hatena_bookmark.rb +2 -2
- data/lib/scouter/linkedin.rb +1 -17
- data/lib/scouter/pinterest.rb +1 -17
- data/lib/scouter/pocket.rb +1 -29
- data/lib/scouter/twitter.rb +1 -17
- data/lib/scouter.rb +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed4b16bc3e8f33cb20447adc6ef54b8343c95e44
|
4
|
+
data.tar.gz: ec52453d076bb99d8f0b07ea8d7f77ff4e2df184
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d278a31911672ef746d02f1327661605a634054af2d044b89248461fb982388b571c1accd016b43ffdb9d28450b7c6d2069433da0dae5a4288c4ba20c0f0cf6b
|
7
|
+
data.tar.gz: dfe62f0f5d9612c544dbb335814efa4eb0285bb48a3d3124d4eebb3ea934119d3424a1b21bc1b2e5299c7249998dabf3641864c6d5b0a0991b449917812e3033
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Scouter
|
1
|
+
# Scouter [](http://badge.fury.io/rb/scouter) [](https://travis-ci.org/morizyun/scouter) [](https://codeclimate.com/github/morizyun/scouter) [](https://codeclimate.com/github/morizyun/scouter)
|
2
2
|
|
3
3
|
Get share count in Buffer/Facebook/Feedly/GooglePlus/HatenaBookmark/Linkedin/Pinterest/Pocket/Twitter
|
4
4
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative 'connection'
|
2
|
+
|
3
|
+
module Scouter
|
4
|
+
module Base
|
5
|
+
class MultiUrlApi < Scouter::Base::Object
|
6
|
+
|
7
|
+
# Get Count By URL
|
8
|
+
# @param [String or Array] urls
|
9
|
+
# @return [Hashie::Mash, Array] URL & count hash, Error
|
10
|
+
def self.get_count(urls)
|
11
|
+
urls = check_and_trans_url(urls)
|
12
|
+
results, errors = {}, []
|
13
|
+
urls.each_slice(ONE_TIME_URL_MAX) do |u|
|
14
|
+
res, error = get_and_parse_response(u)
|
15
|
+
errors << error && next if error
|
16
|
+
results.merge!(res)
|
17
|
+
end
|
18
|
+
res_hash = Hashie::Mash.new(results)
|
19
|
+
return [res_hash, errors]
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# Get response and parse it By URL
|
25
|
+
# @param [String or Array] urls
|
26
|
+
# @return [Hash, String] URL & count hash, Error message
|
27
|
+
def self.get_and_parse_response(urls)
|
28
|
+
url_str = api_url(urls)
|
29
|
+
json = get_response(url_str)
|
30
|
+
res = parse_response(json)
|
31
|
+
return [res, nil]
|
32
|
+
rescue => e
|
33
|
+
message = "#{e.message}, urls: #{urls}"
|
34
|
+
return [nil, message]
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/scouter/base/object.rb
CHANGED
@@ -5,45 +5,14 @@ module Scouter
|
|
5
5
|
class Object
|
6
6
|
extend Scouter::Base::Connection
|
7
7
|
|
8
|
-
# Get Count By URL
|
9
|
-
# @param [String or Array] urls
|
10
|
-
# @return [Hashie::Mash, Array] URL & count hash, Error
|
11
|
-
def self.get_count(urls)
|
12
|
-
urls = check_and_trans_url(urls)
|
13
|
-
results, errors = {}, []
|
14
|
-
urls.each_slice(ONE_TIME_URL_MAX) do |u|
|
15
|
-
res, error = get_and_parse_response(u)
|
16
|
-
errors << error && next if error
|
17
|
-
results.merge!(res)
|
18
|
-
end
|
19
|
-
res_hash = Hashie::Mash.new(results)
|
20
|
-
return [res_hash, errors]
|
21
|
-
end
|
22
|
-
|
23
8
|
private
|
24
9
|
|
25
|
-
# Get response and parse it By URL
|
26
|
-
# @param [String or Array] urls
|
27
|
-
# @return [Hash, String] URL & count hash, Error message
|
28
|
-
def self.get_and_parse_response(urls)
|
29
|
-
url_str = api_url(urls)
|
30
|
-
json = get_response(url_str)
|
31
|
-
res = parse_response(json, urls)
|
32
|
-
return [res, nil]
|
33
|
-
rescue => e
|
34
|
-
message = "#{e.message}, urls: #{urls}"
|
35
|
-
return [nil, message]
|
36
|
-
end
|
37
|
-
|
38
10
|
# Get service name
|
39
11
|
# @return [String] service name
|
40
12
|
def self.service_name
|
41
13
|
self.name.to_s.downcase.gsub(/^(.*::)/, '')
|
42
14
|
end
|
43
15
|
|
44
|
-
# Check and transform urls to Array
|
45
|
-
# @param [String or Array] urls
|
46
|
-
# @return [Array] url
|
47
16
|
def self.check_and_trans_url(url)
|
48
17
|
url = to_array(url)
|
49
18
|
raise ArgumentError, "#{url} is not String and Array" unless url.class == Array
|
@@ -64,17 +33,6 @@ module Scouter
|
|
64
33
|
end
|
65
34
|
end
|
66
35
|
|
67
|
-
# Parse response data for response (For Override)
|
68
|
-
# @param [String] response
|
69
|
-
# @return [Hash] urls & count
|
70
|
-
def self.parse_response(response, url = nil)
|
71
|
-
end
|
72
|
-
|
73
|
-
# build API URL (For Override)
|
74
|
-
# @param [String] url
|
75
|
-
# @return [String] API url
|
76
|
-
def self.api_url(url)
|
77
|
-
end
|
78
36
|
end
|
79
37
|
end
|
80
38
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative 'connection'
|
2
|
+
|
3
|
+
module Scouter
|
4
|
+
module Base
|
5
|
+
class SingleUrlApi < Scouter::Base::Object
|
6
|
+
|
7
|
+
# Get Count
|
8
|
+
# @param [String or Array] urls
|
9
|
+
# @return [Hashie::Mash, Array] URL & count hash, Error
|
10
|
+
def self.get_count(urls)
|
11
|
+
urls = check_and_trans_url(urls)
|
12
|
+
results, errors = {}, []
|
13
|
+
urls.each_with_index do |u, idx|
|
14
|
+
sleep(WAIT_SEC) if idx != 0
|
15
|
+
res, error = get_and_parse_response(u)
|
16
|
+
errors << error && next if error
|
17
|
+
results.merge!(res)
|
18
|
+
end
|
19
|
+
res_hash = Hashie::Mash.new(results)
|
20
|
+
return [res_hash, errors]
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
# Get and parse response data & error message
|
26
|
+
# @param [String] url URL list
|
27
|
+
# @return [Hash, String] URL & count hash, Error message
|
28
|
+
def self.get_and_parse_response(url)
|
29
|
+
response = get_response(api_url(url))
|
30
|
+
result = parse_response(response, url)
|
31
|
+
return [result, nil]
|
32
|
+
rescue => e
|
33
|
+
message = "#{e.message}, url: #{url}"
|
34
|
+
return [nil, message]
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/scouter/base/version.rb
CHANGED
data/lib/scouter/buffer.rb
CHANGED
@@ -1,37 +1,9 @@
|
|
1
1
|
module Scouter
|
2
|
-
class Buffer < Scouter::Base::
|
2
|
+
class Buffer < Scouter::Base::SingleUrlApi
|
3
3
|
END_POINT = 'https://api.bufferapp.com/1'.freeze
|
4
4
|
|
5
|
-
# Get Buffer Share Count
|
6
|
-
# @param [String or Array] urls
|
7
|
-
# @return [Hashie::Mash, Array] URL & count hash, Error
|
8
|
-
def self.get_count(urls)
|
9
|
-
urls = check_and_trans_url(urls)
|
10
|
-
results, errors = {}, []
|
11
|
-
urls.each_with_index do |u, idx|
|
12
|
-
sleep(WAIT_SEC) if idx != 0
|
13
|
-
res, error = get_and_parse_response(u)
|
14
|
-
errors << error && next if error
|
15
|
-
results.merge!(res)
|
16
|
-
end
|
17
|
-
res_hash = Hashie::Mash.new(results)
|
18
|
-
return [res_hash, errors]
|
19
|
-
end
|
20
|
-
|
21
5
|
private
|
22
6
|
|
23
|
-
# Get and parse response data & error message
|
24
|
-
# @param [String] urls URL list
|
25
|
-
# @return [Hash, String] URL & count hash, Error message
|
26
|
-
def self.get_and_parse_response(url)
|
27
|
-
html = get_response(api_url(url))
|
28
|
-
res = parse_response(html, url)
|
29
|
-
return [res, nil]
|
30
|
-
rescue => e
|
31
|
-
message = "#{e.message}, url: #{url}"
|
32
|
-
return [nil, message]
|
33
|
-
end
|
34
|
-
|
35
7
|
# Build Feedly API URL
|
36
8
|
# @param [String] url
|
37
9
|
# @return [String] API url
|
data/lib/scouter/facebook.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Scouter
|
2
|
-
class Facebook < Scouter::Base::
|
2
|
+
class Facebook < Scouter::Base::MultiUrlApi
|
3
3
|
END_POINT = 'https://graph.facebook.com'.freeze
|
4
4
|
|
5
5
|
private
|
@@ -15,7 +15,7 @@ module Scouter
|
|
15
15
|
# Parse JSON data of response
|
16
16
|
# @param [String] json
|
17
17
|
# @return [Hash] url & count
|
18
|
-
def self.parse_response(json
|
18
|
+
def self.parse_response(json)
|
19
19
|
parse_response_item(JSON.parse(json)['data'])
|
20
20
|
end
|
21
21
|
|
data/lib/scouter/feedly.rb
CHANGED
@@ -1,23 +1,7 @@
|
|
1
1
|
module Scouter
|
2
|
-
class Feedly < Scouter::Base::
|
2
|
+
class Feedly < Scouter::Base::SingleUrlApi
|
3
3
|
END_POINT = 'http://cloud.feedly.com/v3'.freeze
|
4
4
|
|
5
|
-
# Get feedly Count
|
6
|
-
# @param [String or Array] urls
|
7
|
-
# @return [Hashie::Mash, Array] URL & count hash, Error
|
8
|
-
def self.get_count(urls)
|
9
|
-
urls = check_and_trans_url(urls)
|
10
|
-
results, errors = {}, []
|
11
|
-
urls.each_with_index do |u, idx|
|
12
|
-
sleep(WAIT_SEC) if idx != 0
|
13
|
-
res, error = get_and_parse_response(u)
|
14
|
-
errors << error && next if error
|
15
|
-
results.merge!(res)
|
16
|
-
end
|
17
|
-
res_hash = Hashie::Mash.new(results)
|
18
|
-
return [res_hash, errors]
|
19
|
-
end
|
20
|
-
|
21
5
|
private
|
22
6
|
|
23
7
|
# Build Feedly API URL
|
@@ -30,7 +14,7 @@ module Scouter
|
|
30
14
|
|
31
15
|
# Parse json data for response
|
32
16
|
# @param [String] json response by API
|
33
|
-
# @param [String] url
|
17
|
+
# @param [String] url
|
34
18
|
# @return [Hash] url & count
|
35
19
|
def self.parse_response(json, url)
|
36
20
|
res = JSON.parse(json)
|
data/lib/scouter/google_plus.rb
CHANGED
@@ -1,23 +1,7 @@
|
|
1
1
|
module Scouter
|
2
|
-
class GooglePlus < Scouter::Base::
|
2
|
+
class GooglePlus < Scouter::Base::SingleUrlApi
|
3
3
|
API_KEY = 'AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ'.freeze
|
4
4
|
|
5
|
-
# Get Google+ Count
|
6
|
-
# @param [String or Array] urls
|
7
|
-
# @return [Hashie::Mash, Array] URL & count hash, Error
|
8
|
-
def self.get_count(urls)
|
9
|
-
urls = check_and_trans_url(urls)
|
10
|
-
results, errors = {}, []
|
11
|
-
urls.each_with_index do |u, idx|
|
12
|
-
sleep(WAIT_SEC) if idx != 0
|
13
|
-
res, error = get_and_parse_response(u)
|
14
|
-
errors << error && next if error
|
15
|
-
results.merge!(res)
|
16
|
-
end
|
17
|
-
res_hash = Hashie::Mash.new(results)
|
18
|
-
return [res_hash, errors]
|
19
|
-
end
|
20
|
-
|
21
5
|
private
|
22
6
|
|
23
7
|
# Get and parse response
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Scouter
|
2
|
-
class HatenaBookmark < Scouter::Base::
|
2
|
+
class HatenaBookmark < Scouter::Base::MultiUrlApi
|
3
3
|
END_POINT = 'http://api.b.st-hatena.com'.freeze
|
4
4
|
|
5
5
|
private
|
@@ -15,7 +15,7 @@ module Scouter
|
|
15
15
|
# Parse JSON data of response
|
16
16
|
# @param [String] response
|
17
17
|
# @return [Hash] url & count
|
18
|
-
def self.parse_response(response
|
18
|
+
def self.parse_response(response)
|
19
19
|
parse_response_item(JSON.parse(response))
|
20
20
|
end
|
21
21
|
|
data/lib/scouter/linkedin.rb
CHANGED
@@ -1,23 +1,7 @@
|
|
1
1
|
module Scouter
|
2
|
-
class Linkedin < Scouter::Base::
|
2
|
+
class Linkedin < Scouter::Base::SingleUrlApi
|
3
3
|
END_POINT = 'https://www.linkedin.com/countserv'.freeze
|
4
4
|
|
5
|
-
# Get Linkedin Count
|
6
|
-
# @param [String or Array] urls
|
7
|
-
# @return [Hashie::Mash, Array] URL & count hash, Error
|
8
|
-
def self.get_count(urls)
|
9
|
-
urls = check_and_trans_url(urls)
|
10
|
-
results, errors = {}, []
|
11
|
-
urls.each_with_index do |u, idx|
|
12
|
-
sleep(WAIT_SEC) if idx != 0
|
13
|
-
res, error = get_and_parse_response(u)
|
14
|
-
errors << error && next if error
|
15
|
-
results.merge!(res)
|
16
|
-
end
|
17
|
-
res_hash = Hashie::Mash.new(results)
|
18
|
-
return [res_hash, errors]
|
19
|
-
end
|
20
|
-
|
21
5
|
private
|
22
6
|
|
23
7
|
# Build url for API
|
data/lib/scouter/pinterest.rb
CHANGED
@@ -1,23 +1,7 @@
|
|
1
1
|
module Scouter
|
2
|
-
class Pinterest < Scouter::Base::
|
2
|
+
class Pinterest < Scouter::Base::SingleUrlApi
|
3
3
|
END_POINT = 'http://api.pinterest.com/v1'.freeze
|
4
4
|
|
5
|
-
# Get Pinterest Count
|
6
|
-
# @param [String or Array] urls
|
7
|
-
# @return [Hashie::Mash, Array] URL & count hash, Error
|
8
|
-
def self.get_count(urls)
|
9
|
-
urls = check_and_trans_url(urls)
|
10
|
-
results, errors = {}, []
|
11
|
-
urls.each_with_index do |u, idx|
|
12
|
-
sleep(WAIT_SEC) if idx != 0
|
13
|
-
res, error = get_and_parse_response(u)
|
14
|
-
errors << error && next if error
|
15
|
-
results.merge!(res)
|
16
|
-
end
|
17
|
-
res_hash = Hashie::Mash.new(results)
|
18
|
-
return [res_hash, errors]
|
19
|
-
end
|
20
|
-
|
21
5
|
private
|
22
6
|
|
23
7
|
# Build url for API
|
data/lib/scouter/pocket.rb
CHANGED
@@ -1,23 +1,7 @@
|
|
1
1
|
module Scouter
|
2
|
-
class Pocket < Scouter::Base::
|
2
|
+
class Pocket < Scouter::Base::SingleUrlApi
|
3
3
|
END_POINT = 'https://widgets.getpocket.com'.freeze
|
4
4
|
|
5
|
-
# Get Pocket Count
|
6
|
-
# @param [String or Array] urls
|
7
|
-
# @return [Hashie::Mash, Array] URL & count hash, Error
|
8
|
-
def self.get_count(urls)
|
9
|
-
urls = check_and_trans_url(urls)
|
10
|
-
results, errors = {}, []
|
11
|
-
urls.each_with_index do |u, idx|
|
12
|
-
sleep(WAIT_SEC) if idx != 0
|
13
|
-
res, error = get_and_parse_response(u)
|
14
|
-
errors << error && next if error
|
15
|
-
results.merge!(res)
|
16
|
-
end
|
17
|
-
res_hash = Hashie::Mash.new(results)
|
18
|
-
return [res_hash, errors]
|
19
|
-
end
|
20
|
-
|
21
5
|
# Set API parameter for test mock
|
22
6
|
# @param [String or Array] num
|
23
7
|
def self.set_api_random(num)
|
@@ -26,18 +10,6 @@ module Scouter
|
|
26
10
|
|
27
11
|
private
|
28
12
|
|
29
|
-
# Get and parse response data
|
30
|
-
# @param [String] url URL
|
31
|
-
# @return [Hash, String] URL & count hash, Error message
|
32
|
-
def self.get_and_parse_response(url)
|
33
|
-
html = get_response(api_url(url))
|
34
|
-
res = parse_response(html, url)
|
35
|
-
return [res, nil]
|
36
|
-
rescue => e
|
37
|
-
message = "#{e.message}, url: #{url}"
|
38
|
-
return [nil, message]
|
39
|
-
end
|
40
|
-
|
41
13
|
# Build Pocket API URL
|
42
14
|
# @param [String] url
|
43
15
|
# @return [String] API url
|
data/lib/scouter/twitter.rb
CHANGED
@@ -1,23 +1,7 @@
|
|
1
1
|
module Scouter
|
2
|
-
class Twitter < Scouter::Base::
|
2
|
+
class Twitter < Scouter::Base::SingleUrlApi
|
3
3
|
END_POINT = 'http://urls.api.twitter.com'.freeze
|
4
4
|
|
5
|
-
# Get Twitter Count
|
6
|
-
# @param [String or Array] urls
|
7
|
-
# @return [Hashie::Mash, Array] URL & count hash, Error
|
8
|
-
def self.get_count(urls)
|
9
|
-
urls = check_and_trans_url(urls)
|
10
|
-
results, errors = {}, []
|
11
|
-
urls.each_with_index do |u, idx|
|
12
|
-
sleep(WAIT_SEC) if idx != 0
|
13
|
-
res, error = get_and_parse_response(u)
|
14
|
-
errors << error && next if error
|
15
|
-
results.merge!(res)
|
16
|
-
end
|
17
|
-
res_hash = Hashie::Mash.new(results)
|
18
|
-
return [res_hash, errors]
|
19
|
-
end
|
20
|
-
|
21
5
|
private
|
22
6
|
|
23
7
|
# Build Twitter API URL
|
data/lib/scouter.rb
CHANGED
@@ -9,6 +9,8 @@ require 'parallel'
|
|
9
9
|
# Scouter Class/Module
|
10
10
|
require 'scouter/base/version'
|
11
11
|
require 'scouter/base/object'
|
12
|
+
require 'scouter/base/single_url_api'
|
13
|
+
require 'scouter/base/multi_url_api'
|
12
14
|
require 'scouter/buffer'
|
13
15
|
require 'scouter/facebook'
|
14
16
|
require 'scouter/feedly'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scouter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- morizyun
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|
@@ -140,7 +140,9 @@ files:
|
|
140
140
|
- bin/scouter
|
141
141
|
- lib/scouter.rb
|
142
142
|
- lib/scouter/base/connection.rb
|
143
|
+
- lib/scouter/base/multi_url_api.rb
|
143
144
|
- lib/scouter/base/object.rb
|
145
|
+
- lib/scouter/base/single_url_api.rb
|
144
146
|
- lib/scouter/base/version.rb
|
145
147
|
- lib/scouter/buffer.rb
|
146
148
|
- lib/scouter/facebook.rb
|