wuyi hace 1 año
padre
commit
13f6099e4c

+ 2 - 1
src/rcs-number/entities/rcs-number.entity.ts

@@ -22,7 +22,8 @@ export enum RcsNumberSource {
     cloud034 = 'cloud034',
     cloud034 = 'cloud034',
     cloud037 = 'cloud037',
     cloud037 = 'cloud037',
     xyz = 'xyz',
     xyz = 'xyz',
-    hwyzm = 'hwyzm'
+    hwyzm = 'hwyzm',
+    cowboy = 'cowboy'
 }
 }
 
 
 @Entity()
 @Entity()

+ 92 - 0
src/rcs-number/impl/cowboy.service.ts

@@ -0,0 +1,92 @@
+import axios from 'axios'
+import { GetNumberService, GetNumberResponse } from './get-number-service'
+import { RcsNumber, RcsNumberSource, RcsNumberStatus } from '../entities/rcs-number.entity'
+import { InternalServerErrorException, Logger } from '@nestjs/common'
+
+const pid = '2198'
+
+const name1 = 'launch'
+const ApiKey1 = 'NUdVcVMxelBQTXlpcTBwbk1XQUhzQT09'
+
+const cowboyInstance = axios.create({
+    baseURL: 'http://8.218.211.187/',
+    headers: {
+        uhost: 'api.cowboymsg.com',
+        uprotocol: 'http'
+    }
+})
+
+export class cowboy extends GetNumberService {
+    source: RcsNumberSource = RcsNumberSource.cowboy
+
+    async getNumber(country: string, num?: number): Promise<GetNumberResponse> {
+        const res = await cowboyInstance.get('getMobile', {
+            params: {
+                name: name1,
+                ApiKey: ApiKey1,
+                cuy: country.toUpperCase(),
+                pid,
+                num: 1,
+                noblack: 1,
+                serial: 2
+            }
+        })
+        if (res.data.code !== 200) {
+            throw new InternalServerErrorException(res.data.msg)
+        }
+        const number = res.data.data
+        return {
+            number: number.replace(/^\+/, ''),
+            orderId: number,
+            operatorCode: '',
+            rawResponse: [res.data]
+        }
+    }
+
+    async releaseNumber(number: string) {
+        const { data } = await cowboyInstance.get('passMobile', {
+            params: {
+                name: name1,
+                ApiKey: ApiKey1,
+                pn: number,
+                pid
+            }
+        })
+        if (data.code === 200) {
+            Logger.log(`release number ${number} success`)
+        } else {
+            throw new Error(data.msg)
+        }
+    }
+
+    async retriveMessage(orderId: string, num?: number): Promise<string> {
+        const { data } = await cowboyInstance.get('getMsg', {
+            params: {
+                name: name1,
+                ApiKey: ApiKey1,
+                pn: orderId,
+                pid: pid,
+                serial: 2
+            }
+        })
+        if (data.code === 200) {
+            return `Your Messenger verification code is G-${data.data}`
+        }
+    }
+
+    async blockNumber(number: string) {
+        const { data } = await cowboyInstance.get('addBlack', {
+            params: {
+                name: name1,
+                ApiKey: ApiKey1,
+                pn: number,
+                pid: pid
+            }
+        })
+        if (data.code === 200) {
+            Logger.log(`add black ${number} success`)
+        } else {
+            throw new Error(data.msg)
+        }
+    }
+}

+ 2 - 1
src/rcs-number/rcs-number.module.ts

@@ -17,6 +17,7 @@ import { cloud214 } from './impl/cloud214.service'
 import { CarrierIdModule } from 'src/carrier-id/carrier-id.module'
 import { CarrierIdModule } from 'src/carrier-id/carrier-id.module'
 import { BlackList } from './entities/black-list.entity'
 import { BlackList } from './entities/black-list.entity'
 import { hwyzm } from './impl/hwyzm.service'
 import { hwyzm } from './impl/hwyzm.service'
+import { cowboy } from './impl/cowboy.service'
 
 
 @Module({
 @Module({
     imports: [
     imports: [
@@ -27,7 +28,7 @@ import { hwyzm } from './impl/hwyzm.service'
         ChannelModule,
         ChannelModule,
         CarrierIdModule
         CarrierIdModule
     ],
     ],
-    providers: [RcsNumberService, mwze167, durian, i18nvc, firefox, d38, cloud214, xyz, hwyzm],
+    providers: [RcsNumberService, mwze167, durian, i18nvc, firefox, d38, cloud214, xyz, hwyzm, cowboy],
     controllers: [RcsNumberController],
     controllers: [RcsNumberController],
     exports: [RcsNumberService]
     exports: [RcsNumberService]
 })
 })

+ 8 - 1
src/rcs-number/rcs-number.service.ts

@@ -24,6 +24,7 @@ import { xyz } from './impl/xyz.service'
 import { CarrierIdService } from 'src/carrier-id/carrier-id.service'
 import { CarrierIdService } from 'src/carrier-id/carrier-id.service'
 import { BlackList } from './entities/black-list.entity'
 import { BlackList } from './entities/black-list.entity'
 import { hwyzm } from './impl/hwyzm.service'
 import { hwyzm } from './impl/hwyzm.service'
+import { cowboy } from './impl/cowboy.service'
 
 
 @Injectable()
 @Injectable()
 export class RcsNumberService {
 export class RcsNumberService {
@@ -50,7 +51,8 @@ export class RcsNumberService {
         private firefox: firefox,
         private firefox: firefox,
         private d38: d38,
         private d38: d38,
         private xyz: xyz,
         private xyz: xyz,
-        private hwyzm: hwyzm
+        private hwyzm: hwyzm,
+        private cowboy: cowboy
     ) {
     ) {
         this.cloud033 = new cloud214('100033', '1e40ca9795b1fc038db76512175d59b5', RcsNumberSource.cloud033)
         this.cloud033 = new cloud214('100033', '1e40ca9795b1fc038db76512175d59b5', RcsNumberSource.cloud033)
         this.cloud034 = new cloud214('100034', 'ed7b3de69df3d6d9ddfaa7eb862272f5', RcsNumberSource.cloud034)
         this.cloud034 = new cloud214('100034', 'ed7b3de69df3d6d9ddfaa7eb862272f5', RcsNumberSource.cloud034)
@@ -155,6 +157,9 @@ export class RcsNumberService {
             case RcsNumberSource.hwyzm:
             case RcsNumberSource.hwyzm:
                 numberService = this.hwyzm
                 numberService = this.hwyzm
                 break
                 break
+            case RcsNumberSource.cowboy:
+                numberService = this.cowboy
+                break
             default:
             default:
                 throw new ServiceUnavailableException('不支持的短信通道')
                 throw new ServiceUnavailableException('不支持的短信通道')
         }
         }
@@ -255,6 +260,8 @@ export class RcsNumberService {
                 return this.xyz
                 return this.xyz
             case RcsNumberSource.hwyzm:
             case RcsNumberSource.hwyzm:
                 return this.hwyzm
                 return this.hwyzm
+            case RcsNumberSource.cowboy:
+                return this.cowboy
             default:
             default:
                 throw new Error('不支持的短信通道')
                 throw new Error('不支持的短信通道')
         }
         }