gtools 0.0.1 → 0.0.2

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.
@@ -1,4 +1,5 @@
1
- Copyright (c) 2013 Kamil Kocemba
1
+ GTools
2
+ Copyright (c) 2013 Kamil Kocemba <kkocemba@gmail.com>
2
3
 
3
4
  MIT License
4
5
 
data/Rakefile CHANGED
@@ -10,4 +10,4 @@ RDoc::Task.new do |rd|
10
10
  end
11
11
 
12
12
  task :default => :spec
13
- task :test => :spec
13
+ task :test => :spec
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["kamil@futureworkshops.com"]
11
11
  spec.description = %{A set of Gooogle SEO tools in Ruby}
12
12
  spec.summary = %q{Gathers statistics like PageRank, site index, page speed analysis and more.}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/kkodev/gtools"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -1,45 +1,84 @@
1
+ ##
2
+ # GTools
3
+ # Copyright (c) 2013 Kamil Kocemba <kkocemba@gmail.com>
4
+ #
5
+
1
6
  require "gtools/version"
2
7
  require 'httparty'
3
8
 
4
9
  module GTools
5
10
 
11
+ ##
12
+ # Returns Google Page Rank for specified domain
13
+ #
14
+ # <tt>Note: mining Page Rank violates Google ToS.</tt>
15
+ #
6
16
  def self.page_rank(domain)
7
17
  url = GToolsConfiguration.tbr_host + GToolsConfiguration.tbr_query % [GMath.hash(domain), domain]
8
18
  r = HTTParty.get(url).parsed_response
9
19
  (r =~ /(\d+)$/) ? Integer($1) : nil
10
20
  end
11
21
 
22
+ ##
23
+ # Returns a dictionary of Google pagespeed analysis results for specified URL.
24
+ #
25
+ # Notable fields: <tt>rule_results</tt>, <tt>score</tt>
26
+ #
12
27
  def self.pagespeed_analysis(url)
13
- nil unless url
28
+ return nil unless valid_url url
14
29
  url = GToolsConfiguration.google_pagespeed_url % [URI.encode(url)]
15
30
  HTTParty.get(url).parsed_response["results"]
16
31
  end
17
32
 
33
+ ##
34
+ # Returns pagespeed score for specified URL.
35
+ #
18
36
  def self.pagespeed_score(url)
19
- nil unless url && URI.parse(url)
37
+ return nil unless valid_url url
20
38
  r = pagespeed_analysis(url)
21
39
  r ? r["score"] : nil
22
40
  end
23
41
 
24
- def self.site_index(url)
25
- nil unless url && URI.parse(url)
26
- search_results "site:#{url}"
42
+ ##
43
+ # Returns estimated number of indexed pages for specified domain.
44
+ #
45
+ # <tt>Provide user_ip param to avoid ToS violation.</tt>
46
+ #
47
+ def self.site_index(url, user_ip = nil)
48
+ return nil unless valid_url url
49
+ search_results "site:#{url}", user_ip
27
50
  end
28
51
 
29
- def self.site_links(url)
30
- nil unless url && URI.parse(url)
31
- search_results "link:#{url}"
52
+ ##
53
+ #
54
+ # Returns a number of results for link:domain query.
55
+ # This gives an overview of backlink portfolio.
56
+ #
57
+ # <tt>Note: this method is not intended to be used for accurate backlink analysis.</tt>
58
+ #
59
+ def self.site_links(url, user_ip = nil)
60
+ return nil unless valid_url url
61
+ search_results "link:#{url}", user_ip
32
62
  end
33
63
 
34
- def self.search_results(query)
35
- nil unless query
64
+ ##
65
+ # Returns estimated number of results for specified search query.
66
+ #
67
+ # <tt>Provide user_ip param to avoid ToS violation.</tt>
68
+ #
69
+ def self.search_results(query, user_ip = nil)
70
+ return nil unless query
36
71
  url = GToolsConfiguration.google_apisearch_url % [1, URI.encode(query)]
72
+ url += "&userip=#{user_ip}" if user_ip
37
73
  r = HTTParty.get(url).parsed_response
38
74
  return nil unless r['responseData']
39
75
  count = r['responseData']['cursor']['estimatedResultCount']
40
76
  count ? Integer(count) : nil
41
77
  end
42
78
 
79
+ ##
80
+ # Returns Google tld suggestion based on current IP.
81
+ #
43
82
  def self.suggested_tld
44
83
  url = GToolsConfiguration.google_tld_url
45
84
  domain = HTTParty.get(url).parsed_response
@@ -47,12 +86,20 @@ module GTools
47
86
  end
48
87
 
49
88
  private
50
- module GToolsConfiguration
89
+ def self.valid_url(url) # :nodoc:
90
+ false unless url
91
+ url += 'http://' unless url =~ /http:\/\//
92
+ !!(URI.parse(url) && url =~ URI::regexp)
93
+ rescue URI::InvalidURIError
94
+ false
95
+ end
96
+
97
+ private
98
+ module GToolsConfiguration # :nodoc:
51
99
 
52
100
  class << self;
