Skip to content

Commit 50db043

Browse files
authored
Fix url encoding (#679)
1 parent ebe2aa5 commit 50db043

5 files changed

+39
-34
lines changed

index.json

+21-21
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@
229229
"fileName": "ED - HA - VOC Sensor-SSIG 4.0.1.zigbee",
230230
"fileVersion": 262145,
231231
"fileSize": 194471,
232-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Develco/ED - HA - VOC Sensor-SSIG 4.0.1.zigbee",
232+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Develco/ED%20-%20HA%20-%20VOC%20Sensor-SSIG%204.0.1.zigbee",
233233
"imageType": 800,
234234
"manufacturerCode": 4117,
235235
"sha512": "d6779d7e0879c86d8a7479f352d187cb854cc8586b57245dc96f6c202ccf455a19acb5d360b9ae62510e5b7ae2ea67a95841ff822a5a3a69199d5841dbcf2dbe",
@@ -420,7 +420,7 @@
420420
"fileName": "ZB21S3_HZC_Dimmer1_EcoDim-Zigbee 3.0_1.01_20230908.ota",
421421
"fileVersion": 4,
422422
"fileSize": 286646,
423-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/EcoDim/ZB21S3_HZC_Dimmer1_EcoDim-Zigbee 3.0_1.01_20230908.ota",
423+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/EcoDim/ZB21S3_HZC_Dimmer1_EcoDim-Zigbee%203.0_1.01_20230908.ota",
424424
"imageType": 1000,
425425
"manufacturerCode": 4714,
426426
"sha512": "9b7835e32ef5af35385710332838099c5dce99a398ae04a1a769d67935fb0752ca4da58892f13bc842cbf8f9ae20516142fe9b66eff3e8ebef6577a71a1d9b0b",
@@ -442,7 +442,7 @@
442442
"fileName": "GL-B-007P_V17_OTAV7_20210305_100%.ota",
443443
"fileVersion": 7,
444444
"fileSize": 291702,
445-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-B-007P_V17_OTAV7_20210305_100%.ota",
445+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-B-007P_V17_OTAV7_20210305_100%25.ota",
446446
"imageType": 0,
447447
"manufacturerCode": 4687,
448448
"sha512": "8c3431b4d60d31e3ac16468601b64b3f8da0c2cf122c638a654b71543de901bfaf2e3afe5a0a8084d20d32478ad61738c86f33a2548211ea8f2367900fb1b620",
@@ -496,7 +496,7 @@
496496
"fileName": "GL-D-005P_V11076801_OTAV12_20211108_60%.ota",
497497
"fileVersion": 18,
498498
"fileSize": 291826,
499-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-D-005P_V11076801_OTAV12_20211108_60%.ota",
499+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-D-005P_V11076801_OTAV12_20211108_60%25.ota",
500500
"imageType": 0,
501501
"manufacturerCode": 4687,
502502
"sha512": "966bbc8a44693eb5a91c4cf64bf59b91d291335d223cec1ffc65a6d7b3fe339be4e70b90908aea0bc0a6f7ea4ff130898b4492e0818d7f05220582097a543f9d",
@@ -537,7 +537,7 @@
537537
"fileName": "GL-FL-005P_V14_OTAV4_20210119_100%.ota",
538538
"fileVersion": 4,
539539
"fileSize": 291546,
540-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-FL-005P_V14_OTAV4_20210119_100%.ota",
540+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-FL-005P_V14_OTAV4_20210119_100%25.ota",
541541
"imageType": 0,
542542
"manufacturerCode": 4687,
543543
"sha512": "35815df1ef7ec3f492076f118c77bf21a846ea68c07766f574eeb67d34cb00cee8e374edabfba47c1b66763c222c1ce2133a06cae8bece483b0be9d90f54a2b8",
@@ -548,7 +548,7 @@
548548
"fileName": "GL-FL-006P_V14_OTAV4_20210119_100%.ota",
549549
"fileVersion": 4,
550550
"fileSize": 291546,
551-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-FL-006P_V14_OTAV4_20210119_100%.ota",
551+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-FL-006P_V14_OTAV4_20210119_100%25.ota",
552552
"imageType": 0,
553553
"manufacturerCode": 4687,
554554
"sha512": "fec3c2e153d30a3a01193b0b7a96e3ef2e6613d1de58e5ee01d6d66baf7d2d4e8c1bd94b3aece0effc94145e8b5b783f192ff752a9ae640044b895faabbbcd63",
@@ -580,7 +580,7 @@
580580
"fileName": "GL-S-007P_V15_A1_OTAV5_20210201_90%.ota",
581581
"fileVersion": 5,
582582
"fileSize": 291622,
583-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-S-007P_V15_A1_OTAV5_20210201_90%.ota",
583+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Gledopto/GL-S-007P_V15_A1_OTAV5_20210201_90%25.ota",
584584
"imageType": 0,
585585
"manufacturerCode": 4687,
586586
"sha512": "ce512a11f0d4e603edd3a93686cf5d666ee447bee1d24a6e06ce544e2ebf941a4a4e3fcc737cdf8c65821f8e008366b269d9a221fb55cfa54065380442c5f432",
@@ -1901,7 +1901,7 @@
19011901
"fileName": "1166-0128-24031511-upgradeMe-RS 226.zigbee",
19021902
"fileVersion": 604181777,
19031903
"fileSize": 262013,
1904-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-0128-24031511-upgradeMe-RS 226.zigbee",
1904+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-0128-24031511-upgradeMe-RS%20226.zigbee",
19051905
"imageType": 296,
19061906
"manufacturerCode": 4454,
19071907
"sha512": "8d239c44c73d403c15448d5c7e4c15d1b25463bbb4681fdfd184cdb6e5f72b4797d71b746097b14ce0e09b631a9e6a4b4d103caa1175ccd257b9193fe7261120",
@@ -1911,7 +1911,7 @@
19111911
"fileName": "1166-0129-24031511-upgradeMe-RS 227 T.zigbee",
19121912
"fileVersion": 604181777,
19131913
"fileSize": 268720,
1914-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-0129-24031511-upgradeMe-RS 227 T.zigbee",
1914+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-0129-24031511-upgradeMe-RS%20227%20T.zigbee",
19151915
"imageType": 297,
19161916
"manufacturerCode": 4454,
19171917
"sha512": "c7365c9576886a4fc4ddb6e1256d7dcb75f788ec92631e5cb13b8ae317b876954988632010fbe6604a5d1fd5f25936f61387dd6dda20ca61eb5848999278b964",
@@ -1921,7 +1921,7 @@
19211921
"fileName": "1166-012A-24031511-upgradeMe-RB 245.zigbee",
19221922
"fileVersion": 604181777,
19231923
"fileSize": 262013,
1924-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012A-24031511-upgradeMe-RB 245.zigbee",
1924+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012A-24031511-upgradeMe-RB%20245.zigbee",
19251925
"imageType": 298,
19261926
"manufacturerCode": 4454,
19271927
"sha512": "a6606afeb0ce56b20d7aa839d40ec079851fa6b39a80a65707d4dbd900fb2ac2582db40b5dc519c473fc51d1e630bb81aded66545283b77f2ac5e91699771cac",
@@ -1931,7 +1931,7 @@
19311931
"fileName": "1166-012B-24031511-upgradeMe-RB 249 T.zigbee",
19321932
"fileVersion": 604181777,
19331933
"fileSize": 268720,
1934-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012B-24031511-upgradeMe-RB 249 T.zigbee",
1934+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012B-24031511-upgradeMe-RB%20249%20T.zigbee",
19351935
"imageType": 299,
19361936
"manufacturerCode": 4454,
19371937
"sha512": "d3c86737e3a9de6102c013b00b69ea37c551debb898c25f5ce67bfdab4c52b8acca5932e34953d06087dd078d77d83d5d8654c695af6a18440fc2acea0c07f5f",
@@ -1941,7 +1941,7 @@
19411941
"fileName": "1166-012C-24031511-upgradeMe-RB 251 C.zigbee",
19421942
"fileVersion": 604181777,
19431943
"fileSize": 318314,
1944-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012C-24031511-upgradeMe-RB 251 C.zigbee",
1944+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012C-24031511-upgradeMe-RB%20251%20C.zigbee",
19451945
"imageType": 300,
19461946
"manufacturerCode": 4454,
19471947
"sha512": "7be7ca7b54e3f404f164f0ae22386e6180f30a72334909648240a45490002b291e4031a6604d3ed7b894a1105a49f6d088df4a085f434a8b1be512a8552a995d",
@@ -1951,7 +1951,7 @@
19511951
"fileName": "1166-012D-24031511-upgradeMe-RB 266.zigbee",
19521952
"fileVersion": 604181777,
19531953
"fileSize": 262013,
1954-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012D-24031511-upgradeMe-RB 266.zigbee",
1954+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012D-24031511-upgradeMe-RB%20266.zigbee",
19551955
"imageType": 301,
19561956
"manufacturerCode": 4454,
19571957
"sha512": "317a109be00c0f7b96e7bdb1d60eab57d68149e3a9da78b7fe21db165d22165fef389b8eb4c0463abe27d5e9680a48975a72687900f5baa5e2df5db16eda1348",
@@ -1961,7 +1961,7 @@
19611961
"fileName": "1166-012E-24031511-upgradeMe-RB 279 T.zigbee",
19621962
"fileVersion": 604181777,
19631963
"fileSize": 268720,
1964-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012E-24031511-upgradeMe-RB 279 T.zigbee",
1964+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012E-24031511-upgradeMe-RB%20279%20T.zigbee",
19651965
"imageType": 302,
19661966
"manufacturerCode": 4454,
19671967
"sha512": "96c85aab44c85dfaecf0e5728b87de5920aa6d1030e18831cbfd737b5e0772937f55f0e7da1c5356ef6e6756f7c4cffbfc7d0ba095e63d053bde2535a450b72d",
@@ -1971,7 +1971,7 @@
19711971
"fileName": "1166-012F-24021511-upgradeMe -RB 286 C.zigbee",
19721972
"fileVersion": 604116241,
19731973
"fileSize": 302698,
1974-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012F-24021511-upgradeMe -RB 286 C.zigbee",
1974+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-012F-24021511-upgradeMe%20-RB%20286%20C.zigbee",
19751975
"imageType": 303,
19761976
"manufacturerCode": 4454,
19771977
"sha512": "3195366686f563306fa7fd9d41656498fb6d15e085d4f691d8464f6de074c1042ed33a6706deea6d9dd001ef535f74cd8dceae1deec38194ab1e3d92a596a11f",
@@ -1981,7 +1981,7 @@
19811981
"fileName": "1166-0130-22151511-upgradeMe RS 232 C 20230714.ota",
19821982
"fileVersion": 571806993,
19831983
"fileSize": 319518,
1984-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-0130-22151511-upgradeMe RS 232 C 20230714.ota",
1984+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-0130-22151511-upgradeMe%20%20RS%20232%20C%2020230714.ota",
19851985
"imageType": 304,
19861986
"manufacturerCode": 4454,
19871987
"sha512": "cfe7aab8c926345f38aa817a6ac652519cd891eeba8162e680b98dc91e6025ff150a04e618c8abc5528110965d1bf036f324619269d33bb97a535ce766b71a5f",
@@ -1991,7 +1991,7 @@
19911991
"fileName": "1166-0131-24081511-upgradeMe RB 255 C 20230714.ota",
19921992
"fileVersion": 604509457,
19931993
"fileSize": 319414,
1994-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-0131-24081511-upgradeMe RB 255 C 20230714.ota",
1994+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-0131-24081511-upgradeMe%20%20RB%20255%20C%2020230714.ota",
19951995
"imageType": 305,
19961996
"manufacturerCode": 4454,
19971997
"sha512": "0d1374689790b7d92eecc068303f87ef0d5df1aadddb0a498c9dca73db9313b2239be14b4b63420660da8512a692909cce64b6ff74769fa62bc4fef610c9c366",
@@ -2081,7 +2081,7 @@
20812081
"fileName": "1166-022D-24031511-upgradeMe-BY 266.zigbee",
20822082
"fileVersion": 604181777,
20832083
"fileSize": 262013,
2084-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-022D-24031511-upgradeMe-BY 266.zigbee",
2084+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-022D-24031511-upgradeMe-BY%20266.zigbee",
20852085
"imageType": 557,
20862086
"manufacturerCode": 4454,
20872087
"sha512": "e3a75926cd6e19441dac4aec5a6c81aba32c0fc09fb74481cb1140e4284954497167ae2a897346d53b5cd14bb80bb52b6f14bf7356d5de300b1868f62b6ca8e7",
@@ -2091,7 +2091,7 @@
20912091
"fileName": "1166-022F-24021511-upgradeMe BY 286 C.zigbee",
20922092
"fileVersion": 604116241,
20932093
"fileSize": 302698,
2094-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-022F-24021511-upgradeMe BY 286 C.zigbee",
2094+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Innr/1166-022F-24021511-upgradeMe%20BY%20286%20C.zigbee",
20952095
"imageType": 559,
20962096
"manufacturerCode": 4454,
20972097
"sha512": "a6fdd9ab0f770665e126920143da7c0f66ef5d9fed5f2b76f030c4d21a51ae02d881ca31aa6cb80730246311f8bbaac2f9196b7840ac8bc99a6f22db738e9a00",
@@ -5163,7 +5163,7 @@
51635163
"fileName": "NAMRON_AS_4512737(6001) V22.ota",
51645164
"fileVersion": 22,
51655165
"fileSize": 245148,
5166-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Namron/NAMRON_AS_4512737(6001) V22.ota",
5166+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Namron/NAMRON_AS_4512737(6001)%20V22.ota",
51675167
"imageType": 6001,
51685168
"manufacturerCode": 4644,
51695169
"sha512": "ce40cfc670692384590fc58b84fd9b0d1a6f7b1fa28c6a34ea46fd404b536135151e0fa70bef5ff0c1eeca3fe0d27174806fd1b4863e5bc10afaeca49e0b14f0",
@@ -5174,7 +5174,7 @@
51745174
"fileName": "NAMRON_AS_4512738(6002) V22.ota",
51755175
"fileVersion": 22,
51765176
"fileSize": 245148,
5177-
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Namron/NAMRON_AS_4512738(6002) V22.ota",
5177+
"url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Namron/NAMRON_AS_4512738(6002)%20V22.ota",
51785178
"imageType": 6002,
51795179
"manufacturerCode": 4644,
51805180
"sha512": "c6eb11b68bbbacee5ee8dc483a93d07db60003a8345fdd512e05603b9ab1b3dd06f692e01a3be71f3411fdd43a3446198fc7dc806c9b80cab3c86226a41941a7",

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"format:check": "prettier --check .",
1818
"eslint": "eslint . --max-warnings=0",
1919
"test": "jest test --config=./tests/jest.config.ts --silent --runInBand",
20+
"test:watch": "jest test --watch --config=./tests/jest.config.ts --silent --runInBand",
2021
"coverage": "jest test --config=./tests/jest.config.ts --silent --runInBand --coverage"
2122
},
2223
"keywords": [

src/common.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export function getOutDir(folderName: string, basePath: string = BASE_IMAGES_DIR
7878
}
7979

8080
export function getRepoFirmwareFileUrl(folderName: string, fileName: string, basePath: string = BASE_IMAGES_DIR): string {
81-
return BASE_REPO_URL + path.posix.join(REPO_BRANCH, basePath, folderName, fileName);
81+
return BASE_REPO_URL + path.posix.join(REPO_BRANCH, basePath, folderName, encodeURIComponent(fileName));
8282
}
8383

8484
export function writeManifest(fileName: string, firmwareList: RepoImageMeta[]): void {

src/ghw_reprocess_all_images.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,7 @@ async function download3rdParties(
101101
continue;
102102
}
103103

104-
// reverse add.js logic
105-
const fileName = unescape(meta.url.split('/').pop()!);
104+
const fileName = decodeURIComponent(meta.url.split('/').pop()!);
106105
const outDirName = outDirFinder(meta);
107106

108107
if (outDirName) {
@@ -245,13 +244,9 @@ function checkImagesAgainstManifests(github: Octokit, core: typeof CoreApi, cont
245244

246245
for (const fileName of readdirSync(subfolderPath)) {
247246
const firmwareFilePath = path.join(subfolderPath, fileName);
248-
const fileRelUrl = path.posix.join(imagesDir, subfolderName, fileName);
249-
// previous add.js used escape() for url property
250-
const escFileRelUrl = escape(fileRelUrl);
247+
const fileRelUrl = path.posix.join(imagesDir, subfolderName, encodeURIComponent(fileName));
251248
// take local images only
252-
const inManifest = manifest.filter(
253-
(m) => m.url.startsWith(BASE_REPO_URL + REPO_BRANCH) && (m.url.endsWith(fileRelUrl) || m.url.endsWith(escFileRelUrl)),
254-
);
249+
const inManifest = manifest.filter((m) => m.url.startsWith(BASE_REPO_URL + REPO_BRANCH) && m.url.endsWith(fileRelUrl));
255250

256251
if (inManifest.length === 0) {
257252
core.warning(`Not found in base manifest: ${firmwareFilePath}.`);
@@ -396,3 +391,13 @@ export async function reProcessAllImages(
396391

397392
checkImagesAgainstManifests(github, core, context, removeNotInManifest);
398393
}
394+
395+
// To run locally uncomment below and run with `npx tsx src/ghw_reprocess_all_images.ts`
396+
// const core = {
397+
// info: (msg) => console.log(msg),
398+
// warning: (msg) => console.log(msg),
399+
// error: (msg) => console.error(msg),
400+
// startGroup: () => {},
401+
// endGroup: () => {},
402+
// }
403+
// checkImagesAgainstManifests(null, core, null, false);

tests/ghw_reprocess_all_images.test.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -366,13 +366,12 @@ describe('Github Workflow: Re-Process All Images', () => {
366366
const fileName = oldMetas.url.split('/').pop()!;
367367
const newName = fileName.replace('.ota', `(%1).ota`);
368368
const baseUrl = oldMetas.url.replace(fileName, '');
369-
oldMetas.url = baseUrl + escape(newName);
369+
oldMetas.url = baseUrl + encodeURIComponent(newName);
370370
setManifest(common.BASE_INDEX_MANIFEST_FILENAME, [oldMetas]);
371371
const imagePath = useImage(IMAGE_V14_1, BASE_IMAGES_TEST_DIR_PATH);
372372
const baseName = path.basename(imagePath.filename);
373373
const renamedPath = imagePath.filename.replace(baseName, newName);
374374
renameSync(imagePath.filename, renamedPath);
375-
console.log(newName, oldMetas.url, renamedPath);
376375

377376
// @ts-expect-error mocked as needed
378377
await reProcessAllImages(github, core, context, true, true);
@@ -384,7 +383,7 @@ describe('Github Workflow: Re-Process All Images', () => {
384383
const outManifestMetas = withExtraMetas(
385384
IMAGE_V14_1_METAS,
386385
// @ts-expect-error override
387-
{fileName: newName, url: `${baseUrl}${newName}`},
386+
{fileName: newName, url: `${baseUrl}${encodeURIComponent(newName)}`},
388387
);
389388
delete outManifestMetas.originalUrl;
390389
expect(writeManifestSpy).toHaveBeenNthCalledWith(2, common.BASE_INDEX_MANIFEST_FILENAME, [outManifestMetas]);
@@ -752,7 +751,7 @@ describe('Github Workflow: Re-Process All Images', () => {
752751
const fileName = oldMetas.url.split('/').pop()!;
753752
const newName = fileName.replace('.ota', `(%1).ota`);
754753
const baseUrl = oldMetas.url.replace(fileName, '');
755-
oldMetas.url = baseUrl + escape(newName);
754+
oldMetas.url = baseUrl + encodeURIComponent(newName);
756755
// @ts-expect-error old metas
757756
setManifest(common.BASE_INDEX_MANIFEST_FILENAME, [oldMetas]);
758757
// link back to existing image from fetch

0 commit comments

Comments
 (0)