UNPKG

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
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; } } }