namecomv4
Version:
A Node.js library wrapper for Name.com's V4 API, designed to simplify domain management tasks such as querying domain information, managing DNS records, and handling domain registration and transfer.
66 lines (52 loc) • 2.77 kB
text/typescript
import { CreateTransferRequest, CreateTransferResponse, Transfer } from './types/index.js';
import AxiosClient from './AxiosClient.js';
import NameApiError from './NameApiError.js';
export default class NameComTransfers extends AxiosClient {
async listTransfers(perPage:number = 0, page:number = 0 ) {
try {
const params = `perPage=${perPage}&page=${page}`;
const response = await this.axiosInstance.get(`/transfers?${params}`);
return response.data;
} catch (error:any) {
//console.error('Error listing transfers:', error.response.data);
throw error;
}
}
async getTransfer(domainName:string, id:number ): Promise<Transfer> {
try {
const response = await this.axiosInstance.get(`/transfers/${domainName}`);
return response.data as Transfer ;
} catch (error:any) {
//console.error('Error getting transfer:', error.response.data);
throw error;
}
}
async createTransfer(transfer: CreateTransferRequest): Promise<CreateTransferResponse> {
console.log("curl -u '"+this.username+":"+this.token+"' 'https://api.dev.name.com/v4/transfers' -X POST -H 'Content-Type: application/json' --data '{\"domainName\":"+transfer.domainName+",\"authCode\":\"Authc0de\",\"purchasePrice\":"+transfer.purchasePrice+"'");
try {
// console.log(`curl -X POST -H "Content-Type: application/json" -u "${this.username+':'+this.token}" -d '${JSON.stringify(domainData)}' ${this.baseUrl}/domains`);
const response = await this.axiosInstance.post(`/transfers`, transfer);
if (response.status >= 400 && response.status < 500) {
const responseBody = response.data;
throw new NameApiError("API Error 400", true, response.status, responseBody);
}
return response.data as CreateTransferResponse;
} catch (error: any) {
if (error.response) {
const responseBody = error.response.data;
throw new NameApiError("API Error", true, error.response.status, responseBody);
}
throw new NameApiError("API Error", true, 500, {message: error.message, details: "Generic Error"});
}
}
// CancelTransfer cancels a pending transfer request and refunds the amount to account credit.
async cancelTransfer(transferRequest: Transfer) {
const endpoint = `/transfers/${transferRequest.domainName}:cancel`;
try {
const response = await this.axiosInstance.post(endpoint, transferRequest);
return response.data;
} catch (error:any) {
throw error;
}
}
}