Hmm. Judging from the way the server.js is written, I'd expect he's being rate-limited, and the server returns free whenever the HTTP call doesn't return 200.
Edit: Just to be sure, I threw in a breakpoint on line 18 of generate.js, and set name to my username (cbhl) -- and got a false "free" result for both Twitter and GitHub.
The OP might need to be getting OAuth tokens and using the GitHub/Twitter APIs.
Yep, thats pretty much how it works at the moment (see https://github.com/trevorah/usernique/blob/master/server.js). The issue is that the server is sending out quite a few of these hits to twitter, and twitter is smart enough to start reject requests when things get a bit too much.
I'm not a node guy, but I found this module for Whois checks - https://npmjs.org/package/whois-available
It uses the IANA Whois service, an admittedly cursory look doesn't turn up anything re: rate limits, but you could just do a get request on the root url and only check Whois if it 404s to be safe.
http://www.iana.org/whois
Whois wouldn't help here. The problem is that so many requests are going to twitter.com/[username] that they start sending false 404s (or some other error, not 200) because of rate limiting.
If you can figure out how to do the request on the client side, that would mitigate the issue.
Otherwise, I'd say you're probably out of luck. (You could try doing the query over IPv6, but eventually they'll just block the entire subnet, so I don't know if it's worth the trouble.)
just checking the return code on a GET request. src is on github if you're curious. You're right though, looks like the domain lookups need a bit of work.
You should do a "whois" lookup for the domain. The return code for a 'get' request on the domain has no bearing on its availability -- many parked domains do not even have DNS configured, let alone HTTP.
Idea is awesome. I like how the usernames are generated in the first place. It doesn't work, however. I've been looking for simple things that I can hack up to help me learn ruby, so I made a little Ruby version using this idea. "UNameGen"
I noticed this too. It said "ely.com" is available, which was strange because most (all?) 3-character .com's are registered. And yeah, ely.com is registered.
You should add more services! I wrote http://handlehelp.com which checks for username availability across multiple sites. It's open source[1], so you can use some of my checks if you'd like.
Regarding the reddit check, a username can be unavailable for registration even if there is no profile, after an account is deleted the username is reserved forever. Not sure if there is any way to check if a username is actually available with out trying to register it. For example "citricsquid" is unavailable on reddit but your service reports it is available.
Could you include domain names (.com, maybe .io/.ly) and maybe Facebook url? If you had those this could be great for finding pronounceable names.
It's be great if you could set it so that it would just keep trying until it found one that was available on all services, but I can see that adding a ton of overhead, so I can see why you haven't done that yet.
I've just added the .io and i'll add .com in a bit. Adding in the loop might be a bit much if you're not bothered about certain services - e.g constantly updating the page just because a twitter name cant be found.
Yeah, I agree. You could do a sortable list of services so the user could rank their importance and then pick the best result from the first X(10?) iterations given their preferences.
Obviously, that adds a lot of complexity, you just got me excited.
you should be clearer about what the site does without ruining the simplicity. I was shown the site and didn't notice the title, so it caught me off guard. it appeared to be someone's about page rather than a generator.