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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de25a57191d53f274b602f1302d711dfe1984384
4
- data.tar.gz: 4d037129761a3de61a5d30b0550c04313a19e330
3
+ metadata.gz: ed4b16bc3e8f33cb20447adc6ef54b8343c95e44
4
+ data.tar.gz: ec52453d076bb99d8f0b07ea8d7f77ff4e2df184
5
5
  SHA512:
6
- metadata.gz: ebec5f6833621e940f618c1efee5a1e13a2c486bb040480e1b8829d7b8cc25db14e945d55731f14a3d29296cafbd3452fdfe04633ea2168b6d9f2be7ff1ee177
7
- data.tar.gz: b12926883efbce420c0527462229555029360393d515a0fb29ad66b95a7e8d59b66e4f5f7c27e52da68519847208098b80cdde28cc13d9ffd34b068ae89d02d6
6
+ metadata.gz: d278a31911672ef746d02f1327661605a634054af2d044b89248461fb982388b571c1accd016b43ffdb9d28450b7c6d2069433da0dae5a4288c4ba20c0f0cf6b
7
+ data.tar.gz: dfe62f0f5d9612c544dbb335814efa4eb0285bb48a3d3124d4eebb3ea934119d3424a1b21bc1b2e5299c7249998dabf3641864c6d5b0a0991b449917812e3033
data/.travis.yml CHANGED
@@ -3,3 +3,8 @@ rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
5
  - 2.1.5
6
+ bundler_args: --jobs=2
7
+ script: CODECLIMATE_REPO_TOKEN=30671829a44a12cdaa579f9b8e05f5fac4f70176dd58b2e8487f51380845f3e9 bundle exec rspec
8
+ branches:
9
+ only:
10
+ - master
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in scouter.gemspec
4
4
  gemspec
5
+
6
+ group :test do
7
+ gem 'coveralls', require: false
8
+ gem 'codeclimate-test-reporter', require: false
9
+ end
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Scouter
1
+ # Scouter [![Gem Version](https://badge.fury.io/rb/scouter.svg)](http://badge.fury.io/rb/scouter) [![Build Status](https://travis-ci.org/morizyun/scouter.svg?branch=master)](https://travis-ci.org/morizyun/scouter) [![Code Climate](https://codeclimate.com/github/morizyun/scouter/badges/gpa.svg)](https://codeclimate.com/github/morizyun/scouter) [![Test Coverage](https://codeclimate.com/github/morizyun/scouter/badges/coverage.svg)](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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Scouter
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -1,37 +1,9 @@
1
1
  module Scouter
2
- class Buffer < Scouter::Base::Object
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
@@ -1,5 +1,5 @@
1
1
  module Scouter
2
- class Facebook < Scouter::Base::Object
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, urls = nil)
18
+ def self.parse_response(json)
19
19
  parse_response_item(JSON.parse(json)['data'])
20
20
  end
21
21
 
@@ -1,23 +1,7 @@
1
1
  module Scouter
2
- class Feedly < Scouter::Base::Object
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 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)
@@ -1,23 +1,7 @@
1
1
  module Scouter
2
- class GooglePlus < Scouter::Base::Object
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::Object
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, urls = nil)
18
+ def self.parse_response(response)
19
19
  parse_response_item(JSON.parse(response))
20
20
  end
21
21
 
@@ -1,23 +1,7 @@
1
1
  module Scouter
2
- class Linkedin < Scouter::Base::Object
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
@@ -1,23 +1,7 @@
1
1
  module Scouter
2
- class Pinterest < Scouter::Base::Object
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
@@ -1,23 +1,7 @@
1
1
  module Scouter
2
- class Pocket < Scouter::Base::Object
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
@@ -1,23 +1,7 @@
1
1
  module Scouter
2
- class Twitter < Scouter::Base::Object
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
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-17 00:00:00.000000000 Z
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