#[macro_use]
extern crate failure;
extern crate reqwest;
use failure::Error;
use reqwest::{StatusCode, Url};
pub enum Availability {
Available,
Unavailable,
Unknown,
}
pub fn get(name: &str) -> Result<Availability, Error> {
ensure!(!name.is_empty(), "name should be more than 0 characters");
let addr = format!("https://registry.npmjs.org/{}/", name);
let url = Url::parse(&addr)?;
let res = reqwest::get(url)?;
let status = match res.status() {
StatusCode::OK => Availability::Available,
StatusCode::NOT_FOUND => Availability::Unavailable,
_ => Availability::Unknown,
};
Ok(status)
}