web reader for synchronous web requests
This commit is contained in:
		
							
								
								
									
										79
									
								
								application/core/Files/WebReader.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								application/core/Files/WebReader.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,79 @@ | ||||
| <?php | ||||
|  | ||||
| namespace ManiaControl\Files; | ||||
|  | ||||
| use cURL\Request; | ||||
| use cURL\Response; | ||||
| use ManiaControl\ManiaControl; | ||||
|  | ||||
| /** | ||||
|  * Reader Utility Class for efficient Web Requests | ||||
|  * | ||||
|  * @author    ManiaControl Team <mail@maniacontrol.com> | ||||
|  * @copyright 2014 ManiaControl Team | ||||
|  * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3 | ||||
|  */ | ||||
| abstract class WebReader { | ||||
|  | ||||
| 	/** | ||||
| 	 * Load a URL via GET | ||||
| 	 * | ||||
| 	 * @param string   $url | ||||
| 	 * @param callable $function | ||||
| 	 * @return Response | ||||
| 	 */ | ||||
| 	public static function loadUrl($url, callable $function = null) { | ||||
| 		$request  = static::newRequest($url); | ||||
| 		$response = $request->send(); | ||||
| 		if (!is_null($function)) { | ||||
| 			$content = $response->getContent(); | ||||
| 			$error   = $response->getError() | ||||
| 			                    ->getMessage(); | ||||
| 			call_user_func($function, $content, $error); | ||||
| 		} | ||||
| 		return $response; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Create a new cURL Request for the given URL | ||||
| 	 * | ||||
| 	 * @param string $url | ||||
| 	 * @return Request | ||||
| 	 */ | ||||
| 	protected static function newRequest($url) { | ||||
| 		$request = new Request($url); | ||||
| 		$request->getOptions() | ||||
| 		        ->set(CURLOPT_TIMEOUT, 10) | ||||
| 		        ->set(CURLOPT_HEADER, false) // don't display response header | ||||
| 		        ->set(CURLOPT_CRLF, true) // linux line feed | ||||
| 		        ->set(CURLOPT_ENCODING, '') // accept encoding | ||||
| 		        ->set(CURLOPT_USERAGENT, 'ManiaControl v' . ManiaControl::VERSION) // user-agent | ||||
| 		        ->set(CURLOPT_RETURNTRANSFER, true) // return instead of output content | ||||
| 		        ->set(CURLOPT_AUTOREFERER, true); // follow redirects | ||||
| 		return $request; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Load a URL via POST | ||||
| 	 * | ||||
| 	 * @param string   $url | ||||
| 	 * @param string   $content | ||||
| 	 * @param callable $function | ||||
| 	 * @return Response | ||||
| 	 */ | ||||
| 	public static function postUrl($url, $content = null, callable $function = null) { | ||||
| 		$request = static::newRequest($url) | ||||
| 		                 ->set(CURLOPT_POST, true); // post method | ||||
| 		if ($content) { | ||||
| 			$request->set(CURLOPT_POSTFIELDS, $content); // post content field | ||||
| 		} | ||||
| 		$response = $request->send(); | ||||
| 		if (!is_null($function)) { | ||||
| 			$content = $response->getContent(); | ||||
| 			$error   = $response->getError() | ||||
| 			                    ->getMessage(); | ||||
| 			call_user_func($function, $content, $error); | ||||
| 		} | ||||
| 		return $response; | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user