73 lines
2.2 KiB
TypeScript
73 lines
2.2 KiB
TypeScript
const WebSocket = require("ws");
|
|
const { Socket } = require("airdcpp-apisocket");
|
|
|
|
class AirDCPPSocket {
|
|
// Explicitly declare properties
|
|
options; // Holds configuration options
|
|
socketInstance; // Instance of the AirDCPP Socket
|
|
|
|
constructor(configuration: any) {
|
|
let socketProtocol = configuration.protocol === "https" ? "wss" : "ws";
|
|
this.options = {
|
|
url: `${socketProtocol}://${configuration.hostname}/api/v1/`,
|
|
autoReconnect: true,
|
|
reconnectInterval: 5000, // milliseconds
|
|
logLevel: "verbose",
|
|
ignoredListenerEvents: [
|
|
"transfer_statistics",
|
|
"hash_statistics",
|
|
"hub_counts_updated",
|
|
],
|
|
username: configuration.username,
|
|
password: configuration.password,
|
|
};
|
|
// Initialize the socket instance using the configured options and WebSocket
|
|
this.socketInstance = Socket(this.options, WebSocket);
|
|
}
|
|
|
|
// Method to ensure the socket connection is established if required by the library or implementation logic
|
|
async connect() {
|
|
// Here we'll check if a connect method exists and call it
|
|
if (
|
|
this.socketInstance &&
|
|
typeof this.socketInstance.connect === "function"
|
|
) {
|
|
await this.socketInstance.connect();
|
|
}
|
|
}
|
|
|
|
// Method to ensure the socket is disconnected properly if required by the library or implementation logic
|
|
async disconnect() {
|
|
// Similarly, check if a disconnect method exists and call it
|
|
if (
|
|
this.socketInstance &&
|
|
typeof this.socketInstance.disconnect === "function"
|
|
) {
|
|
await this.socketInstance.disconnect();
|
|
}
|
|
}
|
|
|
|
// Method to post data to an endpoint
|
|
async post(endpoint: any, data: any = {}) {
|
|
// Call post on the socket instance, assuming post is a valid method of the socket instance
|
|
return await this.socketInstance.post(endpoint, data);
|
|
}
|
|
async get(endpoint: any, data: any = {}) {
|
|
// Call post on the socket instance, assuming post is a valid method of the socket instance
|
|
return await this.socketInstance.get(endpoint, data);
|
|
}
|
|
|
|
// Method to add listeners to the socket instance for handling real-time updates or events
|
|
async addListener(event: any, handlerName: any, callback: any, id: any) {
|
|
// Attach a listener to the socket instance
|
|
return await this.socketInstance.addListener(
|
|
event,
|
|
handlerName,
|
|
callback,
|
|
id
|
|
);
|
|
}
|
|
}
|
|
|
|
export default AirDCPPSocket;
|