Completed
Push — master ( 9c2b09...5e7564 )
by Francis
01:33
created

RESTResponse   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Importance

Changes 5
Bugs 0 Features 1
Metric Value
eloc 22
c 5
b 0
f 1
dl 0
loc 70
rs 10
wmc 9

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A __toString() 0 3 2
A json() 0 6 1
A send() 0 9 5
1
<?php
2
defined('BASEPATH') OR exit('No direct script access allowed');
3
4
class RESTResponse extends CI_Controller
0 ignored issues
show
Bug introduced by
The type CI_Controller was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
5
{
6
  // Response Codes
7
  // 40*
8
  const BAD_REQUEST           = 400;
9
  const UN_AUTHORIZED         = 401;
10
  const FORBIDDEN             = 403;
11
  const NOT_ACCEPTABLE        = 406;
12
  const TOO_MANY_REQUESTS     = 429;
13
  // 50*
14
  const INTERNAL_SERVER_ERROR = 500;
15
  const NOT_IMPLEMENTED       = 501;
16
  /**
17
   * [protected HTTP Response Code]
18
   * @var int
19
   */
20
  protected $code;
21
  /**
22
   * [protected Response Data]
23
   * @var mixed
24
   */
25
  protected $data;
26
  /**
27
   * [protected Shoud Response be JSON Encoded?]
28
   * @var bool
29
   */
30
  protected $json;
31
  function __construct($data=null, int $code=null)
32
  {
33
    $this->data = $data;
34
    $this->code = $code;
35
  }
36
  /**
37
   * [__toString description]
38
   * @date   2019-11-09
39
   * @return string     [description]
40
   */
41
  public function __toString():string
42
  {
43
    return !$this->json ? $this->data : n_encode($this->data);
0 ignored issues
show
Bug introduced by
The function n_encode was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

43
    return !$this->json ? $this->data : /** @scrutinizer ignore-call */ n_encode($this->data);
Loading history...
44
  }
45
  /**
46
   * [json description]
47
   * @date   2019-11-11
48
   * @param  [type]       $data [description]
0 ignored issues
show
Documentation Bug introduced by
The doc comment [type] at position 0 could not be parsed: Unknown type name '[' at position 0 in [type].
Loading history...
49
   * @param  int          $code [description]
50
   * @return RESTResponse       [description]
51
   */
52
  public function json($data, int $code):RESTResponse
53
  {
54
    $this->json = true;
55
    $this->code = $code;
56
    $this->data = $data;
57
    return $this;
58
  }
59
  
60
  /**
61
   * [send description]
62
   * @date  2019-11-11
63
   * @param boolean    $exit [description]
64
   */
65
  public function send(bool $exit=false):void
66
  {
67
    http_response_code($this->code ?? 200);
68
69
    if ($this->json) header('Content-Type: application/json');
70
71
    if ($this->data !== null) echo !$this->json ? $this->data : json_encode($this->data, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
72
73
    if ($exit) exit(EXIT_SUCCESS);
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
Bug introduced by
The constant EXIT_SUCCESS was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
74
  }
75
}
76
?>
0 ignored issues
show
Best Practice introduced by
It is not recommended to use PHP's closing tag ?> in files other than templates.

Using a closing tag in PHP files that only contain PHP code is not recommended as you might accidentally add whitespace after the closing tag which would then be output by PHP. This can cause severe problems, for example headers cannot be sent anymore.

A simple precaution is to leave off the closing tag as it is not required, and it also has no negative effects whatsoever.

Loading history...
77