From 2cfa0422c1dc23982b26368acaeb3cc06ef8ee6c Mon Sep 17 00:00:00 2001 From: eraseyourknees <112027564+eraseyourknees@users.noreply.github.com> Date: Sat, 22 Oct 2022 01:20:13 +0200 Subject: [PATCH] Improve caching --- fetchupd.php | 30 +++++++++++++++--------------- get.php | 50 ++++++++++++++++++++++---------------------------- 2 files changed, 37 insertions(+), 43 deletions(-) diff --git a/fetchupd.php b/fetchupd.php index c246a4a..6538999 100644 --- a/fetchupd.php +++ b/fetchupd.php @@ -94,21 +94,15 @@ function uupFetchUpd( $res = "api-fetch-$arch-$ring-$flight-$build-$minor-$sku-$type"; $cache = new UupDumpCache($res); - $out = $cache->get(); - $cached = ($out !== false); + $fromCache = $cache->get(); + if($fromCache !== false) return $fromCache; - if(!$cached) { - consoleLogger('Fetching information from the server...'); - $postData = composeFetchUpdRequest(uupDevice(), uupEncryptedData(), $arch, $flight, $ring, $build, $sku, $type); - $out = sendWuPostRequest('https://fe3cr.delivery.mp.microsoft.com/ClientWebService/client.asmx', $postData); + consoleLogger('Fetching information from the server...'); + $postData = composeFetchUpdRequest(uupDevice(), uupEncryptedData(), $arch, $flight, $ring, $build, $sku, $type); + $out = sendWuPostRequest('https://fe3cr.delivery.mp.microsoft.com/ClientWebService/client.asmx', $postData); - $out = html_entity_decode($out); - consoleLogger('Information has been successfully fetched.'); - - if($cacheRequests == 1) { - $cache->put($out, 120); - } - } + $out = html_entity_decode($out); + consoleLogger('Information has been successfully fetched.'); preg_match_all('/.*?<\/UpdateInfo>/', $out, $updateInfos); $updateInfo = preg_grep('/true<\/IsLeaf>/', $updateInfos[0]); @@ -141,7 +135,7 @@ function uupFetchUpd( return array('error' => 'EMPTY_FILELIST'); } - return array( + $data = [ 'apiVersion' => uupApiVersion(), 'updateId' => $updateArray[0]['updateId'], 'updateTitle' => $updateArray[0]['updateTitle'], @@ -149,7 +143,13 @@ function uupFetchUpd( 'arch' => $updateArray[0]['arch'], 'fileWrite' => $updateArray[0]['fileWrite'], 'updateArray' => $updateArray, - ); + ]; + + if($cacheRequests == 1) { + $cache->put($data, 120); + } + + return $data; } function parseFetchUpdate($updateInfo, $out, $arch, $ring, $flight, $build, $sku, $type) { diff --git a/get.php b/get.php index 1dea2c5..8d5476a 100644 --- a/get.php +++ b/get.php @@ -47,6 +47,12 @@ function uupGetFiles( return array('error' => 'INCORRECT_ID'); } + $edition = is_array($desiredEdition) ? implode('_', $desiredEdition) : $desiredEdition; + $res = "api-get-${updateId}_${usePack}_${edition}_${requestType}"; + $cache = new UupDumpCache($res); + $fromCache = $cache->get(); + if($fromCache !== false) return $fromCache; + $info = uupApiReadFileinfo($updateId); if(empty($info)) { $info = array( @@ -155,7 +161,7 @@ function uupGetFiles( } if($requestType < 2) { - $filesInfoList = uupGetOnlineFiles($updateId, $rev, $info, $requestType, $type); + $filesInfoList = uupGetOnlineFiles($updateId, $rev, $info, $type); } else { $filesInfoList = uupGetOfflineFiles($info); } @@ -336,7 +342,7 @@ function uupGetFiles( consoleLogger('Successfully parsed the information.'); - return array( + $data = [ 'apiVersion' => uupApiVersion(), 'updateName' => $updateName, 'arch' => $updateArch, @@ -344,25 +350,22 @@ function uupGetFiles( 'sku' => $updateSku, 'hasUpdates' => $hasUpdates, 'files' => $files, - ); + ]; + + if($requestType > 0) { + $cacheData = $data; + $cache->put($cacheData, 90); + } + + return $data; } -function uupGetOnlineFiles($updateId, $rev, $info, $cacheRequests, $type) { - $res = "api-get-${updateId}_rev.$rev"; - $cache = new UupDumpCache($res); - $fromCache = $cache->get(); - $cached = ($fromCache !== false); - - if($cached) { - $out = $fromCache['out']; - $fetchTime = $fromCache['fetchTime']; - } else { - $fetchTime = time(); - consoleLogger('Fetching information from the server...'); - $postData = composeFileGetRequest($updateId, uupDevice(), $info, $rev, $type); - $out = sendWuPostRequest('https://fe3cr.delivery.mp.microsoft.com/ClientWebService/client.asmx/secured', $postData); - consoleLogger('Information has been successfully fetched.'); - } +function uupGetOnlineFiles($updateId, $rev, $info, $type) { + $fetchTime = time(); + consoleLogger('Fetching information from the server...'); + $postData = composeFileGetRequest($updateId, uupDevice(), $info, $rev, $type); + $out = sendWuPostRequest('https://fe3cr.delivery.mp.microsoft.com/ClientWebService/client.asmx/secured', $postData); + consoleLogger('Information has been successfully fetched.'); consoleLogger('Parsing information...'); $xmlOut = @simplexml_load_string($out); @@ -462,15 +465,6 @@ function uupGetOnlineFiles($updateId, $rev, $info, $cacheRequests, $type) { } } - if($cacheRequests == 1 && $cached == 0) { - $cacheData = [ - 'out' => $out, - 'fetchTime' => $fetchTime, - ]; - - $cache->put($cacheData, 90); - } - return $files; }