Last active
December 21, 2015 03:59
-
-
Save rabellamy/6246184 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/core/modules/aggregator/tests/modules/aggregator_test/aggregator_test.module b/core/modules/aggregator/tests/modules/aggregator_test/aggregator_test.module | |
index 4427a3a..b3d9bbc 100644 | |
--- a/core/modules/aggregator/tests/modules/aggregator_test/aggregator_test.module | |
+++ b/core/modules/aggregator/tests/modules/aggregator_test/aggregator_test.module | |
@@ -1,75 +1 @@ | |
<?php | |
- | |
-use Drupal\Component\Utility\Crypt; | |
-use Symfony\Component\HttpFoundation\RedirectResponse; | |
- | |
-/** | |
- * Implements hook_menu(). | |
- */ | |
-function aggregator_test_menu() { | |
- $items['aggregator/test-feed'] = array( | |
- 'title' => 'Test feed static last modified date', | |
- 'description' => "A cached test feed with a static last modified date.", | |
- 'page callback' => 'aggregator_test_feed', | |
- 'access arguments' => array('access content'), | |
- 'type' => MENU_CALLBACK, | |
- ); | |
- $items['aggregator/redirect'] = array( | |
- 'title' => 'Test feed with a redirect', | |
- 'description' => "A feed that redirects to another one", | |
- 'page callback' => 'aggregator_test_redirect', | |
- 'access arguments' => array('access content'), | |
- 'type' => MENU_CALLBACK, | |
- ); | |
- return $items; | |
-} | |
- | |
-/** | |
- * Page callback. Generates a test feed and simulates last-modified and etags. | |
- * | |
- * @param $use_last_modified | |
- * Set TRUE to send a last modified header. | |
- * @param $use_etag | |
- * Set TRUE to send an etag. | |
- */ | |
-function aggregator_test_feed($use_last_modified = FALSE, $use_etag = FALSE) { | |
- $last_modified = strtotime('Sun, 19 Nov 1978 05:00:00 GMT'); | |
- $etag = Crypt::hashBase64($last_modified); | |
- | |
- $if_modified_since = strtotime(Drupal::request()->server->get('HTTP_IF_MODIFIED_SINCE')); | |
- $if_none_match = stripslashes(Drupal::request()->server->get('HTTP_IF_NONE_MATCH')); | |
- | |
- // Send appropriate response. We respond with a 304 not modified on either | |
- // etag or on last modified. | |
- if ($use_last_modified) { | |
- drupal_add_http_header('Last-Modified', gmdate(DATE_RFC1123, $last_modified)); | |
- } | |
- if ($use_etag) { | |
- drupal_add_http_header('ETag', $etag); | |
- } | |
- // Return 304 not modified if either last modified or etag match. | |
- if ($last_modified == $if_modified_since || $etag == $if_none_match) { | |
- drupal_add_http_header('Status', '304 Not Modified'); | |
- return; | |
- } | |
- | |
- // The following headers force validation of cache: | |
- drupal_add_http_header('Expires', 'Sun, 19 Nov 1978 05:00:00 GMT'); | |
- drupal_add_http_header('Cache-Control', 'must-revalidate'); | |
- drupal_add_http_header('Content-Type', 'application/rss+xml; charset=utf-8'); | |
- | |
- // Read actual feed from file. | |
- $file_name = __DIR__ . '/aggregator_test_rss091.xml'; | |
- $handle = fopen($file_name, 'r'); | |
- $feed = fread($handle, filesize($file_name)); | |
- fclose($handle); | |
- | |
- print $feed; | |
-} | |
- | |
-/** | |
- * Page callback that redirects to another feed. | |
- */ | |
-function aggregator_test_redirect() { | |
- return new RedirectResponse(url('aggregator/test-feed', array('absolute' => TRUE)), 301); | |
-} | |
diff --git a/core/modules/aggregator/tests/modules/aggregator_test/aggregator_test.routing.yml b/core/modules/aggregator/tests/modules/aggregator_test/aggregator_test.routing.yml | |
new file mode 100644 | |
index 0000000..9c2e96d | |
--- /dev/null | |
+++ b/core/modules/aggregator/tests/modules/aggregator_test/aggregator_test.routing.yml | |
@@ -0,0 +1,13 @@ | |
+aggregator_test_feed: | |
+ pattern: '/aggregator/test-feed' | |
+ defaults: | |
+ _controller: '\Drupal\aggregator_test\Controller\AggregatorTestRssController::feed' | |
+ requirements: | |
+ _permission: 'access content' | |
+ | |
+aggregator_redirect: | |
+ pattern: 'aggregator/redirect' | |
+ defaults: | |
+ _controller: '\Drupal\aggregator_test\Controller\AggregatorTestRssController::redirect' | |
+ requirements: | |
+ _permission: 'access content' | |
diff --git a/core/modules/aggregator/tests/modules/aggregator_test/lib/Drupal/aggregator_test/Controller/AggregatorTestRssController.php b/core/modules/aggregator/tests/modules/aggregator_test/lib/Drupal/aggregator_test/Controller/AggregatorTestRssController.php | |
new file mode 100644 | |
index 0000000..d42e6b1 | |
--- /dev/null | |
+++ b/core/modules/aggregator/tests/modules/aggregator_test/lib/Drupal/aggregator_test/Controller/AggregatorTestRssController.php | |
@@ -0,0 +1,72 @@ | |
+<?php | |
+/** | |
+ * @file | |
+ * Contains \Drupal\aggregator_test\Controller\AggregatorTestRssController. | |
+ */ | |
+ | |
+namespace Drupal\aggregator_test\Controller; | |
+ | |
+use Symfony\Component\HttpFoundation\Response; | |
+use Symfony\Component\HttpFoundation\Request; | |
+use Symfony\Component\DependencyInjection\ContainerInterface; | |
+use Drupal\Component\Utility\Crypt; | |
+use Drupal\Core\Controller\ControllerInterface; | |
+use Symfony\Component\HttpFoundation\RedirectResponse; | |
+ | |
+class AggregatorTestRssController implements ControllerInterface { | |
+ | |
+ public static function create(ContainerInterface $container) { | |
+ return new static(); | |
+ } | |
+ | |
+ /** | |
+ * Generates a test feed and simulates last-modified and etags. | |
+ * | |
+ * @param $use_last_modified | |
+ * Set TRUE to send a last modified header. | |
+ * @param $use_etag | |
+ * Set TRUE to send an etag. | |
+ */ | |
+ public function feed($use_last_modified = FALSE, $use_etag = FALSE, Request $request) { | |
+ $last_modified = strtotime('Sun, 19 Nov 1978 05:00:00 GMT'); | |
+ $etag = Crypt::hashBase64($last_modified); | |
+ | |
+ $if_modified_since = strtotime($request->server->get('HTTP_IF_MODIFIED_SINCE')); | |
+ $if_none_match = stripslashes($request->server->get('HTTP_IF_NONE_MATCH')); | |
+ | |
+ // Send appropriate response. We respond with a 304 not modified on either | |
+ // etag or on last modified. | |
+ if ($use_last_modified) { | |
+ drupal_add_http_header('Last-Modified', gmdate(DATE_RFC1123, $last_modified)); | |
+ } | |
+ if ($use_etag) { | |
+ drupal_add_http_header('ETag', $etag); | |
+ } | |
+ // Return 304 not modified if either last modified or etag match. | |
+ if ($last_modified == $if_modified_since || $etag == $if_none_match) { | |
+ drupal_add_http_header('Status', '304 Not Modified'); | |
+ return; | |
+ } | |
+ | |
+ // The following headers force validation of cache: | |
+ drupal_add_http_header('Expires', 'Sun, 19 Nov 1978 05:00:00 GMT'); | |
+ drupal_add_http_header('Cache-Control', 'must-revalidate'); | |
+ drupal_add_http_header('Content-Type', 'application/rss+xml; charset=utf-8'); | |
+ | |
+ // Read actual feed from file. | |
+ $file_name = drupal_get_path('module', 'aggregator_test') . '/aggregator_test_rss091.xml'; | |
+ $handle = fopen($file_name, 'r'); | |
+ $feed = fread($handle, filesize($file_name)); | |
+ fclose($handle); | |
+ | |
+ return new Response($feed); | |
+ | |
+ } | |
+ | |
+ public function redirect() { | |
+ | |
+ return new RedirectResponse(url('aggregator/test-feed', array('absolute' => TRUE)), 301); | |
+ | |
+ } | |
+ | |
+} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment