web/search_tweets.php
changeset 1478 adb28b75f2c7
parent 1476 b5098fdacc60
child 1557 7c67caaafdeb
--- 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 {
     /**