Class: PagespeedHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/pagespeedhelper.rb

Constant Summary collapse

Pagespeedonline =
Google::Apis::PagespeedonlineV2

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key, limit = 32, debug = false) ⇒ PagespeedHelper

Returns a new instance of PagespeedHelper.



9
10
11
12
13
14
15
16
17
18
# File 'lib/pagespeedhelper.rb', line 9

def initialize(key, limit=32, debug=false)
  @psservice = Pagespeedonline::PagespeedonlineService.new
  @psservice.key = key
  @wait_limit = limit

  if debug
    Google::Apis.logger = Logger.new(STDERR)
    Google::Apis.logger.level = Logger::DEBUG
  end
end

Class Method Details

.parse(data) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/pagespeedhelper.rb', line 41

def self.parse(data) 
  results = Array.new
  
  data.each do |result|
    if !result.is_a?(Hash)
      result_hash = { 
        "url" => result.id, 
        "score" => result.rule_groups["SPEED"].score, 
        "stats" => Hash[result.page_stats.to_h.map{ |k, v| [k.to_s, { 
          "name" => k.to_s.capitalize.gsub!('_', ' '), 
          "value" => v } ] }],
        "results" => build_rule_hash(result.formatted_results.rule_results)
      }
    else
      result_hash = result
    end
    
    results.push(result_hash)
  end

  results
end

Instance Method Details

#query(urls, strategy = "desktop", secure = false) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/pagespeedhelper.rb', line 20

def query(urls, strategy="desktop", secure=false)
  @wait_time = 1
  data = Array.new 
  urls = [urls] if !urls.is_a?(Array)

  urls = urls.map { |url| add_protocol_if_absent(url, secure) }

  urls.each_slice(20).to_a.each do |url_list|
   
    begin
      results = send_request(url_list, strategy)
    end while rate_error?(results)

    block_given? ? yield(results) : data.concat(results)

    sleep(3)
  end
  
  data if !block_given?
end