Skip to content

Commit 09fedb1

Browse files
authored
uos make puppet-wechat great again (#206)
* make puppet-wechat great again * fix * fix smoke test * 1.18.4
1 parent 78f2d4a commit 09fedb1

File tree

5 files changed

+17
-24
lines changed

5 files changed

+17
-24
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Logs
2+
.idea
23
logs
34
*.log
45
npm-debug.log*

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "wechaty-puppet-wechat",
3-
"version": "1.18.2",
3+
"version": "1.18.4",
44
"description": "Puppet WeChat for Wechaty",
55
"type": "module",
66
"exports": {

src/bridge.ts

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -237,17 +237,20 @@ export class Bridge extends EventEmitter {
237237
if (this.options.uos) {
238238
await this.uosPatch(page)
239239
}
240-
241240
page.on('error', e => this.emit('error', e))
242241
page.on('dialog', this.wrapAsync(this.onDialog.bind(this)))
243242

244243
const cookieList = (
245244
await this.options.memory.get(MEMORY_SLOT)
246245
) || [] as puppeteer.Protocol.Network.Cookie[]
247246

248-
const url = this.entryUrl(cookieList)
247+
let url = this.entryUrl(cookieList)
248+
if (this.options.uos) {
249+
url = url + '?lang=zh_CN&target=t'
250+
}
249251
log.verbose('PuppetWeChatBridge', 'initPage() before page.goto(url)')
250-
252+
// set timeout 60000 ms,30000ms always timeout
253+
page.setDefaultTimeout(60000)
251254
// Does this related to(?) the CI Error: exception: Navigation Timeout Exceeded: 30000ms exceeded
252255
await page.goto(url)
253256
log.verbose('PuppetWeChatBridge', 'initPage() after page.goto(url)')
@@ -274,34 +277,24 @@ export class Bridge extends EventEmitter {
274277
* Credit: @luvletter2333 https://github.com/luvletter2333
275278
*/
276279
const UOS_PATCH_CLIENT_VERSION = '2.0.0'
277-
const UOS_PATCH_EXTSPAM = this.options.uosExtSpam ?? 'Gp8ICJkIEpkICggwMDAwMDAwMRAGGoAI1GiJSIpeO1RZTq9QBKsRbPJdi84ropi16EYI10WB6g74sGmRwSNXjPQnYUKYotKkvLGpshucCaeWZMOylnc6o2AgDX9grhQQx7fm2DJRTyuNhUlwmEoWhjoG3F0ySAWUsEbH3bJMsEBwoB//0qmFJob74ffdaslqL+IrSy7LJ76/G5TkvNC+J0VQkpH1u3iJJs0uUYyLDzdBIQ6Ogd8LDQ3VKnJLm4g/uDLe+G7zzzkOPzCjXL+70naaQ9medzqmh+/SmaQ6uFWLDQLcRln++wBwoEibNpG4uOJvqXy+ql50DjlNchSuqLmeadFoo9/mDT0q3G7o/80P15ostktjb7h9bfNc+nZVSnUEJXbCjTeqS5UYuxn+HTS5nZsPVxJA2O5GdKCYK4x8lTTKShRstqPfbQpplfllx2fwXcSljuYi3YipPyS3GCAqf5A7aYYwJ7AvGqUiR2SsVQ9Nbp8MGHET1GxhifC692APj6SJxZD3i1drSYZPMMsS9rKAJTGz2FEupohtpf2tgXm6c16nDk/cw+C7K7me5j5PLHv55DFCS84b06AytZPdkFZLj7FHOkcFGJXitHkX5cgww7vuf6F3p0yM/W73SoXTx6GX4G6Hg2rYx3O/9VU2Uq8lvURB4qIbD9XQpzmyiFMaytMnqxcZJcoXCtfkTJ6pI7a92JpRUvdSitg967VUDUAQnCXCM/m0snRkR9LtoXAO1FUGpwlp1EfIdCZFPKNnXMeqev0j9W9ZrkEs9ZWcUEexSj5z+dKYQBhIICviYUQHVqBTZSNy22PlUIeDeIs11j7q4t8rD8LPvzAKWVqXE+5lS1JPZkjg4y5hfX1Dod3t96clFfwsvDP6xBSe1NBcoKbkyGxYK0UvPGtKQEE0Se2zAymYDv41klYE9s+rxp8e94/H8XhrL9oGm8KWb2RmYnAE7ry9gd6e8ZuBRIsISlJAE/e8y8xFmP031S6Lnaet6YXPsFpuFsdQs535IjcFd75hh6DNMBYhSfjv456cvhsb99+fRw/KVZLC3yzNSCbLSyo9d9BI45Plma6V8akURQA/qsaAzU0VyTIqZJkPDTzhuCl92vD2AD/QOhx6iwRSVPAxcRFZcWjgc2wCKh+uCYkTVbNQpB9B90YlNmI3fWTuUOUjwOzQRxJZj11NsimjOJ50qQwTTFj6qQvQ1a/I+MkTx5UO+yNHl718JWcR3AXGmv/aa9rD1eNP8ioTGlOZwPgmr2sor2iBpKTOrB83QgZXP+xRYkb4zVC+LoAXEoIa1+zArywlgREer7DLePukkU6wHTkuSaF+ge5Of1bXuU4i938WJHj0t3D8uQxkJvoFi/EYN/7u2P1zGRLV4dHVUsZMGCCtnO6BBigFMAA='
280+
const UOS_PATCH_EXTSPAM = this.options.uosExtSpam ?? 'Go8FCIkFEokFCggwMDAwMDAwMRAGGvAESySibk50w5Wb3uTl2c2h64jVVrV7gNs06GFlWplHQbY/5FfiO++1yH4ykCyNPWKXmco+wfQzK5R98D3so7rJ5LmGFvBLjGceleySrc3SOf2Pc1gVehzJgODeS0lDL3/I/0S2SSE98YgKleq6Uqx6ndTy9yaL9qFxJL7eiA/R3SEfTaW1SBoSITIu+EEkXff+Pv8NHOk7N57rcGk1w0ZzRrQDkXTOXFN2iHYIzAAZPIOY45Lsh+A4slpgnDiaOvRtlQYCt97nmPLuTipOJ8Qc5pM7ZsOsAPPrCQL7nK0I7aPrFDF0q4ziUUKettzW8MrAaiVfmbD1/VkmLNVqqZVvBCtRblXb5FHmtS8FxnqCzYP4WFvz3T0TcrOqwLX1M/DQvcHaGGw0B0y4bZMs7lVScGBFxMj3vbFi2SRKbKhaitxHfYHAOAa0X7/MSS0RNAjdwoyGHeOepXOKY+h3iHeqCvgOH6LOifdHf/1aaZNwSkGotYnYScW8Yx63LnSwba7+hESrtPa/huRmB9KWvMCKbDThL/nne14hnL277EDCSocPu3rOSYjuB9gKSOdVmWsj9Dxb/iZIe+S6AiG29Esm+/eUacSba0k8wn5HhHg9d4tIcixrxveflc8vi2/wNQGVFNsGO6tB5WF0xf/plngOvQ1/ivGV/C1Qpdhzznh0ExAVJ6dwzNg7qIEBaw+BzTJTUuRcPk92Sn6QDn2Pu3mpONaEumacjW4w6ipPnPw+g2TfywJjeEcpSZaP4Q3YV5HG8D6UjWA4GSkBKculWpdCMadx0usMomsSS/74QgpYqcPkmamB4nVv1JxczYITIqItIKjD35IGKAUwAA=='
278281

279282
const uosHeaders = {
280283
'client-version' : UOS_PATCH_CLIENT_VERSION,
281284
extspam : UOS_PATCH_EXTSPAM,
282285
}
283286
// add RequestInterception
284287
await page.setRequestInterception(true)
285-
page.on('request', req => {
288+
page.on('request', (req) => {
286289
const url = new URL(req.url())
287-
if (url.pathname === '/' && url.search.indexOf('target=t') === -1) {
288-
if (url.search === '' || url.search === '?') {
289-
url.search = '?'
290-
} else {
291-
url.search += '&'
292-
}
293-
url.search += 'target=t'
294-
this.wrapAsync(req.continue({ url: url.toString() }))
295-
296-
} else if (url.pathname === '/cgi-bin/mmwebwx-bin/webwxnewloginpage') {
290+
if (url.pathname === '/cgi-bin/mmwebwx-bin/webwxnewloginpage') {
297291
const override = {
298292
headers: {
299293
...req.headers(),
300294
...uosHeaders,
301295
},
302296
}
303297
this.wrapAsync(req.continue(override))
304-
305298
} else {
306299
this.wrapAsync(req.continue())
307300
}

src/puppet-wechat.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,8 @@ import {
3535
} from 'watchdog'
3636
import * as PUPPET from 'wechaty-puppet'
3737
import { log } from 'wechaty-puppet'
38-
import {
39-
FileBox,
40-
type FileBoxInterface,
41-
} from 'file-box'
38+
import type { FileBoxInterface } from 'file-box'
39+
import { FileBox } from 'file-box'
4240

4341
import {
4442
MEMORY_SLOT,
@@ -1484,9 +1482,9 @@ export class PuppetWeChat extends PUPPET.Puppet {
14841482
)
14851483

14861484
let mediaData: WebMessageMediaPayload
1487-
let rawPayload = {} as undefined | WebMessageRawPayload
1485+
let rawPayload = {} as WebMessageRawPayload
14881486

1489-
if (!rawPayload || !rawPayload.MediaId) {
1487+
if (!rawPayload.MediaId) {
14901488
try {
14911489
mediaData = await this.uploadMedia(file, conversationId)
14921490
rawPayload = Object.assign(rawPayload, mediaData)

tests/puppeteer-room.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ const ROOM_EXPECTED = {
5656
}
5757

5858
test('Room smoke testing', async t => {
59+
const MOCK_USER_ID = 'TEST-USER-ID'
5960

6061
// Mock
6162
const mockContactRoomRawPayload = (id: string) => {
@@ -80,7 +81,7 @@ test('Room smoke testing', async t => {
8081
sandbox.stub(puppet, 'roomRawPayload').callsFake(mockContactRoomRawPayload)
8182

8283
sandbox.stub(puppet, 'id').value('pretend-to-be-logined')
83-
84+
await puppet.login(MOCK_USER_ID)
8485
const roomPayload = await puppet.roomPayload(ROOM_EXPECTED.id)
8586

8687
t.equal(roomPayload.id, ROOM_EXPECTED.id, 'should set id/UserName right')

0 commit comments

Comments
 (0)