Skip to content

Instantly share code, notes, and snippets.

@navio
Created September 5, 2013 19:45
Show Gist options
  • Save navio/6455171 to your computer and use it in GitHub Desktop.
Save navio/6455171 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Domain Searcher</title>
</head>
<body>
<form name="domainsearch">
<input id="domainfield" type="search" placeholder="Find your Domain" name="domainsearch">
<input id="checker" type="button" name="search" value="Go"/>
<div id="flash-message"> </div>
</form>
</body>
</html>
var engine = {
domain : null,
errors : [],
searchfield: '#domainfield',
handlers : {
message : $('#flash-message'),
error : $('#flash-message')
},
messages :{
noStringProvided: 'No Domain was provided.',
invalidDomainFormation: 'Invalid Domain: ',
errorContactingServer: 'Error Contacting Server',
loadingElement: 'Loading..' // Can also be html.
},
handler : function(){
domain = $(engine.searchfield).val(),
engine.domain = domain,
engine.checker(domain);
engine.showErrors();
},
displayResults: function(json){
var message = engine.handlers.message;
var results = json.results;
message.html('<ol><ol>');
$.each(results, function (index,value) {
if( -1 == $.inArray(value.availability, ["tld", "unavailable"]) ){
message.append("<li id="+value.availability+">"+value.subdomain+value.path+" <span>"+value.availability+"</span></li>");
}
});
},
getResults: function(json){
var results = [];
$.each(json.results, function (index,value) {
if( -1 == $.inArray(value.availability, ["tld", "unavailable"]) ){
results.push(value);
}
});
return results;
},
checker: function(domain){
if(domain === ""){
engine.errors.push(engine.messages.noStringProvided);
return false;
}
/* Only Domains
if(!/^[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/.test(domain)){
engine.errors.push(engine.messages.invalidDomainFormation+domain);
return false;
} */
$.ajax({
type: 'GET',
dataType: "jsonp",
jsonpCallback: 'jsonpCallback',
contentType: "application/json",
url: "https://domai.nr/api/json/search?q="+domain,
success: function (json) {
//engine.displayResults(engine.getResults(json));
engine.displayResults(json);
},
error: function (responseData, textStatus, errorThrown) {
engine.handlers.error.html('<span>'+engine.messages.errorContactingServer+'</span>');
}
});
engine.handlers.message.html(engine.messages.loadingElement);
},
showErrors: function(){
if(engine.errors.length){
engine.handlers.error.html('');
$.each(engine.errors, function(){
engine.handlers.error.append('<li>'+this+'</li>');
});
}
engine.errors = [];
}
};
$('#checker').on('click', $.proxy(engine, 'handler'));
//$('#domainfield').on('keypress', handler);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment