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 ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm 1.9.2rvm 1.9.2
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in pagespeed.gemspec
4
+ gemspec
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
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
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)
@@ -0,0 +1,3 @@
1
+ module PageSpeed
2
+ VERSION = "0.1.1"
3
+ end
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
@@ -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
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe PageSpeed do
4
+ end
@@ -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