@eweser/db
Version:
eweser-db core database
37 lines (31 loc) • 937 B
text/typescript
import type { Database } from '../../index.js';
export const pingServer = (db: Database) => async () => {
const token = db.getToken();
try {
const response = await fetch(
`${db.authServer}/ping`,
token
? {
headers: {
Authorization: `Bearer ${token}`,
},
}
: undefined
);
if (!response.ok) {
throw new Error(`Ping failed with status ${response.status}`);
}
const contentType = response.headers.get('content-type') ?? '';
if (contentType.includes('application/json')) {
const data = (await response.json()) as { reply?: string };
db.debug('Server pinged', data);
return data.reply === 'pong';
}
const reply = (await response.text()).trim();
db.debug('Server pinged', reply);
return reply === 'pong';
} catch (error) {
db.error('Error pinging server', error);
return false;
}
};