1<?php 2/** 3 * This is a PHP library that handles calling reCAPTCHA. 4 * 5 * @copyright Copyright (c) 2015, Google Inc. 6 * @link http://www.google.com/recaptcha 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining a copy 9 * of this software and associated documentation files (the "Software"), to deal 10 * in the Software without restriction, including without limitation the rights 11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 * copies of the Software, and to permit persons to whom the Software is 13 * furnished to do so, subject to the following conditions: 14 * 15 * The above copyright notice and this permission notice shall be included in 16 * all copies or substantial portions of the Software. 17 * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 * THE SOFTWARE. 25 */ 26 27namespace ReCaptcha\RequestMethod; 28 29/** 30 * Convenience wrapper around native socket and file functions to allow for 31 * mocking. 32 */ 33class Socket 34{ 35 private $handle = null; 36 37 /** 38 * fsockopen 39 * 40 * @see http://php.net/fsockopen 41 * @param string $hostname 42 * @param int $port 43 * @param int $errno 44 * @param string $errstr 45 * @param float $timeout 46 * @return resource 47 */ 48 public function fsockopen($hostname, $port = -1, &$errno = 0, &$errstr = '', $timeout = null) 49 { 50 $this->handle = fsockopen($hostname, $port, $errno, $errstr, (is_null($timeout) ? ini_get("default_socket_timeout") : $timeout)); 51 52 if ($this->handle != false && $errno === 0 && $errstr === '') { 53 return $this->handle; 54 } else { 55 return false; 56 } 57 } 58 59 /** 60 * fwrite 61 * 62 * @see http://php.net/fwrite 63 * @param string $string 64 * @param int $length 65 * @return int | bool 66 */ 67 public function fwrite($string, $length = null) 68 { 69 return fwrite($this->handle, $string, (is_null($length) ? strlen($string) : $length)); 70 } 71 72 /** 73 * fgets 74 * 75 * @see http://php.net/fgets 76 * @param int $length 77 */ 78 public function fgets($length = null) 79 { 80 return fgets($this->handle, $length); 81 } 82 83 /** 84 * feof 85 * 86 * @see http://php.net/feof 87 * @return bool 88 */ 89 public function feof() 90 { 91 return feof($this->handle); 92 } 93 94 /** 95 * fclose 96 * 97 * @see http://php.net/fclose 98 * @return bool 99 */ 100 public function fclose() 101 { 102 return fclose($this->handle); 103 } 104} 105