Skip to content

Commit 89ace82

Browse files
committed
feat: Try and fix proxies
1 parent 1312d76 commit 89ace82

File tree

4 files changed

+199
-80
lines changed

4 files changed

+199
-80
lines changed

anify-backend/src/proxies/impl/manager/impl/file/preloadProxies.ts

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,33 @@ import colors from "colors";
88

99
// Helper function to convert date strings to Date objects in proxy metrics
1010
const convertDates = (proxy: IProxy): IProxy => {
11-
Object.values(proxy.providerMetrics).forEach((providerMetrics) => {
12-
Object.values(providerMetrics).forEach((metrics) => {
13-
if (metrics.lastSuccessTime) {
14-
metrics.lastSuccessTime = new Date(metrics.lastSuccessTime);
15-
}
16-
if (metrics.lastFailureTime) {
17-
metrics.lastFailureTime = new Date(metrics.lastFailureTime);
18-
}
19-
});
11+
if (!proxy.providerMetrics) {
12+
proxy.providerMetrics = {};
13+
return proxy;
14+
}
15+
16+
Object.entries(proxy.providerMetrics).forEach(([providerId, providerMetrics]) => {
17+
if (!providerMetrics) {
18+
proxy.providerMetrics[providerId] = {
19+
healthScore: 50,
20+
consecutiveFailures: 0,
21+
successRate: 0,
22+
averageResponseTime: 0,
23+
successfulRequests: 0,
24+
totalRequests: 0,
25+
successStreak: 0,
26+
latencyScore: 50,
27+
};
28+
return;
29+
}
30+
31+
// Convert timestamps to numbers if they're strings
32+
if (providerMetrics.lastSuccessTime) {
33+
providerMetrics.lastSuccessTime = typeof providerMetrics.lastSuccessTime === "string" ? new Date(providerMetrics.lastSuccessTime).getTime() : providerMetrics.lastSuccessTime;
34+
}
35+
if (providerMetrics.lastFailureTime) {
36+
providerMetrics.lastFailureTime = typeof providerMetrics.lastFailureTime === "string" ? new Date(providerMetrics.lastFailureTime).getTime() : providerMetrics.lastFailureTime;
37+
}
2038
});
2139
return proxy;
2240
};
@@ -53,31 +71,27 @@ export async function preloadProxies(): Promise<void> {
5371
}
5472

5573
// Only include proxies that have metrics for this specific provider
56-
const convertedProxies = typeProxies
57-
.map(convertDates)
58-
.filter(proxy => proxy.providerMetrics && proxy.providerMetrics[provider.id]);
59-
74+
const convertedProxies = typeProxies.map(convertDates).filter((proxy) => proxy.providerMetrics && proxy.providerMetrics[provider.id]);
75+
6076
// Update the provider's proxy list
6177
proxyCache.validProxies[provider.providerType][provider.id] = convertedProxies;
6278

6379
// Update the main proxy list with any new proxies that have metrics for this provider
6480
convertedProxies.forEach((typeProxy) => {
65-
const existingProxy = proxyCache.proxies.find(
66-
(p) => p.ip === typeProxy.ip && p.port === typeProxy.port
67-
);
81+
const existingProxy = proxyCache.proxies.find((p) => p.ip === typeProxy.ip && p.port === typeProxy.port);
6882
if (existingProxy) {
6983
// Merge provider metrics, but only for this specific provider
7084
existingProxy.providerMetrics = {
7185
...existingProxy.providerMetrics,
72-
[provider.id]: typeProxy.providerMetrics[provider.id]
86+
[provider.id]: typeProxy.providerMetrics[provider.id],
7387
};
7488
} else {
7589
// Only include the metrics for this specific provider
7690
const newProxy = {
7791
...typeProxy,
7892
providerMetrics: {
79-
[provider.id]: typeProxy.providerMetrics[provider.id]
80-
}
93+
[provider.id]: typeProxy.providerMetrics[provider.id],
94+
},
8195
};
8296
proxyCache.proxies.push(newProxy);
8397
}

0 commit comments

Comments
 (0)