1<?php
2/*
3 * Copyright 2014 Google Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18namespace Google\Service;
19
20use Google\Exception as GoogleException;
21
22class Exception extends GoogleException
23{
24  /**
25   * Optional list of errors returned in a JSON body of an HTTP error response.
26   */
27  protected $errors = array();
28
29  /**
30   * Override default constructor to add the ability to set $errors and a retry
31   * map.
32   *
33   * @param string $message
34   * @param int $code
35   * @param \Exception|null $previous
36   * @param [{string, string}] errors List of errors returned in an HTTP
37   * response.  Defaults to [].
38   */
39  public function __construct(
40      $message,
41      $code = 0,
42      Exception $previous = null,
43      $errors = array()
44  ) {
45    if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
46      parent::__construct($message, $code, $previous);
47    } else {
48      parent::__construct($message, $code);
49    }
50
51    $this->errors = $errors;
52  }
53
54  /**
55   * An example of the possible errors returned.
56   *
57   * {
58   *   "domain": "global",
59   *   "reason": "authError",
60   *   "message": "Invalid Credentials",
61   *   "locationType": "header",
62   *   "location": "Authorization",
63   * }
64   *
65   * @return [{string, string}] List of errors return in an HTTP response or [].
66   */
67  public function getErrors()
68  {
69    return $this->errors;
70  }
71}
72