@@ -3,24 +3,15 @@ require 'ostruct' |
||
| 3 | 3 |
|
| 4 | 4 |
class WhoisParser |
| 5 | 5 |
|
| 6 |
- def parse(data, whois_lookup, url) |
|
| 6 |
+ def parse(data, whois_lookup, url, raw, dev) |
|
| 7 | 7 |
|
| 8 | 8 |
@parsed_data = Hash.new |
| 9 | 9 |
|
| 10 |
- domain_type = url.split(".").last
|
|
| 11 |
- |
|
| 12 | 10 |
# check if the domain is registered |
| 13 |
- if data["registered?"] == nil |
|
| 14 |
- if check_domain_availability(data, whois_lookup) |
|
| 15 |
- data["registered?"] = true |
|
| 16 |
- data["available?"] = false |
|
| 17 |
- else |
|
| 18 |
- data["registered?"] = false |
|
| 19 |
- data["available?"] = true |
|
| 20 |
- end |
|
| 21 |
- end |
|
| 11 |
+ data = check_domain_availability(data, whois_lookup) |
|
| 22 | 12 |
|
| 23 |
- if data["registered?"] |
|
| 13 |
+ if data["registered?"] && !dev |
|
| 14 |
+ domain_type = url.split(".").last
|
|
| 24 | 15 |
case domain_type |
| 25 | 16 |
when "br" |
| 26 | 17 |
parserBr(data, whois_lookup, url) |
@@ -39,10 +30,13 @@ class WhoisParser |
||
| 39 | 30 |
@parsed_data["registered?"] = data["registered?"] |
| 40 | 31 |
# Available? |
| 41 | 32 |
@parsed_data["available?"] = data["available?"] |
| 42 |
- # Parsed whois lookup data |
|
| 43 |
- #@parsed_data["whois_lookup"] = data |
|
| 44 |
- # Raw whois lookup data |
|
| 45 |
- #@parsed_data["raw"] = whois_lookup.to_s |
|
| 33 |
+ |
|
| 34 |
+ if raw |
|
| 35 |
+ # Parsed whois lookup data |
|
| 36 |
+ @parsed_data["whois_lookup"] = data |
|
| 37 |
+ # Raw whois lookup data |
|
| 38 |
+ @parsed_data["raw"] = whois_lookup.to_s |
|
| 39 |
+ end |
|
| 46 | 40 |
|
| 47 | 41 |
return JSON.pretty_generate(@parsed_data) |
| 48 | 42 |
end |
@@ -136,26 +130,40 @@ class WhoisParser |
||
| 136 | 130 |
end |
| 137 | 131 |
|
| 138 | 132 |
def spliter(data, split_char = "\r") |
| 139 |
- if data.class == Array |
|
| 140 |
- if data.first.class == Array |
|
| 141 |
- clean_data = data.first.first.split(split_char).first.strip |
|
| 133 |
+ clean_data = "" |
|
| 134 |
+ if data != nil |
|
| 135 |
+ if data.class == Array |
|
| 136 |
+ if data.first.class == Array |
|
| 137 |
+ if data.first.first != nil |
|
| 138 |
+ clean_data = data.first.first.split(split_char).first.strip |
|
| 139 |
+ end |
|
| 140 |
+ else |
|
| 141 |
+ if data.first != nil |
|
| 142 |
+ clean_data = data.first.split(split_char).first.strip |
|
| 143 |
+ end |
|
| 144 |
+ end |
|
| 142 | 145 |
else |
| 143 |
- clean_data = data.first.split(split_char).first.strip |
|
| 146 |
+ clean_data = data.split(split_char).first.strip |
|
| 144 | 147 |
end |
| 145 |
- else |
|
| 146 |
- clean_data = data.split(split_char).first.strip |
|
| 147 | 148 |
end |
| 148 | 149 |
return clean_data |
| 149 | 150 |
end |
| 150 | 151 |
|
| 151 | 152 |
def check_domain_availability(data, whois_lookup) |
| 152 |
- data1 = whois_lookup.to_s.scan(/No\smatch\sfor/).first |
|
| 153 |
- data2 = whois_lookup.to_s.scan(/domain\snot\sfound/).first |
|
| 154 |
- if data1 == nil || data2 == nil |
|
| 155 |
- return true |
|
| 153 |
+ data1 = whois_lookup.to_s.scan(/(No\smatch\sfor\s)/i).first |
|
| 154 |
+ data2 = whois_lookup.to_s.scan(/(domain\snot\sfound)/i).first |
|
| 155 |
+ data3 = whois_lookup.to_s.scan(/(release\sprocess:\swaiting)/i).first |
|
| 156 |
+ if data3 != nil |
|
| 157 |
+ data["registered?"] = false |
|
| 158 |
+ data["available?"] = false |
|
| 159 |
+ elsif data1 == nil && data2 == nil |
|
| 160 |
+ data["registered?"] = true |
|
| 161 |
+ data["available?"] = false |
|
| 156 | 162 |
else |
| 157 |
- return false |
|
| 163 |
+ data["registered?"] = false |
|
| 164 |
+ data["available?"] = true |
|
| 158 | 165 |
end |
| 166 |
+ return data |
|
| 159 | 167 |
end |
| 160 | 168 |
|
| 161 | 169 |
end |
@@ -87,7 +87,7 @@ get '/lookup.json' do |
||
| 87 | 87 |
#cache_for_day |
| 88 | 88 |
parser = WhoisParser.new |
| 89 | 89 |
data = whois_lookup.to_h |
| 90 |
- parser.parse(data, whois_lookup, params[:url]) |
|
| 90 |
+ parser.parse(data, whois_lookup, params[:url], params[:raw], params[:dev]) |
|
| 91 | 91 |
rescue Exception => e |
| 92 | 92 |
@error = e |
| 93 | 93 |
{ :error => @error }.to_json
|