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; 28 29/** 30 * The response returned from the service. 31 */ 32class Response 33{ 34 /** 35 * Succes or failure. 36 * @var boolean 37 */ 38 private $success = false; 39 40 /** 41 * Error code strings. 42 * @var array 43 */ 44 private $errorCodes = array(); 45 46 /** 47 * Build the response from the expected JSON returned by the service. 48 * 49 * @param string $json 50 * @return \ReCaptcha\Response 51 */ 52 public static function fromJson($json) 53 { 54 $responseData = json_decode($json, true); 55 56 if (!$responseData) { 57 return new Response(false, array('invalid-json')); 58 } 59 60 if (isset($responseData['success']) && $responseData['success'] == true) { 61 return new Response(true); 62 } 63 64 if (isset($responseData['error-codes']) && is_array($responseData['error-codes'])) { 65 return new Response(false, $responseData['error-codes']); 66 } 67 68 return new Response(false); 69 } 70 71 /** 72 * Constructor. 73 * 74 * @param boolean $success 75 * @param array $errorCodes 76 */ 77 public function __construct($success, array $errorCodes = array()) 78 { 79 $this->success = $success; 80 $this->errorCodes = $errorCodes; 81 } 82 83 /** 84 * Is success? 85 * 86 * @return boolean 87 */ 88 public function isSuccess() 89 { 90 return $this->success; 91 } 92 93 /** 94 * Get error codes. 95 * 96 * @return array 97 */ 98 public function getErrorCodes() 99 { 100 return $this->errorCodes; 101 } 102} 103