page_speed 0.1.3 → 0.1.4
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/.rspec +1 -0
- data/README.md +5 -1
- data/bin/page_speed +28 -3
- data/lib/page_speed/version.rb +1 -1
- data/lib/page_speed.rb +71 -13
- data/spec/integration/page_speed_spec.rb +90 -0
- metadata +5 -4
- data/spec/integration/pagespeed_spec.rb +0 -4
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour
|
data/README.md
CHANGED
@@ -17,7 +17,11 @@ Simply install the gem:
|
|
17
17
|
Usage
|
18
18
|
-----
|
19
19
|
|
20
|
-
|
20
|
+
You have to get your API key first through [here](http://code.google.com/intl/en-EN/apis/pagespeedonline/v1/getting_started.html), then set it to the gem:
|
21
|
+
|
22
|
+
page_speed -k YOUR_KEY
|
23
|
+
|
24
|
+
After that, just execute page_speed against any website you can imagine:
|
21
25
|
|
22
26
|
page_speed URL
|
23
27
|
|
data/bin/page_speed
CHANGED
@@ -4,9 +4,34 @@
|
|
4
4
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
5
5
|
require 'page_speed'
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
if ARGV.length == 2
|
8
|
+
arg1, api_key = ARGV[0..1]
|
9
|
+
if arg1 == "-k"
|
10
|
+
PageSpeed::set_api_key(api_key)
|
11
|
+
puts "API key set."
|
12
|
+
exit
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
unless PageSpeed::api_key_exists?
|
17
|
+
puts "API key not set. Use the -k option to set the key."
|
18
|
+
puts ""
|
19
|
+
PageSpeed::help
|
9
20
|
exit
|
10
21
|
end
|
11
22
|
|
12
|
-
|
23
|
+
case ARGV.length
|
24
|
+
when 1
|
25
|
+
arg1 = ARGV[0]
|
26
|
+
case arg1
|
27
|
+
when "-v", "--version"
|
28
|
+
PageSpeed::version
|
29
|
+
when "-h", "--help"
|
30
|
+
PageSpeed::help
|
31
|
+
else
|
32
|
+
PageSpeed::analyze(arg1)
|
33
|
+
end
|
34
|
+
else
|
35
|
+
puts "Please check your syntax.\n"
|
36
|
+
PageSpeed::help
|
37
|
+
end
|
data/lib/page_speed/version.rb
CHANGED
data/lib/page_speed.rb
CHANGED
@@ -3,7 +3,6 @@ require "page_speed/version"
|
|
3
3
|
require 'json'
|
4
4
|
require 'open-uri'
|
5
5
|
|
6
|
-
API_KEY = "AIzaSyB-WW7oKAfD0T9cLGMufjiWA1mtLwDd4hg"
|
7
6
|
API_URL = "https://www.googleapis.com/pagespeedonline/v1/runPagespeed"
|
8
7
|
|
9
8
|
module PageSpeed
|
@@ -18,8 +17,54 @@ module PageSpeed
|
|
18
17
|
|
19
18
|
# Show results
|
20
19
|
show_results(uri, desktop, mobile)
|
20
|
+
|
21
|
+
rescue URI::InvalidURIError
|
22
|
+
puts "Please check your URL and try again."
|
23
|
+
|
24
|
+
rescue OpenURI::HTTPError
|
25
|
+
puts "The API you used is not correct. Use the -k option to replace it."
|
26
|
+
puts ""
|
27
|
+
reset_api_key
|
28
|
+
help
|
29
|
+
|
30
|
+
rescue Exception => e
|
31
|
+
puts "There has been an unexpected error:"
|
32
|
+
puts e.message
|
33
|
+
puts e.backtrace.inspect
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def help
|
38
|
+
version
|
39
|
+
usage
|
40
|
+
end
|
41
|
+
|
42
|
+
def version
|
43
|
+
puts "page_speed gem, version #{PageSpeed::VERSION}\n"
|
44
|
+
end
|
45
|
+
|
46
|
+
def usage
|
47
|
+
puts "usage: page_speed url | [ -k key | --key key ] | [ -v | --version ] | [ -h | --help ]"
|
48
|
+
puts "You can get your key at http://code.google.com/intl/en-EN/apis/pagespeedonline/v1/getting_started.html"
|
49
|
+
end
|
50
|
+
|
51
|
+
def set_api_key(key)
|
52
|
+
File.open(api_key_path, "w") {|f| f.write(key) }
|
53
|
+
end
|
54
|
+
|
55
|
+
def get_api_key
|
56
|
+
file = File.new(api_key_path, "r")
|
57
|
+
api_key = file.gets
|
58
|
+
file.close
|
59
|
+
api_key
|
60
|
+
end
|
61
|
+
|
62
|
+
def api_key_exists?
|
63
|
+
begin
|
64
|
+
get_api_key
|
65
|
+
true
|
21
66
|
rescue Exception
|
22
|
-
|
67
|
+
false
|
23
68
|
end
|
24
69
|
end
|
25
70
|
|
@@ -30,30 +75,30 @@ module PageSpeed
|
|
30
75
|
url = "http://#{url}"
|
31
76
|
end
|
32
77
|
uri = URI.parse(url)
|
33
|
-
uri.open
|
78
|
+
uri.open # ping URL; will raise a URI::InvalidURIError when failing
|
34
79
|
uri
|
35
80
|
end
|
36
81
|
|
37
|
-
def scores_for(uri
|
38
|
-
desktop = score_for(uri, true)
|
39
|
-
mobile = score_for(uri, false)
|
82
|
+
def scores_for(uri)
|
83
|
+
desktop = score_for(uri, :desktop => true)
|
84
|
+
mobile = score_for(uri, :desktop => false)
|
40
85
|
[desktop, mobile]
|
41
86
|
end
|
42
87
|
|
43
|
-
def score_for(uri,
|
44
|
-
json = api_request(uri,
|
88
|
+
def score_for(uri, opts)
|
89
|
+
json = api_request(uri, opts)
|
45
90
|
parse_score(json)
|
46
91
|
end
|
47
92
|
|
48
|
-
def api_request(uri,
|
49
|
-
#
|
50
|
-
|
93
|
+
def api_request(uri, opts = {})
|
94
|
+
# Merge options
|
95
|
+
opts = {:desktop => true}.merge(opts)
|
51
96
|
|
52
97
|
# Get URL for API
|
53
98
|
params = {}
|
54
99
|
params["url"] = uri
|
55
|
-
params["key"] =
|
56
|
-
params["strategy"] =
|
100
|
+
params["key"] = get_api_key
|
101
|
+
params["strategy"] = opts[:desktop] ? "desktop" : "mobile"
|
57
102
|
params_str = params.map{|k,v| "#{k}=#{v}" }.join("&")
|
58
103
|
|
59
104
|
# Send request and return JSON
|
@@ -69,5 +114,18 @@ module PageSpeed
|
|
69
114
|
def show_results(url, desktop, mobile)
|
70
115
|
puts "Google Page Speed for #{url}: #{desktop} (Desktop) / #{mobile} (Mobile)"
|
71
116
|
end
|
117
|
+
|
118
|
+
def reset_api_key
|
119
|
+
File.delete(api_key_path)
|
120
|
+
end
|
121
|
+
|
122
|
+
def api_key_path
|
123
|
+
dir = testing ? "/tmp" : File.expand_path("~")
|
124
|
+
dir + "/.page_speed"
|
125
|
+
end
|
126
|
+
|
127
|
+
def testing
|
128
|
+
! defined?(ENV['page_speed_env']).nil? && ENV['page_speed_env'] == "test"
|
129
|
+
end
|
72
130
|
end
|
73
131
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
ENV['page_speed_env'] = "test"
|
4
|
+
API_KEY = "AIzaSyCT0PgAW-FjLF0Nfx81DqU6laCSiXkIHFs"
|
5
|
+
|
6
|
+
describe PageSpeed do
|
7
|
+
before do
|
8
|
+
File.open("/tmp/.page_speed", 'w') {|f| f.write(API_KEY) } # Use a correct API KEY
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should point to help when no parameter is provided" do
|
12
|
+
result = `bin/page_speed`
|
13
|
+
result.should include("Please check your syntax")
|
14
|
+
result.should include("usage: page_speed")
|
15
|
+
end
|
16
|
+
|
17
|
+
context "version" do
|
18
|
+
it "should be shown with -v" do
|
19
|
+
result = `bin/page_speed -v`
|
20
|
+
result.should include(PageSpeed::VERSION)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should be shown with --version" do
|
24
|
+
result = `bin/page_speed --version`
|
25
|
+
result.should include(PageSpeed::VERSION)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "help" do
|
30
|
+
it "should be shown with -h" do
|
31
|
+
result = `bin/page_speed -h`
|
32
|
+
result.should include("usage: page_speed")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should be shown with --help" do
|
36
|
+
result = `bin/page_speed --help`
|
37
|
+
result.should include("usage: page_speed")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "analyzer" do
|
42
|
+
it "should fail with a number as a parameter" do
|
43
|
+
result = `bin/page_speed 42`
|
44
|
+
result.should include("Please check your URL and try again")
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should fail with a bad string as a parameter" do
|
48
|
+
result = `bin/page_speed do_the_cuca`
|
49
|
+
result.should include("Please check your URL and try again")
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should success with a URL without www" do
|
53
|
+
result = `bin/page_speed google.com`
|
54
|
+
result.should include("Google Page Speed for http://google.com: 98 (Desktop) / 96 (Mobile)")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should success with a URL with www" do
|
58
|
+
result = `bin/page_speed www.facebook.com`
|
59
|
+
result.should include("Google Page Speed for http://www.facebook.com: 99 (Desktop) / 99 (Mobile)")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "API key control" do
|
64
|
+
it "should prompt the API key when is not found" do
|
65
|
+
File.delete("/tmp/.page_speed")
|
66
|
+
result = `bin/page_speed google.com`
|
67
|
+
result.should include("PI key not set. Use the -k option to set the key.")
|
68
|
+
end
|
69
|
+
|
70
|
+
context "when API key is corrupted" do
|
71
|
+
before do
|
72
|
+
File.open("/tmp/.page_speed", 'w') {|f| f.write(API_KEY.chop) } # Use a corrupt API KEY
|
73
|
+
@result = `bin/page_speed google.com`
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should prompt about it" do
|
77
|
+
@result.should include("The API you used is not correct.")
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should have deleted the file where the API key is and ask for a new one" do
|
81
|
+
@result = `bin/page_speed google.com`
|
82
|
+
@result.should include("PI key not set. Use the -k option to set the key.")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context "key" do
|
88
|
+
|
89
|
+
end
|
90
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: page_speed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Albert Bellonch
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-09-
|
13
|
+
date: 2011-09-26 00:00:00 +02:00
|
14
14
|
default_executable: page_speed
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -46,6 +46,7 @@ extra_rdoc_files: []
|
|
46
46
|
|
47
47
|
files:
|
48
48
|
- .gitignore
|
49
|
+
- .rspec
|
49
50
|
- .rvmrc
|
50
51
|
- Gemfile
|
51
52
|
- README.md
|
@@ -54,7 +55,7 @@ files:
|
|
54
55
|
- lib/page_speed.rb
|
55
56
|
- lib/page_speed/version.rb
|
56
57
|
- page_speed.gemspec
|
57
|
-
- spec/integration/
|
58
|
+
- spec/integration/page_speed_spec.rb
|
58
59
|
- spec/spec_helper.rb
|
59
60
|
has_rdoc: true
|
60
61
|
homepage: http://itnig.net
|
@@ -85,5 +86,5 @@ signing_key:
|
|
85
86
|
specification_version: 3
|
86
87
|
summary: A simple port for Google Page Speed's scores
|
87
88
|
test_files:
|
88
|
-
- spec/integration/
|
89
|
+
- spec/integration/page_speed_spec.rb
|
89
90
|
- spec/spec_helper.rb
|