Subversion Repositories php_guestbook

Rev

Blame | Last modification | View Log | RSS feed

  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.  
  27. namespace ReCaptcha;
  28.  
  29. /**
  30.  * The response returned from the service.
  31.  */
  32. class Response
  33. {
  34.     /**
  35.      * Success 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.      * The hostname of the site where the reCAPTCHA was solved.
  48.      * @var string
  49.      */
  50.     private $hostname;
  51.  
  52.     /**
  53.      * Build the response from the expected JSON returned by the service.
  54.      *
  55.      * @param string $json
  56.      * @return \ReCaptcha\Response
  57.      */
  58.     public static function fromJson($json)
  59.     {
  60.         $responseData = json_decode($json, true);
  61.  
  62.         if (!$responseData) {
  63.             return new Response(false, array('invalid-json'));
  64.         }
  65.  
  66.         $hostname = isset($responseData['hostname']) ? $responseData['hostname'] : null;
  67.  
  68.         if (isset($responseData['success']) && $responseData['success'] == true) {
  69.             return new Response(true, array(), $hostname);
  70.         }
  71.  
  72.         if (isset($responseData['error-codes']) && is_array($responseData['error-codes'])) {
  73.             return new Response(false, $responseData['error-codes'], $hostname);
  74.         }
  75.  
  76.         return new Response(false, array(), $hostname);
  77.     }
  78.  
  79.     /**
  80.      * Constructor.
  81.      *
  82.      * @param boolean $success
  83.      * @param array $errorCodes
  84.      * @param string $hostname
  85.      */
  86.     public function __construct($success, array $errorCodes = array(), $hostname = null)
  87.     {
  88.         $this->success = $success;
  89.         $this->errorCodes = $errorCodes;
  90.         $this->hostname = $hostname;
  91.     }
  92.  
  93.     /**
  94.      * Is success?
  95.      *
  96.      * @return boolean
  97.      */
  98.     public function isSuccess()
  99.     {
  100.         return $this->success;
  101.     }
  102.  
  103.     /**
  104.      * Get error codes.
  105.      *
  106.      * @return array
  107.      */
  108.     public function getErrorCodes()
  109.     {
  110.         return $this->errorCodes;
  111.     }
  112.  
  113.     /**
  114.      * Get hostname.
  115.      *
  116.      * @return string
  117.      */
  118.     public function getHostname()
  119.     {
  120.       return $this->hostname;
  121.     }
  122. }
  123.