1 <?php namespace App\Http\Controllers;
2
3 use Illuminate\Http\Response as IlluminateResponse;
4
5 class ApiController extends Controller {
6
7 8 9
10 protected $statusCode = IlluminateResponse::HTTP_OK;
11
12 13 14
15 public function getStatusCode()
16 {
17 return $this->statusCode;
18 }
19
20 21 22 23
24 public function setStatusCode($statusCode)
25 {
26 $this->statusCode = $statusCode;
27
28 return $this;
29 }
30
31 32 33 34
35 public function respondNotFound($message = 'Page Not Found.')
36 {
37 return $this->setStatusCode(IlluminateResponse::HTTP_NOT_FOUND)->respondWithError($message);
38 }
39
40 41 42 43
44 public function respondInternalError($message = 'Dogodila se greška!')
45 {
46 return $this->setStatusCode(IlluminateResponse::HTTP_INTERNAL_SERVER_ERROR)->respondWithError($message);
47 }
48
49 50 51 52
53 public function respondCreated($message)
54 {
55 return $this->setStatusCode(IlluminateResponse::HTTP_CREATED)->respond([
56 'message' => $message
57 ]);
58 }
59
60 61 62 63
64 public function respondOk($message)
65 {
66 return $this->respond([
67 'message' => $message
68 ]);
69 }
70
71 72 73 74
75 public function respondWithValidationError($message = 'Neuspješna validacija!')
76 {
77 return $this->setStatusCode(IlluminateResponse::HTTP_UNPROCESSABLE_ENTITY)->respondWithError([
78 'message' => $message
79 ]);
80 }
81
82 83 84 85 86
87 public function respond($data, $headers = [])
88 {
89 return response()->json($data, $this->getStatusCode(), $headers);
90 }
91
92 93 94 95
96 public function respondWithError($message)
97 {
98 return $this->respond([
99 'error' => [
100 'message' => $message,
101 'status_code' => $this->getStatusCode()
102 ]
103 ]);
104 }
105
106 public function respondWithCORS($data)
107 {
108 return $this->respond($data, $this->setCORSHeaders());
109 }
110
111 private function setCORSHeaders()
112 {
113 $header['Access-Control-Allow-Origin'] = '*';
114 $header['Allow'] = 'GET, POST, OPTIONS';
115 $header['Access-Control-Allow-Headers'] = 'Origin, Content-Type, Accept, Authorization, X-Request-With';
116 $header['Access-Control-Allow-Credentials'] = 'true';
117
118 return $header;
119 }
120
121 }