/var/www/html_de/wp-content/plugins/woocommerce/packages/email-editor/src/exceptions.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php declare(strict_types 1);

// phpcs:ignoreFile PSR1.Classes.ClassDeclaration
namespace Automattic\WooCommerce\EmailEditor;

/**
 * Provides information for converting exceptions to HTTP responses.
 */
interface HttpAwareException {
  public function 
getHttpStatusCode(): int;
}


/**
 * Frames all exceptions ("$e instanceof Automattic\WooCommerce\EmailEditor\Exception").
 */
abstract class Exception extends \Exception {
  
/** @var string[] */
  
private $errors = [];

  final public function 
__construct(string $message ''int $code 0, ?\Throwable $previous null) {
    
parent::__construct($message$code$previous);
  }

  
/** @return static */
  
public static function create(?\Throwable $previous null) {
    return new static(
''0$previous);
  }

  
/** @return static */
  
public function withMessage(string $message) {
    
$this->message $message;
    return 
$this;
  }

  
/** @return static */
  
public function withCode(int $code) {
    
$this->code $code;
    return 
$this;
  }

  
/**
   * @param string[] $errors
   * @return static
   */
  
public function withErrors(array $errors) {
    
$this->errors $errors;
    return 
$this;
  }

  
/** @return static */
  
public function withError(string $idstring $error) {
    
$this->errors[$id] = $error;
    return 
$this;
  }

  
/**
   * @return string[]
   */
  
public function getErrors(): array {
    return 
$this->errors;
  }
}


/**
 * USE: Generic runtime error. When possible, use a more specific exception instead.
 * API: 500 Server Error (not HTTP-aware)
 */
class RuntimeException extends Exception {}


/**
 * USE: When wrong data VALUE is received.
 * API: 400 Bad Request
 */
class UnexpectedValueException extends RuntimeException implements HttpAwareException {
  public function 
getHttpStatusCode(): int {
    return 
400;
  }
}


/**
 * USE: When an action is forbidden for given actor (although generally valid).
 * API: 403 Forbidden
 */
class AccessDeniedException extends UnexpectedValueException implements HttpAwareException {
  public function 
getHttpStatusCode(): int {
    return 
403;
  }
}


/**
 * USE: When the main resource we're interested in doesn't exist.
 * API: 404 Not Found
 */
class NotFoundException extends UnexpectedValueException implements HttpAwareException {
  public function 
getHttpStatusCode(): int {
    return 
404;
  }
}


/**
 * USE: When the main action produces conflict (i.e. duplicate key).
 * API: 409 Conflict
 */
class ConflictException extends UnexpectedValueException implements HttpAwareException {
  public function 
getHttpStatusCode(): int {
    return 
409;
  }
}


/**
 * USE: An application state that should not occur. Can be subclassed for feature-specific exceptions.
 * API: 500 Server Error (not HTTP-aware)
 */
class InvalidStateException extends RuntimeException {}

class 
NewsletterProcessingException extends Exception {}