class Mudfly::Client
Public Class Methods
analyze(url, strategy: :desktop)
click to toggle source
# File lib/mudfly/client.rb, line 9 def self.analyze(url, strategy: :desktop) unless [:desktop, :mobile].include?(strategy) raise ArgumentError.new('Invalid strategy, only :desktop and :mobile are allowed.') end request_url = 'runPagespeed' query_string = { :url => url, :strategy => strategy } response_body = JSON.parse( Request.get(request_url, query_string) ) report = OpenStruct.new report.response_code = response_body['responseCode'] report.title = response_body['title'] report.score = response_body['score'] report.kind = response_body['kind'] report.id = response_body['id'] report.stats = OpenStruct.new({ :resources_number => response_body['pageStats']['numberResources'], :hosts_number => response_body['pageStats']['numberHosts'], :total_request_bytes => response_body['pageStats']['totalRequestBytes'], :static_resources_number => response_body['pageStats']['numberStaticResources'], :html_response_bytes => response_body['pageStats']['htmlResponseBytes'], :css_response_bytes => response_body['pageStats']['cssResponseBytes'], :image_response_bytes => response_body['pageStats']['imageResponseBytes'], :javascript_response_bytes => response_body['pageStats']['javascriptResponseBytes'], :javascript_resources_number => response_body['pageStats']['numberJsResources'], :css_resources_number => response_body['pageStats']['numberCssResources'] }) report.rules = response_body['formattedResults']['ruleResults'].values.each.inject([]) do |rules, rule_temp| rules << OpenStruct.new({ :name => rule_temp['localizedRuleName'], :score => rule_temp['ruleScore'], :impact => rule_temp['ruleImpact'] }) end report.version = OpenStruct.new({ :major => response_body['version']['major'], :minor => response_body['version']['minor'] }) return report end