|
|
@@ -15,31 +15,84 @@ export class hwyzm extends GetNumberService {
|
|
|
source: RcsNumberSource = RcsNumberSource.hwyzm
|
|
|
|
|
|
async getNumber(country: string, num?: number): Promise<GetNumberResponse> {
|
|
|
- const res = await axiosInstance.post('phoneInfo', {
|
|
|
- merNo,
|
|
|
- app,
|
|
|
- country: country.toUpperCase(),
|
|
|
- sign
|
|
|
- })
|
|
|
- const result = res.data
|
|
|
- if (result.code !== 1 || !(result.data)) {
|
|
|
- throw new Error(result.msg)
|
|
|
+
|
|
|
+ const numberList = []
|
|
|
+
|
|
|
+ const requestPhoneInfo = async () => {
|
|
|
+ const res = await axiosInstance.post('phoneInfo', {
|
|
|
+ merNo,
|
|
|
+ app,
|
|
|
+ country: country.toUpperCase(),
|
|
|
+ sign
|
|
|
+ })
|
|
|
+ return res.data
|
|
|
}
|
|
|
- const data = result.data
|
|
|
|
|
|
- const orderId = data.orderId
|
|
|
- const number = data.number
|
|
|
+ const requests = Array(20)
|
|
|
+ .fill(null)
|
|
|
+ .map(() => requestPhoneInfo())
|
|
|
+
|
|
|
+ try {
|
|
|
+ const firstValidResult = await Promise.any(
|
|
|
+ requests.map(async (request, index) => {
|
|
|
+ const res = await request
|
|
|
+ if (res.code === 1 || res.data) {
|
|
|
+ return res
|
|
|
+ }
|
|
|
+ throw new Error(`Request ${index + 1} failed with message: ${res.message}`)
|
|
|
+ })
|
|
|
+ )
|
|
|
+
|
|
|
+ Promise.allSettled(requests).then(results => {
|
|
|
+ results.forEach((result, index) => {
|
|
|
+ try {
|
|
|
+ if (result.status === 'fulfilled' && result.value.code === 1) {
|
|
|
+ if (!numberList.includes(result.value.data)) {
|
|
|
+ numberList.push(JSON.stringify(result.value.data))
|
|
|
+ }
|
|
|
+ } else if (result.status === 'rejected') {
|
|
|
+ console.error(`Request ${index + 1} failed:`, result.reason)
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error(`Platform:hwyzm Error processing result ${index + 1}:`, error)
|
|
|
+ }
|
|
|
|
|
|
- return {
|
|
|
- orderId,
|
|
|
- number,
|
|
|
- operatorCode: '',
|
|
|
- operatorName: '',
|
|
|
- rawResponse: result
|
|
|
+ })
|
|
|
+
|
|
|
+ numberList.shift()
|
|
|
+ numberList.forEach(number => {
|
|
|
+ this.releaseNumber(number.toString())
|
|
|
+ })
|
|
|
+ }).catch(error => {
|
|
|
+ console.error('Platform:hwyzm Error in Promise.allSettled:', error)
|
|
|
+ })
|
|
|
+
|
|
|
+ const { orderId, number } = firstValidResult.data
|
|
|
+
|
|
|
+ return {
|
|
|
+ orderId,
|
|
|
+ number,
|
|
|
+ operatorCode: '',
|
|
|
+ operatorName: '',
|
|
|
+ rawResponse: firstValidResult
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ throw new Error(`Platform:hwyzm Failed to get a valid number: ${e.message}`)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
async releaseNumber(number: string) {
|
|
|
+ const obj = JSON.parse(number)
|
|
|
+
|
|
|
+ if (obj.number != null && obj.orderId != null) {
|
|
|
+ const res = await axiosInstance.post('releaseInfo', {
|
|
|
+ cid: obj.orderId,
|
|
|
+ app,
|
|
|
+ number: obj.number,
|
|
|
+ sign
|
|
|
+ })
|
|
|
+ console.log(`Platform:hwyzm Release Number(${obj.number}):`, res.data)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
async retriveMessage(orderId: string, num?: number): Promise<string> {
|
|
|
@@ -54,5 +107,6 @@ export class hwyzm extends GetNumberService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- async blockNumber(number: string) {}
|
|
|
+ async blockNumber(number: string) {
|
|
|
+ }
|
|
|
}
|