Added update proto workflow (#61)

This commit is contained in:
Edgard Lorraine Messias
2023-05-13 18:10:02 -03:00
committed by GitHub
parent 33ecb49ff4
commit 9434e12730
3 changed files with 71 additions and 4 deletions

52
.github/workflows/update-proto.yml vendored Normal file
View File

@@ -0,0 +1,52 @@
name: Update WAProto
on:
schedule:
- cron: "10 1 * * *"
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
update-proto:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Install packages
run: |
yarn
yarn --pure-lockfile --cwd proto-extract
- name: Update WAProto.proto
id: wa_proto_info
run: |
yarn --cwd proto-extract start > wa-logs.txt
WA_VERSION=$(cat wa-logs.txt | perl -n -e'/Current version\: (.+)/ && print $1')
WA_JS_URL=$(cat wa-logs.txt | perl -n -e'/Found source JS URL\: (.+)/ && print $1')
echo "wa_version=$WA_VERSION" >> $GITHUB_OUTPUT
echo "wa_js_url=$WA_JS_URL" >> $GITHUB_OUTPUT
- name: GenerateStatics
run: yarn gen:protobuf
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
commit-message: "chore: updated proto to v${{steps.wa_proto_info.outputs.wa_version}}"
title: "Whatsapp v${{steps.wa_proto_info.outputs.wa_version}} proto change"
branch: "update-proto/stable"
delete-branch: true
labels: "update-proto"
body: "Automated changes\nFound source JS URL: ${{steps.wa_proto_info.outputs.wa_js_url}}\nCurrent version: v${{steps.wa_proto_info.outputs.wa_version}}"
add-paths: |
WAProto/*

1
.gitignore vendored
View File

@@ -17,3 +17,4 @@ output.csv
Proxy
test.ts
TestData
wa-logs.txt

View File

@@ -34,9 +34,23 @@ async function findAppModules() {
}
}
const baseURL = 'https://web.whatsapp.com'
const serviceworker = await request.get(`${baseURL}/serviceworker.js`, ua)
const versions = [...serviceworker.matchAll(/assets-manifest-([\d\.]+).json/g)].map(r => r[1])
const version = versions[0]
let bootstrapQRURL = ''
if(version) {
const asset = await request.get(`${baseURL}/assets-manifest-${version}.json`, ua)
const hashFiles = JSON.parse(asset)
const files = Object.keys(hashFiles)
const app = files.find(f => /^app\./.test(f))
bootstrapQRURL = `${baseURL}/${app}`
} else {
const index = await request.get(baseURL, ua)
const bootstrapQRID = index.match(/src="\/app.([0-9a-z]{10,}).js"/)[1]
const bootstrapQRURL = baseURL + '/app.' + bootstrapQRID + '.js'
bootstrapQRURL = baseURL + '/app.' + bootstrapQRID + '.js'
}
console.error('Found source JS URL:', bootstrapQRURL)