From bcd661488de087afab096c18aa55eda42e8c5226 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sun, 30 Jun 2019 21:59:01 +0000
Subject: [PATCH] Move functions into classes to make them autoloader-compatibile

---
 lib/Fetch.php |   70 +++++++++++++++++++++++++++++++++++
 1 files changed, 70 insertions(+), 0 deletions(-)

diff --git a/lib/Fetch.php b/lib/Fetch.php
new file mode 100644
index 0000000..78e5bfe
--- /dev/null
+++ b/lib/Fetch.php
@@ -0,0 +1,70 @@
+<?php
+class Fetch {
+	static function ftp($url, $file = NULL) {
+		$url = parse_url($url);
+		if(!isset($url['scheme']) || $url['scheme'] != 'ftp') {
+			throw new Exception('Only FTP URLs are supported');
+		}
+		if(!isset($url['host'])) {
+			throw new Exception('Hostname not present in the URL');
+		}
+		if(!isset($url['path'])) {
+			throw new Exception('Path component not present in the URL');
+		}
+		if(!isset($url['port'])) {
+			$url['port'] = 21;
+		}
+		if(!isset($url['user'])) {
+			$url['user'] = 'anonymous';
+		}
+		if(!isset($url['pass'])) {
+			$url['pass'] = 'anonymous@mpk.jacekk.net';
+		}
+		if($file == NULL) {
+			$file = basename($url['path']);
+		}
+		
+		$localTime = -1;
+		$localSize = -1;
+		if(is_file($file)) {
+			$localTime = filemtime($file);
+			$localSize = filesize($file);
+		}
+		
+		$ftp = FtpConnection::create($url['host'], $url['port'], $url['user'], $url['pass']);
+		$remoteSize = $ftp->size($url['path']);
+		$remoteTime = $ftp->mdtm($url['path']);
+		
+		$updated = FALSE;
+		
+		if($localTime < $remoteTime || ($localTime == $remoteTime && $localSize != $remoteSize)) {
+			if(file_exists($file.'.tmp')) {
+				unlink($file.'.tmp');
+			}
+			$ftp->get($file.'.tmp', $url['path'], FTP_BINARY);
+			touch($file.'.tmp', $remoteTime);
+			if(!rename($file.'.tmp', $file)) {
+				throw new Exception('Temporary file rename failed');
+			}
+			$updated = TRUE;
+		}
+		
+		return $updated;
+	}
+	
+	static function generic($url, $file = NULL) {
+		if($file == NULL) {
+			$file = basename($url['url']);
+		}
+		$data = file_get_contents($url);
+		if($data === FALSE) {
+			throw new Exception('URL fetch failed');
+		}
+		if(file_put_contents($file.'.tmp', $data) === FALSE) {
+			throw new Exception('Temporary file creation failed');
+		}
+		if(!rename($file.'.tmp', $file)) {
+			throw new Exception('Temporary file rename failed');
+		}
+	}
+}

--
Gitblit v1.9.1