fix: harden GoPay and 5sim PR paths
This commit is contained in:
@@ -569,14 +569,22 @@
|
||||
return new Error(`${FIVE_SIM_RATE_LIMIT_ERROR_PREFIX}5sim 购买接口触发限流,请稍后再试${suffix}`);
|
||||
}
|
||||
|
||||
function isTerminalError(payloadOrMessage) {
|
||||
const text = describePayload(payloadOrMessage);
|
||||
return /not\s+enough\s+(?:user\s+)?balance|not\s+enough\s+rating|unauthorized|invalid\s+token|banned|bad\s+(?:country|operator)|no\s+product|server\s+offline/i.test(text);
|
||||
}
|
||||
|
||||
async function buyActivationWithPrice(state = {}, countryConfig, maxPrice, deps = {}) {
|
||||
const config = resolveConfig(state, deps);
|
||||
const operator = normalizeFiveSimOperator(state.fiveSimOperator);
|
||||
function isTerminalError(payloadOrMessage) {
|
||||
const text = describePayload(payloadOrMessage);
|
||||
return /not\s+enough\s+(?:user\s+)?balance|not\s+enough\s+rating|unauthorized|invalid\s+token|banned|bad\s+(?:country|operator)|no\s+product|server\s+offline/i.test(text);
|
||||
}
|
||||
|
||||
function assertMaxPriceCompatibleWithOperator(state = {}) {
|
||||
const maxPrice = normalizeFiveSimMaxPrice(state.fiveSimMaxPrice);
|
||||
const operator = normalizeFiveSimOperator(state.fiveSimOperator);
|
||||
if (maxPrice && operator !== DEFAULT_OPERATOR) {
|
||||
throw new Error('5sim maxPrice only works when operator is "any"; clear the price limit or switch operator to any before buying a number.');
|
||||
}
|
||||
}
|
||||
|
||||
async function buyActivationWithPrice(state = {}, countryConfig, maxPrice, deps = {}) {
|
||||
const config = resolveConfig(state, deps);
|
||||
const operator = normalizeFiveSimOperator(state.fiveSimOperator);
|
||||
const query = {};
|
||||
if (maxPrice !== null && maxPrice !== undefined) {
|
||||
query.maxPrice = maxPrice;
|
||||
@@ -605,9 +613,11 @@
|
||||
return activation;
|
||||
}
|
||||
|
||||
async function requestActivation(state = {}, options = {}, deps = {}) {
|
||||
const allCountryCandidates = resolveCountryCandidates(state);
|
||||
const blockedCountryIds = new Set(
|
||||
async function requestActivation(state = {}, options = {}, deps = {}) {
|
||||
assertMaxPriceCompatibleWithOperator(state);
|
||||
|
||||
const allCountryCandidates = resolveCountryCandidates(state);
|
||||
const blockedCountryIds = new Set(
|
||||
(Array.isArray(options?.blockedCountryIds) ? options.blockedCountryIds : [])
|
||||
.map((value) => normalizeFiveSimCountryId(value, ''))
|
||||
.filter(Boolean)
|
||||
|
||||
Reference in New Issue
Block a user