mirror of
https://github.com/FranP-code/Baileys.git
synced 2025-10-13 00:32:22 +00:00
feat: extract code from WS error
This commit is contained in:
@@ -5,7 +5,7 @@ import WebSocket from 'ws'
|
|||||||
import { proto } from '../../WAProto'
|
import { proto } from '../../WAProto'
|
||||||
import { DEF_CALLBACK_PREFIX, DEF_TAG_PREFIX, DEFAULT_ORIGIN, INITIAL_PREKEY_COUNT, MIN_PREKEY_COUNT } from '../Defaults'
|
import { DEF_CALLBACK_PREFIX, DEF_TAG_PREFIX, DEFAULT_ORIGIN, INITIAL_PREKEY_COUNT, MIN_PREKEY_COUNT } from '../Defaults'
|
||||||
import { AuthenticationCreds, BaileysEventEmitter, BaileysEventMap, DisconnectReason, SocketConfig } from '../Types'
|
import { AuthenticationCreds, BaileysEventEmitter, BaileysEventMap, DisconnectReason, SocketConfig } from '../Types'
|
||||||
import { addTransactionCapability, bindWaitForConnectionUpdate, configureSuccessfulPairing, Curve, generateLoginNode, generateMdTagPrefix, generateRegistrationNode, getErrorCodeFromStreamError, getNextPreKeysNode, makeNoiseHandler, printQRIfNecessaryListener, promiseTimeout } from '../Utils'
|
import { addTransactionCapability, bindWaitForConnectionUpdate, configureSuccessfulPairing, Curve, generateLoginNode, generateMdTagPrefix, generateRegistrationNode, getCodeFromWSError, getErrorCodeFromStreamError, getNextPreKeysNode, makeNoiseHandler, printQRIfNecessaryListener, promiseTimeout } from '../Utils'
|
||||||
import { assertNodeErrorFree, BinaryNode, encodeBinaryNode, getBinaryNodeChild, getBinaryNodeChildren, S_WHATSAPP_NET } from '../WABinary'
|
import { assertNodeErrorFree, BinaryNode, encodeBinaryNode, getBinaryNodeChild, getBinaryNodeChildren, S_WHATSAPP_NET } from '../WABinary'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -419,7 +419,12 @@ export const makeSocket = ({
|
|||||||
|
|
||||||
ws.on('message', onMessageRecieved)
|
ws.on('message', onMessageRecieved)
|
||||||
ws.on('open', validateConnection)
|
ws.on('open', validateConnection)
|
||||||
ws.on('error', error => end(new Boom(`WebSocket Error (${error.message})`, { statusCode: 500, data: error })))
|
ws.on('error', error => end(
|
||||||
|
new Boom(
|
||||||
|
`WebSocket Error (${error.message})`,
|
||||||
|
{ statusCode: getCodeFromWSError(error), data: error }
|
||||||
|
)
|
||||||
|
))
|
||||||
ws.on('close', () => end(new Boom('Connection Terminated', { statusCode: DisconnectReason.connectionClosed })))
|
ws.on('close', () => end(new Boom('Connection Terminated', { statusCode: DisconnectReason.connectionClosed })))
|
||||||
// the server terminated the connection
|
// the server terminated the connection
|
||||||
ws.on('CB:xmlstreamend', () => end(new Boom('Connection Terminated by Server', { statusCode: DisconnectReason.connectionClosed })))
|
ws.on('CB:xmlstreamend', () => end(new Boom('Connection Terminated by Server', { statusCode: DisconnectReason.connectionClosed })))
|
||||||
|
|||||||
@@ -328,4 +328,18 @@ export const getCallStatusFromNode = ({ tag, attrs }: BinaryNode) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return status
|
return status
|
||||||
|
}
|
||||||
|
|
||||||
|
const UNEXPECTED_SERVER_CODE_TEXT = 'Unexpected server response: '
|
||||||
|
|
||||||
|
export const getCodeFromWSError = (error: Error) => {
|
||||||
|
let statusCode = 500
|
||||||
|
if(error.message.includes(UNEXPECTED_SERVER_CODE_TEXT)) {
|
||||||
|
const code = +error.message.slice(UNEXPECTED_SERVER_CODE_TEXT.length)
|
||||||
|
if(!Number.isNaN(code) && code >= 400) {
|
||||||
|
statusCode = code
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return statusCode
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user