diff -r bdf75c8cff6b -r adb28b75f2c7 web/search_tweets.php --- a/web/search_tweets.php Sun Sep 23 15:20:40 2018 +0200 +++ b/web/search_tweets.php Sun Sep 23 17:13:34 2018 +0200 @@ -9,39 +9,39 @@ include_once 'common.php'; use Abraham\TwitterOAuth\TwitterOAuth; +use Stash\Pool; +use Stash\Driver\Sqlite; + +$cacheDriver = new Stash\Driver\Sqlite(array('path' => sys_get_temp_dir()."/polemictweet_cache.db")); +$cachePool = new Stash\Pool($cacheDriver); /** * Check for a POSTed status message to send to Twitter */ if (!empty($_GET) && isset($_SESSION['TWITTER_ACCESS_TOKEN'])) { - /** - * Easiest way to use OAuth now that we have an Access Token is to use - * a preconfigured instance of Zend_Http_Client which automatically - * signs and encodes all our requests without additional work - */ - - // if (isset($_GET['endpoint'])) { - // $endpoint = $_GET['endpoint']; - // unset($_GET['endpoint']); - // } else { - // $endpoint = "search/tweets"; - // } + + $itemCachePath="search/tweets?" . http_build_query($_GET); + + $cachedStatusesResp = $cachePool->getItem($itemCachePath); + + $statusesStr = $cachedStatusesResp->get(); - $token = unserialize($_SESSION['TWITTER_ACCESS_TOKEN']); - $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $token['oauth_token'], $token['oauth_token_secret']); - + if ($cachedStatusesResp->isMiss()) { + $cachedStatusesResp->lock(); + + $token = unserialize($_SESSION['TWITTER_ACCESS_TOKEN']); + $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $token['oauth_token'], $token['oauth_token_secret']); + + + $statuses = $connection->get("search/tweets", $_GET); + $statusesStr = json_encode($statuses); - // $statuses = $connection->get("search/tweets", $parameters); - $statuses = $connection->get("search/tweets", $_GET); - // $client = $token->getHttpClient($configuration); - // $client->setUri("https://api.twitter.com/1.1/$endpoint.json"); - // $client->setMethod(Zend_Http_Client::GET); - // $client->setParameterGet($_GET); - // $response = $client->request(); + $cachedStatusesResp->set($statusesStr)->expiresAfter(3); + $cachePool->save($cachedStatusesResp); + } - // echo $response->getBody(); - echo json_encode($statuses); + echo($statusesStr); } else { /**