page_speed 0.1.1
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.
- data/.gitignore +4 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.md +43 -0
- data/Rakefile +2 -0
- data/bin/page_speed +12 -0
- data/lib/page_speed/version.rb +3 -0
- data/lib/page_speed.rb +73 -0
- data/page_speed.gemspec +26 -0
- data/spec/integration/pagespeed_spec.rb +4 -0
- data/spec/spec_helper.rb +1 -0
- metadata +89 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.9.2rvm 1.9.2
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
PageSpeed
|
2
|
+
======
|
3
|
+
|
4
|
+
Description
|
5
|
+
-----------
|
6
|
+
|
7
|
+
PageSpeed is a simple gem which ports Google Page Speed's scores to your
|
8
|
+
command line.
|
9
|
+
|
10
|
+
Installation
|
11
|
+
------------
|
12
|
+
|
13
|
+
Simply install the gem:
|
14
|
+
|
15
|
+
gem install page_speed
|
16
|
+
|
17
|
+
Usage
|
18
|
+
-----
|
19
|
+
|
20
|
+
Just execute it against any website you can imagine:
|
21
|
+
|
22
|
+
page_speed URL
|
23
|
+
|
24
|
+
Example
|
25
|
+
-------
|
26
|
+
|
27
|
+
If we test it against itnig.net:
|
28
|
+
|
29
|
+
> page_speed itnig.net
|
30
|
+
|
31
|
+
Google Page Speed for itnig.net: 94 (Desktop) / 88 (Mobile)
|
32
|
+
|
33
|
+
If we test it against a non-valid URL:
|
34
|
+
|
35
|
+
> page_speed cucamonga
|
36
|
+
|
37
|
+
There has been an error. Please check your URL.
|
38
|
+
|
39
|
+
Documentation
|
40
|
+
-------------
|
41
|
+
|
42
|
+
* [Google Page Speed](http://pagespeed.googlelabs.com)
|
43
|
+
* [Google Page Speed API](http://code.google.com/intl/en-EN/apis/pagespeedonline/)
|
data/Rakefile
ADDED
data/bin/page_speed
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
5
|
+
require 'page_speed'
|
6
|
+
|
7
|
+
unless ARGV.length == 1 && URL = ARGV[0]
|
8
|
+
puts "There has been an error. Please check your URL."
|
9
|
+
exit
|
10
|
+
end
|
11
|
+
|
12
|
+
PageSpeed::analyze(URL)
|
data/lib/page_speed.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require "page_speed/version"
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'open-uri'
|
5
|
+
|
6
|
+
API_KEY = "AIzaSyB-WW7oKAfD0T9cLGMufjiWA1mtLwDd4hg"
|
7
|
+
API_URL = "https://www.googleapis.com/pagespeedonline/v1/runPagespeed"
|
8
|
+
|
9
|
+
module PageSpeed
|
10
|
+
class << self
|
11
|
+
def analyze(url)
|
12
|
+
begin
|
13
|
+
# Parse URL
|
14
|
+
uri = get_uri(url)
|
15
|
+
|
16
|
+
# Get scores
|
17
|
+
desktop, mobile = scores_for(uri)
|
18
|
+
|
19
|
+
# Show results
|
20
|
+
show_results(uri, desktop, mobile)
|
21
|
+
rescue Exception
|
22
|
+
puts "There has been an error. Please check your URL."
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def get_uri(url)
|
29
|
+
unless url.match("https?:\/\/*")
|
30
|
+
url = "http://#{url}"
|
31
|
+
end
|
32
|
+
uri = URI.parse(url)
|
33
|
+
uri.open
|
34
|
+
uri
|
35
|
+
end
|
36
|
+
|
37
|
+
def scores_for(uri, opts = {})
|
38
|
+
desktop = score_for(uri, true)
|
39
|
+
mobile = score_for(uri, false)
|
40
|
+
[desktop, mobile]
|
41
|
+
end
|
42
|
+
|
43
|
+
def score_for(uri, is_desktop)
|
44
|
+
json = api_request(uri, is_desktop)
|
45
|
+
parse_score(json)
|
46
|
+
end
|
47
|
+
|
48
|
+
def api_request(uri, is_desktop)
|
49
|
+
# Get options
|
50
|
+
strategy =
|
51
|
+
|
52
|
+
# Get URL for API
|
53
|
+
params = {}
|
54
|
+
params["url"] = uri
|
55
|
+
params["key"] = API_KEY
|
56
|
+
params["strategy"] = is_desktop ? "desktop" : "mobile"
|
57
|
+
params_str = params.map{|k,v| "#{k}=#{v}" }.join("&")
|
58
|
+
|
59
|
+
# Send request and return JSON
|
60
|
+
api_uri = URI.parse(URI.escape(API_URL + "?" + params_str))
|
61
|
+
api_uri.open.read
|
62
|
+
end
|
63
|
+
|
64
|
+
def parse_score(json)
|
65
|
+
h = JSON.parse(json)
|
66
|
+
h["score"]
|
67
|
+
end
|
68
|
+
|
69
|
+
def show_results(url, desktop, mobile)
|
70
|
+
puts "Google Page Speed for #{url}: #{desktop} (Desktop) / #{mobile} (Mobile)"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/page_speed.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "page_speed/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "page_speed"
|
7
|
+
s.version = PageSpeed::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Albert Bellonch"]
|
10
|
+
s.email = ["albert@itnig.net"]
|
11
|
+
s.homepage = "http://itnig.net"
|
12
|
+
s.summary = %q{A simple port for Google Page Speed's scores}
|
13
|
+
s.description = %q{-}
|
14
|
+
|
15
|
+
s.rubyforge_project = "page_speed"
|
16
|
+
|
17
|
+
s.bindir = 'bin'
|
18
|
+
s.executables = ['page_speed']
|
19
|
+
s.default_executable = 'page_speed'
|
20
|
+
|
21
|
+
s.files = `git ls-files`.split("\n")
|
22
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
|
+
s.require_paths = ["lib"]
|
24
|
+
s.add_development_dependency "rspec", "2.3.0"
|
25
|
+
s.add_development_dependency "ZenTest", "4.4.2"
|
26
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'page_speed'
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: page_speed
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.1
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Albert Bellonch
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-09-21 00:00:00 +02:00
|
14
|
+
default_executable: page_speed
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: rspec
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - "="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 2.3.0
|
25
|
+
type: :development
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: ZenTest
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - "="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 4.4.2
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id002
|
38
|
+
description: "-"
|
39
|
+
email:
|
40
|
+
- albert@itnig.net
|
41
|
+
executables:
|
42
|
+
- page_speed
|
43
|
+
extensions: []
|
44
|
+
|
45
|
+
extra_rdoc_files: []
|
46
|
+
|
47
|
+
files:
|
48
|
+
- .gitignore
|
49
|
+
- .rvmrc
|
50
|
+
- Gemfile
|
51
|
+
- README.md
|
52
|
+
- Rakefile
|
53
|
+
- bin/page_speed
|
54
|
+
- lib/page_speed.rb
|
55
|
+
- lib/page_speed/version.rb
|
56
|
+
- page_speed.gemspec
|
57
|
+
- spec/integration/pagespeed_spec.rb
|
58
|
+
- spec/spec_helper.rb
|
59
|
+
has_rdoc: true
|
60
|
+
homepage: http://itnig.net
|
61
|
+
licenses: []
|
62
|
+
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: "0"
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: "0"
|
80
|
+
requirements: []
|
81
|
+
|
82
|
+
rubyforge_project: page_speed
|
83
|
+
rubygems_version: 1.6.1
|
84
|
+
signing_key:
|
85
|
+
specification_version: 3
|
86
|
+
summary: A simple port for Google Page Speed's scores
|
87
|
+
test_files:
|
88
|
+
- spec/integration/pagespeed_spec.rb
|
89
|
+
- spec/spec_helper.rb
|