forked from getsentry/magento-amg-sentry-extension
-
Notifications
You must be signed in to change notification settings - Fork 0
/
update-sdkjs.php
75 lines (61 loc) · 2.63 KB
/
update-sdkjs.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
* Created J/02/11/2023
* Updated V/22/12/2023
*
* Copyright 2012 | Jean Roussel <contact~jean-roussel~fr>
* Copyright 2022-2024 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
* Copyright 2022-2023 | Fabrice Creuzot <fabrice~cellublue~com>
* https://github.com/luigifab/openmage-sentry
*
* This program is free software, you can redistribute it or modify
* it under the terms of the Open Software License (OSL 3.0).
*
* This program is distributed in the hope that it will be useful,
* but without any warranty, without even the implied warranty of
* merchantability or fitness for a particular purpose. See the
* Open Software License (OSL 3.0) for more details.
*/
chdir(__DIR__);
error_reporting(E_ALL);
ini_set('display_errors', (PHP_VERSION_ID < 80100) ? '1' : 1);
if (PHP_SAPI != 'cli')
exit(-1);
$dest = './src/js/sentry/sdk.min.js';
function sendRequest(string $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 8);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_ENCODING , ''); // @see https://stackoverflow.com/q/17744112/2980105
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/114.0');
$result = curl_exec($ch);
$result = (($result === false) || (curl_errno($ch) !== 0)) ? trim('CURL_ERROR '.curl_errno($ch).' '.curl_error($ch)) : $result;
curl_close($ch);
return $result;
}
// @see https://github.com/getsentry/sentry-javascript
// https://browser.sentry-cdn.com/7.73.0/bundle.es5.min.js => js/sentry/sdk.min.js
$result = sendRequest('https://github.com/gitapi/repos/getsentry/sentry-javascript/releases');
if (mb_strpos($result, '"tag_name": "') !== false) {
$result = @json_decode($result, true);
if (!empty($result[0]['tag_name']) && !empty($result[0]['created_at']) && empty($result[0]['prerelease']) && empty($result[0]['draft'])) {
$version = $result[0]['tag_name']; // x.x.x
$url = 'https://browser.sentry-cdn.com/'.$version.'/bundle.es5.min.js';
echo 'latest version is: ',$version,"\n";
echo 'download from: '.$url,"\n";
$data = sendRequest($url);
if (!empty($data) && (mb_strlen($data) > 1000) && (mb_strpos($data, '/*! @sentry/browser '.$version) === 0)) {
$data = trim(str_replace('//# sourceMappingURL=bundle.es5.min.js.map', '', $data));
file_put_contents($dest, $data);
echo ' ok: sdk updated',"\n";
exit(0);
}
echo ' fatal: invalid response:',"\n",trim(mb_substr($data, 0, 100)),"\n\n";
exit(-1);
}
}
exit(-1);