Skip to content

Commit 0874e69

Browse files
committed
[REMOVE] axios
1 parent 1eb7fd9 commit 0874e69

File tree

6 files changed

+126
-77
lines changed

6 files changed

+126
-77
lines changed

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
"@nestjs/core": "^10.3.7",
2828
"@nestjs/platform-express": "^10.3.7",
2929
"@nestjs/swagger": "^7.3.1",
30-
"axios": "^1.2.3",
3130
"cache-manager": "^5.5.1",
3231
"class-transformer": "^0.5.1",
3332
"class-validator": "^0.14.0",

src/fivem/fivem.controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Controller } from '@nestjs/common';
22
import { FivemService } from './fivem.service';
33
import { Get, Inject, Param } from '@nestjs/common/decorators';
4-
import { ApiOkResponse, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
4+
import { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger';
55
import { Cache } from 'cache-manager';
66
import ServerTrackedDto from 'src/dto/serverTrackedDto';
77
import ServerCfxDto from 'src/dto/serverCfxDto';

src/fivem/fivem.service.ts

Lines changed: 91 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,105 @@
11
import { Injectable, Logger } from '@nestjs/common';
2-
import axios, { AxiosResponse } from 'axios';
32
import ServerCfxDto from 'src/dto/serverCfxDto';
43
import ServerTrackedDto from 'src/dto/serverTrackedDto';
54

65
@Injectable()
76
export class FivemService {
8-
async trackServer(serverTracked: ServerTrackedDto): Promise<any> {
9-
try {
10-
const response: AxiosResponse = await axios.get(`http://${serverTracked.address}/dynamic.json`, { timeout: 2000 });
11-
return {
12-
address: serverTracked.address,
13-
online: true,
14-
...response.data
15-
};
16-
} catch (err: any) {
17-
Logger.warn(`[FiveM server | ${serverTracked.address}] ${err.name}: ${err.message}`);
18-
return {
19-
address: serverTracked.address,
20-
online: false
21-
};
7+
8+
private readonly fivemApiUrl: string = 'https://servers-frontend.fivem.net/api/servers/single/';
9+
10+
async trackServer(serverTracked: ServerTrackedDto): Promise<any> {
11+
try {
12+
const response: Response = await fetch(
13+
`http://${serverTracked.address}/dynamic.json`,
14+
{
15+
method: 'GET',
16+
signal: AbortSignal.timeout(2000),
2217
}
18+
)
19+
const data = await response.json();
20+
return {
21+
address: serverTracked.address,
22+
online: true,
23+
...data,
24+
};
25+
} catch (err: any) {
26+
Logger.warn(
27+
`[FiveM server | ${serverTracked.address}] ${err.name}: ${err.message}`,
28+
);
29+
return {
30+
address: serverTracked.address,
31+
online: false,
32+
};
2333
}
34+
}
2435

25-
async trackServerByCfx(cfx: ServerCfxDto): Promise<any> {
26-
try {
27-
const response: AxiosResponse = await axios.get(`https://servers-frontend.fivem.net/api/servers/single/${cfx.code}`, { timeout: 2000, headers: { 'User-Agent': 'GST API' } });
28-
return {
29-
cfx: cfx.code,
30-
online: true,
31-
...response.data
32-
};
33-
} catch (err: any) {
34-
Logger.warn(`[FiveM server | CFX ${cfx.code}] ${err.name}: ${err.message}`);
35-
console.log(err);
36-
return {
37-
cfx: cfx.code,
38-
online: false
39-
};
40-
}
36+
async trackServerByCfx(cfx: ServerCfxDto): Promise<any> {
37+
try {
38+
let response: Response = await fetch(
39+
`${this.fivemApiUrl}${cfx.code}`,
40+
{
41+
method: 'GET',
42+
headers: {
43+
accept:
44+
'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8',
45+
'accept-language': 'en-US,en;q=0.7',
46+
priority: 'u=0, i',
47+
'sec-ch-ua':
48+
'"Not)A;Brand";v="8", "Chromium";v="138", "Brave";v="138"',
49+
'sec-ch-ua-mobile': '?0',
50+
'sec-ch-ua-platform': '"macOS"',
51+
'sec-fetch-dest': 'document',
52+
'sec-fetch-mode': 'navigate',
53+
'sec-fetch-site': 'none',
54+
'sec-fetch-user': '?1',
55+
'sec-gpc': '1',
56+
'upgrade-insecure-requests': '1',
57+
'user-agent':
58+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36',
59+
},
60+
},
61+
);
62+
const data = await response.json();
63+
return {
64+
cfx: cfx.code,
65+
online: true,
66+
...data,
67+
};
68+
} catch (err: any) {
69+
Logger.warn(
70+
`[FiveM CFX][${cfx.code}] ${err.name}: ${err.message}`,
71+
);
72+
return {
73+
cfx: cfx.code,
74+
online: false,
75+
};
4176
}
77+
}
4278

43-
async trackPlayers(serverTracked: ServerTrackedDto): Promise<any> {
44-
try {
45-
const { data }: any = await axios.get(`http://${serverTracked.address}/players.json`, { timeout: 2000 });
46-
return {
47-
address: serverTracked.address,
48-
online: true,
49-
playersOnline: data.length,
50-
players: data
51-
};
52-
} catch (err: any) {
53-
Logger.warn(`[FiveM server | ${serverTracked.address}] ${err.name}: ${err.message}`);
54-
return {
55-
address: serverTracked.address,
56-
online: false
57-
};
79+
async trackPlayers(serverTracked: ServerTrackedDto): Promise<any> {
80+
try {
81+
const response: Response = await fetch(
82+
`http://${serverTracked.address}/players.json`,
83+
{
84+
method: 'GET',
85+
signal: AbortSignal.timeout(2000),
5886
}
87+
)
88+
const data = await response.json();
89+
return {
90+
address: serverTracked.address,
91+
online: true,
92+
playersOnline: data.length,
93+
players: data,
94+
};
95+
} catch (err: any) {
96+
Logger.warn(
97+
`[FiveM][${serverTracked.address}] ${err.name}: ${err.message}`,
98+
);
99+
return {
100+
address: serverTracked.address,
101+
online: false,
102+
};
59103
}
104+
}
60105
}

src/main.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NestFactory } from '@nestjs/core';
22
import { AppModule } from './app.module';
3-
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
3+
import { DocumentBuilder, OpenAPIObject, SwaggerModule } from '@nestjs/swagger';
44
import { Logger, ValidationPipe } from '@nestjs/common';
55

66
async function bootstrap() {
@@ -12,12 +12,12 @@ async function bootstrap() {
1212
.setVersion("1.0")
1313
.setContact("BliTz_37", "https://github.com/BliTz037", "[email protected]")
1414
.build();
15-
const swaggerDocument = SwaggerModule.createDocument(app, swaggerConfig);
15+
const swaggerDocument: OpenAPIObject = SwaggerModule.createDocument(app, swaggerConfig);
1616

1717
SwaggerModule.setup('api-docs', app, swaggerDocument);
1818
app.useGlobalPipes(new ValidationPipe({ disableErrorMessages: false, whitelist: true }))
1919
app.enableCors();
2020
await app.listen(port);
21-
Logger.log(`GST Lametric API is running. Listening on port ${port}`, "Bootstrap");
21+
Logger.log(`GST API is running. Listening on port ${port}`, "Bootstrap");
2222
}
2323
bootstrap();

src/middleware/logger.middleware.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ export class LoggerMiddleware implements NestMiddleware {
77
use(req: Request, res: Response, next: NextFunction) {
88
res.on("finish", () => {
99
if (res.statusCode >= 500)
10-
this.logger.error(`HTTP request ${req.method} ${req.url} ${res.statusCode} ${res.statusMessage}`);
10+
this.logger.error(`[${req.method}][${req.url}][${res.statusCode}] ${res.statusMessage}`);
1111
else if (res.statusCode >= 400)
12-
this.logger.warn(`HTTP request ${req.method} ${req.url} ${res.statusCode} ${res.statusMessage}`);
12+
this.logger.warn(`[${req.method}][${req.url}][${res.statusCode}] ${res.statusMessage}`);
1313
else
14-
this.logger.log(`HTTP request ${req.method} ${req.url} ${res.statusCode}`);
14+
this.logger.log(`[${req.method}][${req.url}][${res.statusCode}]`);
1515
});
1616
next();
1717
}

yarn.lock

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1474,15 +1474,6 @@ asynckit@^0.4.0:
14741474
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
14751475
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
14761476

1477-
axios@^1.2.3:
1478-
version "1.6.8"
1479-
resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66"
1480-
integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==
1481-
dependencies:
1482-
follow-redirects "^1.15.6"
1483-
form-data "^4.0.0"
1484-
proxy-from-env "^1.1.0"
1485-
14861477
babel-jest@^29.7.0:
14871478
version "29.7.0"
14881479
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5"
@@ -2499,11 +2490,6 @@ flatted@^3.2.9:
24992490
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
25002491
integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
25012492

2502-
follow-redirects@^1.15.6:
2503-
version "1.15.6"
2504-
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
2505-
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
2506-
25072493
foreground-child@^3.1.0:
25082494
version "3.1.1"
25092495
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d"
@@ -4066,11 +4052,6 @@ proxy-addr@~2.0.7:
40664052
forwarded "0.2.0"
40674053
ipaddr.js "1.9.1"
40684054

4069-
proxy-from-env@^1.1.0:
4070-
version "1.1.0"
4071-
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
4072-
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
4073-
40744055
punycode@^2.1.0:
40754056
version "2.3.1"
40764057
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
@@ -4461,7 +4442,16 @@ string-length@^4.0.1:
44614442
char-regex "^1.0.2"
44624443
strip-ansi "^6.0.0"
44634444

4464-
"string-width-cjs@npm:string-width@^4.2.0", [email protected], string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3, string-width@^5.0.1, string-width@^5.1.2:
4445+
"string-width-cjs@npm:string-width@^4.2.0":
4446+
version "4.2.3"
4447+
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
4448+
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
4449+
dependencies:
4450+
emoji-regex "^8.0.0"
4451+
is-fullwidth-code-point "^3.0.0"
4452+
strip-ansi "^6.0.1"
4453+
4454+
[email protected], string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3, string-width@^5.0.1, string-width@^5.1.2:
44654455
version "4.2.3"
44664456
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
44674457
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -4484,7 +4474,14 @@ string_decoder@~1.1.1:
44844474
dependencies:
44854475
safe-buffer "~5.1.0"
44864476

4487-
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
4477+
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
4478+
version "6.0.1"
4479+
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
4480+
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
4481+
dependencies:
4482+
ansi-regex "^5.0.1"
4483+
4484+
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
44884485
version "6.0.1"
44894486
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
44904487
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -4935,8 +4932,7 @@ which@^2.0.1:
49354932
dependencies:
49364933
isexe "^2.0.0"
49374934

4938-
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
4939-
name wrap-ansi-cjs
4935+
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
49404936
version "7.0.0"
49414937
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
49424938
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -4954,6 +4950,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0:
49544950
string-width "^4.1.0"
49554951
strip-ansi "^6.0.0"
49564952

4953+
wrap-ansi@^7.0.0:
4954+
version "7.0.0"
4955+
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
4956+
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
4957+
dependencies:
4958+
ansi-styles "^4.0.0"
4959+
string-width "^4.1.0"
4960+
strip-ansi "^6.0.0"
4961+
49574962
wrap-ansi@^8.1.0:
49584963
version "8.1.0"
49594964
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"

0 commit comments

Comments
 (0)