├── .gitignore ├── isav.gif ├── readme.md ├── package.json └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | 3 | -------------------------------------------------------------------------------- /isav.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rknightuk/is-available/HEAD/isav.gif -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ## is-available 2 | 3 | To use this, you must specify your [Mashape API key](http://docs.mashape.com/api-keys) in `index.js`. Find all instances of `{your-mashape-key}`. 4 | 5 | CLI for checking domain availability through the [Domainr API](https://domainr.com/api). 6 | 7 | ![](isav.gif) 8 | 9 | ### Install 10 | 11 | `npm install --global is-available` 12 | 13 | ### Usage 14 | 15 | **Check availability** 16 | 17 | `isav tearawaytrousers` 18 | 19 | - tearawaytrousers.io ✔︎ 20 | - tearawaytrousers.com ✖ 21 | 22 | **Register a domain (opens in default browser)** 23 | 24 | `isav tearawaytrousers.io -r` 25 | 26 | Opening browser to register tearawaytrousers.io 27 | 28 | ### License 29 | 30 | MIT [http://rmlewisuk.mit-license.org/](http://rmlewisuk.mit-license.org/) 31 | 32 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "is-available", 3 | "version": "1.0.1", 4 | "description": "Check domain availability through the Domainr API", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/rmlewisuk/is-available" 12 | }, 13 | "keywords": [ 14 | "domain", 15 | "check", 16 | "availability", 17 | "domainr" 18 | ], 19 | "author": "Robb Lewis", 20 | "license": "MIT", 21 | "bugs": { 22 | "url": "https://github.com/rmlewisuk/is-available/issues" 23 | }, 24 | "homepage": "https://github.com/rmlewisuk/is-available", 25 | "preferGlobal": "true", 26 | "bin": { 27 | "isav" : "index.js" 28 | }, 29 | "dependencies": { 30 | "request": ">= 2.42.0", 31 | "log-symbols": "^1.0.0", 32 | "open": "0.0.5" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env node 2 | 3 | var symbols = require('log-symbols'), 4 | request = require('request'), 5 | open = require('open'), 6 | pkg = require('./package.json'), 7 | userArgs, input, path; 8 | 9 | userArgs = process.argv.slice(2); 10 | input = userArgs[0]; 11 | 12 | if (!input || userArgs.indexOf('--help') !== -1) { 13 | help(); 14 | return; 15 | } 16 | 17 | if (userArgs.length === 2 && userArgs[1] == '-r') { 18 | if ( ! input.match(/[a-zA-Z](?:\.)[a-zA-Z]/)) { 19 | console.log("Invalid domain name"); 20 | return; 21 | } 22 | else { 23 | console.log("Opening browser to register " + input); 24 | setTimeout(function() { 25 | open('https://domainr.com/api/register?domain='+input+'&client_id={your-mashape-key}'); 26 | }, 1000); 27 | return; 28 | } 29 | } 30 | 31 | path = 'https://domainr.com/api/json/search?q='+input+'&client_id={your-mashape-key}'; 32 | 33 | search(); 34 | 35 | function search() { 36 | request(path, function (error, response, body) { 37 | var results = JSON.parse(body); 38 | results = results.results; 39 | 40 | for (var i = results.length - 1; i >= 0; i--) { 41 | var available, completeDomain, domain = results[i]; 42 | 43 | switch (domain.availability) { 44 | case 'tld': 45 | available = symbols.info; 46 | break; 47 | case 'unavailable': 48 | available = symbols.error; 49 | break; 50 | case 'taken': 51 | available = symbols.error; 52 | break; 53 | case 'available': 54 | available = symbols.success; 55 | break; 56 | } 57 | 58 | completeDomain = domain.domain + domain.path + ' ' + available; 59 | console.log(completeDomain); 60 | }; 61 | }); 62 | } 63 | 64 | function help() { 65 | console.log([ 66 | '', 67 | ' ' + pkg.description, 68 | '', 69 | ' Search', 70 | ' ------ ', 71 | ' isav tearawaytrousers', 72 | '', 73 | ' tearawaytrousers.io ' + symbols.success, 74 | ' tearawaytrousers.com ' + symbols.error, 75 | '', 76 | ' Register a domain', 77 | ' ----------------- ', 78 | ' isav tearawaytrousers.io -r', 79 | '', 80 | ' Opening browser to register tearawaytrousers.io', 81 | '' 82 | ].join('\n')); 83 | } 84 | --------------------------------------------------------------------------------