scouter 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 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