In questo articolo vedremo come verificare la disponibilità di un nome a dominio su ResellerClub con Node.js.
Prima di effettuare una richiesta alle HTTP API di ResellerClub dobbiamo compiere tre azioni preliminari:
- Ottenere il nostro ID utente.
- Ottenere la chiave API.
- Abilitare l'indirizzo IP da dove effettuare la richiesta.
Quindi salviamo il nostro ID utente e la chiave API in un file di configurazione .env
.
RESELLER_CLUB_API_KEY=valore
RESELLER_CLUB_ID=valore
Ora possiamo creare una funzione helper per effettuare la richiesta GET.
const https = require('https');
const API_ENDPOINTS = {
domains: {
base: 'domaincheck.httpapi.com',
path: '/api/domains/available.json',
params: 'auth-userid={id}&api-key={key}&domain-name={domain}&tlds={tld}'
}
};
const get = parameters => {
const { id, key, domain, tld } = parameters;
const queryString = API_ENDPOINTS.domains.params.replace('{id}', id).replace('{key}', key)
.replace('{domain}', domain).replace('{tld}', tld);
const options = {
hostname: API_ENDPOINTS.domains.base,
port: 443,
path: API_ENDPOINTS.domains.path + '?' + queryString,
method: 'GET'
};
return new Promise((resolve, reject) => {
const request = https.request(options, response => {
let chunks = [];
response.on('data', chunk => {
chunks.push(chunk);
});
response.on('end', () => {
let body = Buffer.concat(chunks);
resolve(JSON.parse(body.toString()));
});
response.on('error', err => {
reject(err);
});
});
request.on('error', err => {
reject(err);
});
request.end();
});
};
L'endpoint richiede, oltre alla chiave API e all'ID utente, il nome a dominio e la sua estensione. Trattandosi di una query string, occorre prestare attenzione alla codifica dei parametri dell'URL qualora fossero presenti caratteri speciali.
Quindi creiamo una classe specifica.
class ResellerClub {
constructor({ apiKey, id }) {
this.apiKey = apiKey;
this.id = id;
}
checkDomainAvailability({ name, extension}) {
const params = {
id: this.id,
key: this.apiKey,
domain: name,
tld: extension
};
return get(params);
}
}
module.exports = ResellerClub;
Possiamo usare la nostra classe in questo modo:
'use strict';
require('dotenv').config();
const ResellerClub = require('./lib/ResellerClub');
const RC = new ResellerClub({
apiKey: process.env.RESELLER_CLUB_API_KEY,
id: process.env.RESELLER_CLUB_ID
});
const init = async () => {
try {
const response = await RC.checkDomainAvailability({
name: 'gabrieleromanato',
extension: 'net'
});
console.log(response);
} catch(err) {
console.log(err);
}
};
init();
Esempio di risposta:
{ 'gabrieleromanato.net': { classkey: 'dotnet', status: 'available' } }