mirror of
https://github.com/intergalacticalvariable/reader.git
synced 2024-11-16 11:42:32 +08:00
refactor: Remove rate limiting from crawler.ts
This commit is contained in:
parent
aa862d4247
commit
d15b721bfa
|
@ -3,6 +3,7 @@ import {
|
||||||
RPCHost, RPCReflection,
|
RPCHost, RPCReflection,
|
||||||
HashManager,
|
HashManager,
|
||||||
AssertionFailureError, ParamValidationError, Defer,
|
AssertionFailureError, ParamValidationError, Defer,
|
||||||
|
SecurityCompromiseError
|
||||||
} from 'civkit';
|
} from 'civkit';
|
||||||
import { singleton } from 'tsyringe';
|
import { singleton } from 'tsyringe';
|
||||||
import { AsyncContext, CloudHTTPv2, Ctx, FirebaseStorageBucketControl, Logger, OutputServerEventStream, RPCReflect, SecurityCompromiseError } from '../shared';
|
import { AsyncContext, CloudHTTPv2, Ctx, FirebaseStorageBucketControl, Logger, OutputServerEventStream, RPCReflect, SecurityCompromiseError } from '../shared';
|
||||||
|
@ -627,53 +628,7 @@ ${suffixMixins.length ? `\n${suffixMixins.join('\n\n')}\n` : ''}`;
|
||||||
ctx.req.hostname.toLowerCase()
|
ctx.req.hostname.toLowerCase()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (uid) {
|
// Rate limiting code removed
|
||||||
const user = await auth.assertUser();
|
|
||||||
if (!(user.wallet.total_balance > 0)) {
|
|
||||||
throw new InsufficientBalanceError(`Account balance not enough to run this query, please recharge.`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const rateLimitPolicy = auth.getRateLimits(rpcReflect.name.toUpperCase()) || [
|
|
||||||
parseInt(user.metadata?.speed_level) >= 2 ?
|
|
||||||
RateLimitDesc.from({
|
|
||||||
occurrence: 1000,
|
|
||||||
periodSeconds: 60
|
|
||||||
}) :
|
|
||||||
RateLimitDesc.from({
|
|
||||||
occurrence: 200,
|
|
||||||
periodSeconds: 60
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
const apiRoll = await this.rateLimitControl.simpleRPCUidBasedLimit(
|
|
||||||
rpcReflect, uid, [rpcReflect.name.toUpperCase()],
|
|
||||||
...rateLimitPolicy
|
|
||||||
);
|
|
||||||
|
|
||||||
rpcReflect.finally(() => {
|
|
||||||
if (chargeAmount) {
|
|
||||||
auth.reportUsage(chargeAmount, `reader-${rpcReflect.name}`).catch((err) => {
|
|
||||||
this.logger.warn(`Unable to report usage for ${uid}`, { err: marshalErrorLike(err) });
|
|
||||||
});
|
|
||||||
apiRoll.chargeAmount = chargeAmount;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (ctx.req.ip) {
|
|
||||||
const apiRoll = await this.rateLimitControl.simpleRpcIPBasedLimit(rpcReflect, ctx.req.ip, [rpcReflect.name.toUpperCase()],
|
|
||||||
[
|
|
||||||
// 20 requests per minute
|
|
||||||
new Date(Date.now() - 60 * 1000), 20
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
rpcReflect.finally(() => {
|
|
||||||
if (chargeAmount) {
|
|
||||||
apiRoll._ref?.set({
|
|
||||||
chargeAmount,
|
|
||||||
}, { merge: true }).catch((err) => this.logger.warn(`Failed to log charge amount in apiRoll`, { err }));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let urlToCrawl;
|
let urlToCrawl;
|
||||||
const normalizeUrl = (await pNormalizeUrl).default;
|
const normalizeUrl = (await pNormalizeUrl).default;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user