Sha256: 8e2c01e1fae6ead5da5012e618e78aab66fbd2e0e6da5c49ec6a42b0d097dc36

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

# coding:utf-8
# Standard Library
require 'cgi'
require 'open-uri'
require 'json'
require 'hashie/mash'
require 'parallel'

# Scouter Class/Module
require 'scouter/base/version'
require 'scouter/base/object'
require 'scouter/buffer'
require 'scouter/facebook'
require 'scouter/feedly'
require 'scouter/google_plus'
require 'scouter/hatena_bookmark'
require 'scouter/linkedin'
require 'scouter/pinterest'
require 'scouter/pocket'
require 'scouter/twitter'

module Scouter
  WAIT_SEC = 1
  ONE_TIME_URL_MAX = 20

  SERVICES = [ Scouter::Buffer,
               Scouter::Facebook,
               Scouter::Feedly,
               Scouter::GooglePlus,
               Scouter::HatenaBookmark,
               Scouter::Linkedin,
               Scouter::Pinterest,
               Scouter::Pocket,
               Scouter::Twitter ]

  # get Social Count By Buffer/Facebook/Feedly/GooglePlus/HatenaBookmark/Linkedin/Pinterest/Pocket/Twitter
  # @param [String or Array] urls
  def self.get_count(urls, services = SERVICES)
    results, errors = [], {}

    Parallel.each(services, in_threads: services.count) do |service|
      result, error = service.get_count(urls)
      errors[service.service_name] = error && next unless error.empty?
      results << result
    end

    results_hash = results_merged_hash(results)
    return [results_hash, errors]
  end

  private

  def self.results_merged_hash(results)
    results_hash = {}
    results.each do |item|
      item.each do |url, hash|
        results_hash[url] = (results_hash[url] || {}).merge(hash)
      end
    end
    Hashie::Mash.new(results_hash)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
scouter-0.0.3 lib/scouter.rb