Skip to content

Commit 4c1d789

Browse files
committed
wip
1 parent 795c322 commit 4c1d789

File tree

4 files changed

+54
-32
lines changed

4 files changed

+54
-32
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "doliveira/laravel-api-response-builder",
3-
"version": "1.0.4",
3+
"version": "1.0.5",
44
"description": "A Laravel package designed to simplify the creation of structured and formatted API responses (JSON, XML) with custom status codes, messages, and data. XML support is currently under construction.",
55
"type": "library",
66
"license": "MIT",

src/BaseResponse.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,21 @@ protected function getJsonOptions(): int
7373
return Config::get('responsebuilder.json_options', JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
7474
}
7575

76-
protected function getLoggingSetting(): bool
76+
protected function getLoggingResponse(): bool
7777
{
7878
return Config::get('responsebuilder.log_responses', false);
7979
}
8080

81+
protected function getLoggingRequest(): bool
82+
{
83+
return Config::get('responsebuilder.log_requests', false);
84+
}
85+
86+
protected function getLoggingResponseTime(): bool
87+
{
88+
return Config::get('responsebuilder.log_response_time', false);
89+
}
90+
8191
protected function getLoggingLevel(): string
8292
{
8393
return Config::get('responsebuilder.logging_level', 'info');

src/JsonResponse.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace Doliveira\LaravelResponseBuilder;
44

55
use Illuminate\Http\JsonResponse as IlluminateJsonResponse;
6-
use Illuminate\Support\Facades\Lang;
76

87
/**
98
* Class JsonResponse
@@ -148,7 +147,6 @@ public static function errorWithSuggestions($statusCode, $message = null, $sugge
148147
public function buildResponse(): IlluminateJsonResponse
149148
{
150149
LogResponse::logRequest();
151-
152150
$startTime = microtime(true);
153151

154152
$structure = $this->getResponseStructure();
@@ -162,10 +160,7 @@ public function buildResponse(): IlluminateJsonResponse
162160
$jsonResponse = json_encode($response, $jsonOptions);
163161
$response = response()->json($response, $this->statusCode);
164162

165-
if ($this->getLoggingSetting()) {
166-
LogResponse::log(new IlluminateJsonResponse($jsonResponse, $this->statusCode));
167-
}
168-
163+
LogResponse::logResponse(new IlluminateJsonResponse($jsonResponse, $this->statusCode));
169164
LogResponse::logResponseTime($startTime);
170165

171166
return $response;

src/LogResponse.php

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,28 +15,19 @@ class LogResponse
1515
* @param IlluminateJsonResponse $response
1616
* @return void
1717
*/
18-
public static function log(IlluminateJsonResponse $response): void
18+
public static function logResponse(IlluminateJsonResponse $response): void
1919
{
20-
$validLevels = ['emergency', 'alert', 'critical', 'error', 'warning', 'notice', 'info', 'debug'];
21-
$level = Config::get('responsebuilder.logging_level', 'info');
22-
23-
if (!in_array($level, $validLevels, true)) {
24-
$level = 'info'; // Default level
20+
if (Config::get('responsebuilder.log_responses', false) === false) {
21+
return;
2522
}
2623

27-
2824
$logData = [
2925
'status' => $response->status(),
3026
'headers' => $response->headers->all(),
3127
'content' => self::sanitizeContent($response->getContent()),
3228
];
3329

34-
$formattedLog = json_encode($logData, JSON_PRETTY_PRINT);
35-
36-
37-
if (Config::get('responsebuilder.log_responses', false)) {
38-
Log::$level($formattedLog);
39-
}
30+
self::logFormattedData($logData);
4031
}
4132

4233
/**
@@ -46,7 +37,7 @@ public static function log(IlluminateJsonResponse $response): void
4637
*/
4738
public static function logRequest(): void
4839
{
49-
if (Config::get('responsebuilder.log_requests', false)) {
40+
if (Config::get('responsebuilder.log_requests', false) === false) {
5041
return;
5142
}
5243

@@ -59,9 +50,7 @@ public static function logRequest(): void
5950
'body' => $request->all(),
6051
];
6152

62-
$formattedLog = json_encode($logData, JSON_PRETTY_PRINT);
63-
64-
Log::info('Request Data: ' . $formattedLog);
53+
self::logFormattedData($logData, 'Request Data: ');
6554
}
6655

6756
/**
@@ -72,7 +61,7 @@ public static function logRequest(): void
7261
*/
7362
public static function logResponseTime(float $startTime): void
7463
{
75-
if (Config::get('responsebuilder.log_response_time', false)) {
64+
if (Config::get('responsebuilder.log_response_time', false) === false) {
7665
return;
7766
}
7867

@@ -83,17 +72,45 @@ public static function logResponseTime(float $startTime): void
8372
'response_time' => number_format($responseTime * 1000, 2) . ' ms',
8473
];
8574

86-
$formattedLog = json_encode($logData, JSON_PRETTY_PRINT);
87-
88-
Log::info('Response Time: ' . $formattedLog);
75+
self::logFormattedData($logData, 'Response Time: ');
8976
}
9077

9178
/**
92-
* Sanitize response content to remove sensitive information.
79+
* Log formatted data.
9380
*
94-
* @param string $content
95-
* @return string
81+
* @param array $logData
82+
* @param string $prefix
83+
* @return void
9684
*/
85+
private static function logFormattedData(array $logData, string $prefix = ''): void
86+
{
87+
$level = self::getLogLevel();
88+
$channel = self::getLogChannel();
89+
90+
$formattedLog = json_encode($logData, JSON_PRETTY_PRINT);
91+
92+
Log::channel($channel)->log($level, $prefix . $formattedLog);
93+
}
94+
95+
private static function getLogChannel(): string
96+
{
97+
$level = self::getLogLevel();
98+
99+
return "responsebuilder_{$level}";
100+
}
101+
102+
private static function getLogLevel(): string
103+
{
104+
$validLevels = ['emergency', 'alert', 'critical', 'error', 'warning', 'notice', 'info', 'debug'];
105+
$level = Config::get('responsebuilder.logging_level', 'info');
106+
107+
if (!in_array($level, $validLevels, true)) {
108+
$level = 'info'; // Default level
109+
}
110+
111+
return $level;
112+
}
113+
97114
private static function sanitizeContent(string $content): string
98115
{
99116
$decodedContent = json_decode($content, true);

0 commit comments

Comments
 (0)