102 lines
2.5 KiB
TypeScript
102 lines
2.5 KiB
TypeScript
|
/**
|
||
|
* Namecheap API Client - Main Entry Point
|
||
|
*/
|
||
|
import { NamecheapConfig } from './config.js';
|
||
|
import { HttpClient } from './http-client.js';
|
||
|
import { Domains } from './domains.js';
|
||
|
import { DomainsDns } from './domains-dns.js';
|
||
|
import { DomainsNs } from './domains-ns.js';
|
||
|
import { DomainsTransfer } from './domains-transfer.js';
|
||
|
import type { INamecheapAuth } from './types.js';
|
||
|
|
||
|
// Re-export types for library consumers
|
||
|
export * from './types.js';
|
||
|
export { NamecheapConfig } from './config.js';
|
||
|
export { Domains } from './domains.js';
|
||
|
export { DomainsDns } from './domains-dns.js';
|
||
|
export { DomainsNs } from './domains-ns.js';
|
||
|
export { DomainsTransfer } from './domains-transfer.js';
|
||
|
|
||
|
/**
|
||
|
* Main Namecheap API client class
|
||
|
*/
|
||
|
export class NamecheapClient {
|
||
|
private config: NamecheapConfig;
|
||
|
private httpClient: HttpClient;
|
||
|
|
||
|
/**
|
||
|
* Domains API module
|
||
|
*/
|
||
|
public domains: Domains;
|
||
|
|
||
|
/**
|
||
|
* Domains DNS API module
|
||
|
*/
|
||
|
public dns: DomainsDns;
|
||
|
|
||
|
/**
|
||
|
* Domains Nameservers API module
|
||
|
*/
|
||
|
public ns: DomainsNs;
|
||
|
|
||
|
/**
|
||
|
* Domains Transfer API module
|
||
|
*/
|
||
|
public transfer: DomainsTransfer;
|
||
|
|
||
|
/**
|
||
|
* Create a new Namecheap API client
|
||
|
* @param auth Authentication details
|
||
|
* @param useSandbox Whether to use the sandbox environment (default: false)
|
||
|
*/
|
||
|
constructor(auth: INamecheapAuth, useSandbox: boolean = false) {
|
||
|
// Initialize configuration
|
||
|
this.config = new NamecheapConfig(auth);
|
||
|
|
||
|
// Set sandbox mode if requested
|
||
|
if (useSandbox) {
|
||
|
this.config.enableSandbox();
|
||
|
}
|
||
|
|
||
|
// Create HTTP client
|
||
|
this.httpClient = new HttpClient(this.config);
|
||
|
|
||
|
// Initialize API modules
|
||
|
this.domains = new Domains(this.httpClient);
|
||
|
this.dns = new DomainsDns(this.httpClient);
|
||
|
this.ns = new DomainsNs(this.httpClient);
|
||
|
this.transfer = new DomainsTransfer(this.httpClient);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Enable sandbox mode for testing
|
||
|
*/
|
||
|
enableSandbox(): void {
|
||
|
this.config.enableSandbox();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Disable sandbox mode
|
||
|
*/
|
||
|
disableSandbox(): void {
|
||
|
this.config.disableSandbox();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Set request timeout
|
||
|
* @param ms Timeout in milliseconds
|
||
|
*/
|
||
|
setTimeout(ms: number): void {
|
||
|
this.config.setTimeout(ms);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Create a new Namecheap API client instance
|
||
|
* @param auth Authentication details
|
||
|
* @param useSandbox Whether to use the sandbox environment
|
||
|
* @returns Namecheap API client
|
||
|
*/
|
||
|
export function createClient(auth: INamecheapAuth, useSandbox: boolean = false): NamecheapClient {
|
||
|
return new NamecheapClient(auth, useSandbox);
|
||
|
}
|