53
101
  attr_accessor :google_apisearch_url, :google_pagespeed_url, :google_plusone_url, :google_tld_url, :tbr_host, :tbr_query;
54
102
  end
55
-
56
103
  self.google_apisearch_url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=%s&q=%s"
57
104
  self.google_pagespeed_url = "https://developers.google.com/_apps/pagespeed/run_pagespeed?url=%s&format=json"
58
105
  self.google_plusone_url = "https://plusone.google.com/u/0/_/+1/fastbutton?count=true&url=%s"
@@ -63,7 +110,7 @@ module GTools
63
110
  end
64
111
 
65
112
  private
66
- module GMath
113
+ module GMath # :nodoc:
67
114
 
68
115
  class << self; attr_accessor :hash_seed; end
69
116
 
@@ -1,3 +1,8 @@
1
- module Gtools
2
- VERSION = "0.0.1"
1
+ ##
2
+ # GTools
3
+ # Copyright (c) 2013 Kamil Kocemba <kkocemba@gmail.com>
4
+ #
5
+
6
+ module Gtools # :nodoc: all
7
+ VERSION = "0.0.2"
3
8
  end
@@ -1,9 +1,12 @@
1
+ ##
2
+ # GTools
3
+ # Copyright (c) 2013 Kamil Kocemba <kkocemba@gmail.com>
4
+ #
5
+
1
6
  require 'spec_helper'
2
7
 
3
8
  describe GTools do
4
9
 
5
- sleep_amount = 1
6
-
7
10
  describe :page_rank do
8
11
 
9
12
  it "should return page rank for a valid domain" do
@@ -58,15 +61,13 @@ describe GTools do
58
61
  describe :site_index do
59
62
 
60
63
  it "should return an integer for a valid domain" do
61
- sleep sleep_amount
62
- index = GTools.site_index 'google.com'
64
+ index = GTools.site_index 'google.com', '50.19.85.156'
63
65
  index.should_not be_nil
64
66
  index.should_not == 0
65
67
  end
66
68
 
67
- it "should return nil for invalid domain" do
68
- sleep sleep_amount
69
- index = GTools.site_index 'test'
69
+ it "should return nil for invalid url" do
70
+ index = GTools.site_index '@#$%', '50.19.85.156'
70
71
  index.should be_nil
71
72
  end
72
73
 
@@ -75,15 +76,13 @@ describe GTools do
75
76
  describe :site_links do
76
77
 
77
78
  it "should return an integer for a valid domain" do
78
- sleep sleep_amount
79
- count = GTools.site_links 'google.com'
79
+ count = GTools.site_links 'google.com', '50.18.169.106'
80
80
  count.should_not be_nil
81
81
  count.should_not == 0
82
82
  end
83
83
 
84
- it "should return nil for invalid domain" do
85
- sleep sleep_amount
86
- count = GTools.site_links 'test'
84
+ it "should return nil for invalid url" do
85
+ count = GTools.site_links '@#$%', '50.18.169.106'
87
86
  count.should be_nil
88
87
  end
89
88
 
@@ -91,18 +90,18 @@ describe GTools do
91
90
 
92
91
  describe :search_results do
93
92
 
94
- it "should return an integer for a valid domain" do
95
- sleep sleep_amount
96
- count = GTools.search_results 'google.com'
93
+ it "should return an integer for a valid query" do
94
+ count = GTools.search_results 'lolcat', '199.59.148.82'
97
95
  count.should_not be_nil
98
96
  count.should_not == 0
99
97
  end
100
98
 
101
- it "should return nil for invalid domain" do
102
- sleep sleep_amount
103
- count = GTools.search_results 'test'
104
- count.should be_nil
99
+ it "should work without providing IP" do
100
+ count = GTools.search_results 'google.com'
101
+ count.should_not be_nil
102
+ count.should_not == 0
105
103
  end
104
+
106
105
  end
107
106
 
108
107
  describe :suggested_tld do
@@ -1 +1,6 @@
1
+ ##
2
+ # GTools
3
+ # Copyright (c) 2013 Kamil Kocemba <kkocemba@gmail.com>
4
+ #
5
+
1
6
  require 'gtools'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-17 00:00:00.000000000 Z
12
+ date: 2013-04-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -111,7 +111,7 @@ files:
111
111
  - lib/gtools/version.rb
112
112
  - spec/lib/gtools_spec.rb
113
113
  - spec/spec_helper.rb
114
- homepage: ''
114
+ homepage: https://github.com/kkodev/gtools
115
115
  licenses:
116
116
  - MIT
117
117
  post_install_message:
@@ -126,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  segments:
128
128
  - 0
129
- hash: 4345568620700901684
129
+ hash: 1773892807361118976
130
130
  required_rubygems_version: !ruby/object:Gem::Requirement
131
131
  none: false
132
132
  requirements:
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  version: '0'
136
136
  segments:
137
137
  - 0
138
- hash: 4345568620700901684
138
+ hash: 1773892807361118976
139
139
  requirements: []
140
140
  rubyforge_project:
141
141
  rubygems_version: 1.8.24