From e651270b5541d0ae350d1dd926ee7bf2da9be95e Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Fri, 4 May 2012 08:03:24 +0000
Subject: [PATCH] metarefresh: Reintroduce support for fetching from local
 files.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@3087 44740490-163a-0410-bde0-09ae8108e29a
---
 modules/metarefresh/lib/MetaLoader.php | 56 ++++++++++++++------------
 1 file changed, 31 insertions(+), 25 deletions(-)

diff --git a/modules/metarefresh/lib/MetaLoader.php b/modules/metarefresh/lib/MetaLoader.php
index 67c13fe68..ea5bfc647 100644
--- a/modules/metarefresh/lib/MetaLoader.php
+++ b/modules/metarefresh/lib/MetaLoader.php
@@ -45,32 +45,38 @@ class sspmod_metarefresh_MetaLoader {
 	 */
 	public function loadSource($source) {
 
-		// Build new HTTP context
-		$context = $this->createContext($source);
-
-		// GET!
-		try {
-			list($data, $responseHeaders) = SimpleSAML_Utilities::fetch($source['src'], $context, TRUE);
-		} catch(Exception $e) {
-			SimpleSAML_Logger::warning('metarefresh: ' . $e->getMessage());
-		}
+		if (preg_match('@^https?://@i', $source['src'])) {
+			// Build new HTTP context
+			$context = $this->createContext($source);
+
+			// GET!
+			try {
+				list($data, $responseHeaders) = SimpleSAML_Utilities::fetch($source['src'], $context, TRUE);
+			} catch(Exception $e) {
+				SimpleSAML_Logger::warning('metarefresh: ' . $e->getMessage());
+			}
 
-		// We have response headers, so the request succeeded
-		if(!isset($responseHeaders)) {
-			// No response headers, this means the request failed in some way, so re-use old data
-			SimpleSAML_Logger::debug('No response from ' . $source['src'] . ' - attempting to re-use cached metadata');
-			$this->addCachedMetadata($source);
-			return;
-		} elseif(preg_match('@^HTTP/1\.[01]\s304\s@', $responseHeaders[0])) {
-			// 304 response
-			SimpleSAML_Logger::debug('Received HTTP 304 (Not Modified) - attempting to re-use cached metadata');
-			$this->addCachedMetadata($source);
-			return;
-		} elseif(!preg_match('@^HTTP/1\.[01]\s200\s@', $responseHeaders[0])) {
-			// Other error.
-			SimpleSAML_Logger::debug('Error from ' . $source['src'] . ' - attempting to re-use cached metadata');
-			$this->addCachedMetadata($source);
-			return;
+			// We have response headers, so the request succeeded
+			if(!isset($responseHeaders)) {
+				// No response headers, this means the request failed in some way, so re-use old data
+				SimpleSAML_Logger::debug('No response from ' . $source['src'] . ' - attempting to re-use cached metadata');
+				$this->addCachedMetadata($source);
+				return;
+			} elseif(preg_match('@^HTTP/1\.[01]\s304\s@', $responseHeaders[0])) {
+				// 304 response
+				SimpleSAML_Logger::debug('Received HTTP 304 (Not Modified) - attempting to re-use cached metadata');
+				$this->addCachedMetadata($source);
+				return;
+			} elseif(!preg_match('@^HTTP/1\.[01]\s200\s@', $responseHeaders[0])) {
+				// Other error.
+				SimpleSAML_Logger::debug('Error from ' . $source['src'] . ' - attempting to re-use cached metadata');
+				$this->addCachedMetadata($source);
+				return;
+			}
+		} else {
+			/* Local file. */
+			$data = file_get_contents($source['src']);
+			$responseHeaders = NULL;
 		}
 
 		/* Everything OK. Proceed. */
-- 
GitLab