docheck 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,21 +1,3 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
1
  *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
2
  *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
3
+ *.swo
data/LICENSE CHANGED
@@ -1,20 +1,19 @@
1
- Copyright (c) 2009 Kunto Aji Kristianto
1
+ Copyright (c) 2010 Kunto Aji Kristianto
2
2
 
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
10
9
 
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
13
12
 
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE
data/README.rdoc CHANGED
@@ -1,25 +1,40 @@
1
- = docheck
1
+ = Docheck
2
+ Docheck is a tool to check domain name availability. By default, It will return all available and registered domains.
2
3
 
3
- Simple Domain Checker Tool
4
4
 
5
- == Install
5
+ == Requirements
6
+
7
+ * Ruby >= 1.8.6
8
+ * whois gem - http://github.com/weppos/whois
9
+
10
+
11
+ == Installation
12
+
13
+ $ gem install docheck
6
14
 
7
- [sudo] gem install docheck
8
15
 
9
16
  == Usage
17
+ w = Whois::Client.new
18
+ From the command line:
19
+
20
+ docheck google
21
+
22
+ From the Ruby file or IRB.
23
+
24
+ require 'rubygems'
25
+ require 'docheck'
26
+
27
+ # Docheck only have two methods: print and fetch
28
+ Docheck.new('github').print
29
+ # or
30
+ Docheck.new('github').fetch
31
+
32
+
33
+ == Author
10
34
 
11
- docheck <domain_name>
35
+ Author:: {Kunto Aji Kristianto}[http://www.railsmine.net/] <kunto.aji.kr@gmail.com>
12
36
 
13
- == Note on Patches/Pull Requests
14
-
15
- * Fork the project.
16
- * Make your feature addition or bug fix.
17
- * Add tests for it. This is important so I don't break it in a
18
- future version unintentionally.
19
- * Commit, do not mess with rakefile, version, or history.
20
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
21
- * Send me a pull request. Bonus points for topic branches.
22
37
 
23
- == Copyright
38
+ == License
24
39
 
25
- Copyright (c) 2010 Kunto Aji Kristianto. See LICENSE for details.
40
+ Copyright (c) 2009-2010 Simone Carletti, Whois is released under the MIT license.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 1.0.0
data/bin/docheck CHANGED
@@ -1,57 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- =begin
4
- DoCheck is a simple domain name checker tool
5
- Copyright (C) 2010 Kunto Aji Kristianto
6
-
7
- This program is free software: you can redistribute it and/or modify
8
- it under the terms of the GNU General Public License as published by
9
- the Free Software Foundation, either version 3 of the License, or
10
- any later version.
11
-
12
- This program is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with this program. If not, see <http://www.gnu.org/licenses/>.e.me
19
- =end
20
2
 
21
- require 'open-uri'
22
-
23
- if ARGV.size < 1
24
- puts '[-] Usage: docheck <domain_name>'
25
- exit 1
26
- end
27
-
28
- puts "Checking...."
29
- begin
30
- domain_name = ARGV[0]
31
- open("http://www.who.is/whois/#{domain_name}/", "User-Agent" => "Mozilla/5.0") {|page|
32
- page.each_line {|line|
33
- if (line =~ /ERROR/)
34
- puts '[-] ERROR! Please check your domain name'
35
- exit 1
36
- end
37
- if (line =~ /REGISTRY WHOIS FOR/)
38
- puts "[-] #{domain_name} is not available"
39
- end
40
-
41
- if (line =~ /IS AVAILABLE/)
42
- puts "[+] #{domain_name} is available"
43
- end
44
-
45
- if (line =~ /available_domain/)
46
- avail_domain = line.slice(/domain=[a-z]+[\.]{1}[a-z]{2,}/).slice(/[a-z]+[\.]{1}[a-z]{2,}/)
47
- puts "[+] Available Domain: #{avail_domain}"
48
- end
49
- }
50
- }
51
- rescue OpenURI::HTTPError => error_msg
52
- puts "[-] Ups! Got bad status code: #{error_msg}. Try again"
53
- rescue Timeout::Error
54
- puts '[-] oops! Timeout bro, check your internet connection'
55
- rescue Exception => e
56
- puts "#{e.message}"
3
+ begin
4
+ require File.expand_path('../../lib/docheck.rb', __FILE__)
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require File.expand_path('../../lib/docheck.rb', __FILE__)
57
8
  end
9
+
10
+ ARGV.size > 0 ? Docheck.new(ARGV.first).print : puts("Usage: docheck yourdomain. Example: docheck google")
data/docheck.gemspec CHANGED
@@ -1,54 +1,23 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{docheck}
8
- s.version = "0.1.1"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Kunto Aji Kristianto"]
12
- s.date = %q{2010-01-13}
13
- s.default_executable = %q{docheck}
14
- s.description = %q{tool to check whether domain name is available}
15
- s.email = %q{kunto.aji.kr@gmail.com}
16
- s.executables = ["docheck"]
17
- s.extra_rdoc_files = [
18
- "LICENSE",
19
- "README.rdoc"
20
- ]
21
- s.files = [
22
- ".document",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "bin/docheck",
29
- "docheck.gemspec",
30
- "lib/docheck.rb",
31
- "test/helper.rb",
32
- "test/test_docheck.rb"
33
- ]
34
- s.homepage = %q{http://github.com/kuntoaji/docheck}
35
- s.rdoc_options = ["--charset=UTF-8"]
36
- s.require_paths = ["lib"]
37
- s.rubygems_version = %q{1.3.5}
38
- s.summary = %q{domain name checker}
39
- s.test_files = [
40
- "test/helper.rb",
41
- "test/test_docheck.rb"
42
- ]
43
-
44
- if s.respond_to? :specification_version then
45
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
46
- s.specification_version = 3
47
-
48
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
49
- else
50
- end
51
- else
52
- end
1
+ Gem::Specification.new do |spec|
2
+ spec.authors = 'Kunto Aji Kristianto'
3
+ spec.add_dependency('whois', '~> 1.3.8')
4
+ spec.description = <<-EOF
5
+ Docheck is a tool to check domain name availability.
6
+ By default, It will return all available and registered domains.
7
+ EOF
8
+ spec.email = 'kunto.aji.kr@gmail.com'
9
+ spec.executables << 'docheck'
10
+ spec.extra_rdoc_files = ['README.rdoc', 'LICENSE', 'VERSION']
11
+ spec.files = ['.gitignore', 'docheck.gemspec', 'LICENSE',
12
+ 'README.rdoc', 'VERSION', 'bin/docheck', 'lib/docheck.rb',
13
+ 'test/docheck_test.rb', 'test/helper.rb']
14
+ spec.has_rdoc = true
15
+ spec.homepage = 'http://github.com/kuntoaji/docheck'
16
+ spec.name = 'docheck'
17
+ spec.rdoc_options = ['--main', 'README.rdoc']
18
+ spec.required_ruby_version = '>= 1.8.7'
19
+ spec.requirements << 'ruby-whois, v1.3.8 or greater'
20
+ spec.summary = 'Domain name availability checker.'
21
+ spec.test_files = ['test/docheck_test.rb', 'test/helper.rb']
22
+ spec.version = '1.0.0'
53
23
  end
54
-
data/lib/docheck.rb CHANGED
@@ -0,0 +1,65 @@
1
+ # Domain name availability checker
2
+ #
3
+ # Author:: Kunto Aji Kristianto (mailto:kunto.aji.kr@gmail.com)
4
+ # Copyright:: Copyright (c) 2010 Kunto Aji Kristianto
5
+ # License:: Distributes under MIT license
6
+
7
+ require 'whois'
8
+
9
+ class Docheck
10
+
11
+ # DNS name of the generic top-level domain
12
+ TLD = %w{aero asia biz cat com coop edu gov info
13
+ int jobs mil mobi museum name net org pro tel travel}
14
+
15
+ # base_name is sld (Second Level Domain) and
16
+ # converted to lower case.
17
+ def initialize(base_name)
18
+ @base_name = base_name
19
+ @available_domains = []
20
+ @registered_domains = []
21
+ end
22
+
23
+ # Print the result to STDOUT.
24
+ # Used by docheck executable.
25
+ def print
26
+ result = fetch
27
+
28
+ puts "\nDocheck Result\n"
29
+ puts "--------------\n"
30
+ puts "Available Domains:"
31
+ result.first.map{|domain_name| puts "- #{domain_name}"}
32
+ puts "\n"
33
+ puts "Registered Domains:"
34
+ result.last.map{|domain_name| puts "- #{domain_name}"}
35
+ end
36
+
37
+ # Responsible to check domain's availability
38
+ # and return the result as array.
39
+ #
40
+ # The first element of array will return all
41
+ # available domains as array.
42
+ #
43
+ # The last element of array will return all
44
+ # registered domains as array.
45
+ def fetch
46
+ TLD.each do |tld|
47
+ domain_name = "#{@base_name}.#{tld}"
48
+ begin
49
+ whois_domain = Whois.whois(domain_name)
50
+
51
+ if whois_domain.available?
52
+ @available_domains << domain_name
53
+ elsif whois_domain.registered?
54
+ @registered_domains << domain_name
55
+ end
56
+ rescue Timeout::Error
57
+ next
58
+ rescue
59
+ next
60
+ end
61
+ end
62
+
63
+ return [@available_domains, @registered_domains]
64
+ end
65
+ end
@@ -0,0 +1,22 @@
1
+ require File.expand_path('../helper.rb', __FILE__)
2
+
3
+ class TestDocheck < Test::Unit::TestCase
4
+ context "A Docheck instance" do
5
+ setup do
6
+ @docheck = Docheck.new('railsmine')
7
+ end
8
+
9
+ should "return all availability and registered domain" do
10
+ result = @docheck.fetch
11
+ assert result.is_a?(Array)
12
+ assert result.first.is_a?(Array)
13
+ assert result.last.is_a?(Array)
14
+ assert_not_nil result
15
+ end
16
+
17
+ should "run #print successfully" do
18
+ assert @docheck.print
19
+ end
20
+ end
21
+ end
22
+
data/test/helper.rb CHANGED
@@ -6,5 +6,5 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
6
  $LOAD_PATH.unshift(File.dirname(__FILE__))
7
7
  require 'docheck'
8
8
 
9
- class Test::Unit::TestCase
10
- end
9
+ #class Test::Unit::TestCase
10
+ #end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docheck
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kunto Aji Kristianto
@@ -9,45 +9,54 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-13 00:00:00 +07:00
13
- default_executable: docheck
14
- dependencies: []
15
-
16
- description: tool to check whether domain name is available
12
+ date: 2010-10-08 00:00:00 +07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: whois
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 1.3.8
24
+ version:
25
+ description: " Docheck is a tool to check domain name availability.\n By default, It will return all available and registered domains.\n"
17
26
  email: kunto.aji.kr@gmail.com
18
27
  executables:
19
28
  - docheck
20
29
  extensions: []
21
30
 
22
31
  extra_rdoc_files:
23
- - LICENSE
24
32
  - README.rdoc
33
+ - LICENSE
34
+ - VERSION
25
35
  files:
26
- - .document
27
36
  - .gitignore
37
+ - docheck.gemspec
28
38
  - LICENSE
29
39
  - README.rdoc
30
- - Rakefile
31
40
  - VERSION
32
41
  - bin/docheck
33
- - docheck.gemspec
34
42
  - lib/docheck.rb
43
+ - test/docheck_test.rb
35
44
  - test/helper.rb
36
- - test/test_docheck.rb
37
45
  has_rdoc: true
38
46
  homepage: http://github.com/kuntoaji/docheck
39
47
  licenses: []
40
48
 
41
49
  post_install_message:
42
50
  rdoc_options:
43
- - --charset=UTF-8
51
+ - --main
52
+ - README.rdoc
44
53
  require_paths:
45
54
  - lib
46
55
  required_ruby_version: !ruby/object:Gem::Requirement
47
56
  requirements:
48
57
  - - ">="
49
58
  - !ruby/object:Gem::Version
50
- version: "0"
59
+ version: 1.8.7
51
60
  version:
52
61
  required_rubygems_version: !ruby/object:Gem::Requirement
53
62
  requirements:
@@ -55,13 +64,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
55
64
  - !ruby/object:Gem::Version
56
65
  version: "0"
57
66
  version:
58
- requirements: []
59
-
67
+ requirements:
68
+ - ruby-whois, v1.3.8 or greater
60
69
  rubyforge_project:
61
70
  rubygems_version: 1.3.5
62
71
  signing_key:
63
72
  specification_version: 3
64
- summary: domain name checker
73
+ summary: Domain name availability checker.
65
74
  test_files:
75
+ - test/docheck_test.rb
66
76
  - test/helper.rb
67
- - test/test_docheck.rb
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/Rakefile DELETED
@@ -1,52 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "docheck"
8
- gem.summary = "domain name checker"
9
- gem.description = "tool to check whether domain name is available"
10
- gem.email = "kunto.aji.kr@gmail.com"
11
- gem.homepage = "http://github.com/kuntoaji/docheck"
12
- gem.authors = ["Kunto Aji Kristianto"]
13
- gem.executables = ["docheck"]
14
- end
15
- Jeweler::GemcutterTasks.new
16
- rescue LoadError
17
- puts "DoCheck is not available. Install it with: gem install docheck"
18
- end
19
-
20
- require 'rake/testtask'
21
- Rake::TestTask.new(:test) do |test|
22
- test.libs << 'lib' << 'test'
23
- test.pattern = 'test/**/test_*.rb'
24
- test.verbose = true
25
- end
26
-
27
- begin
28
- require 'rcov/rcovtask'
29
- Rcov::RcovTask.new do |test|
30
- test.libs << 'test'
31
- test.pattern = 'test/**/test_*.rb'
32
- test.verbose = true
33
- end
34
- rescue LoadError
35
- task :rcov do
36
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
37
- end
38
- end
39
-
40
- task :test => :check_dependencies
41
-
42
- task :default => :test
43
-
44
- require 'rake/rdoctask'
45
- Rake::RDocTask.new do |rdoc|
46
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
47
-
48
- rdoc.rdoc_dir = 'rdoc'
49
- rdoc.title = "docheck #{version}"
50
- rdoc.rdoc_files.include('README*')
51
- rdoc.rdoc_files.include('lib/**/*.rb')
52
- end
data/test/test_docheck.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestDocheck < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end