Skip to content

Commit 49af29f

Browse files
Merge pull request rakutentech#33 from rakutentech/develop
Show memory usage
2 parents b86d2f9 + 78e0e36 commit 49af29f

File tree

4 files changed

+61
-46
lines changed

4 files changed

+61
-46
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,5 @@ Fixing lints
7979

8080
- Initial Release
8181
- v1.9 Added improvements such as status code, response headers, custom request headers and fixed issues reported by users
82+
- v1.10 Show PHP memory usage, gzip encoding fix
8283

resources/views/index.blade.php

Lines changed: 43 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<title>{{ config('request-docs.document_name') }}</title>
88
<meta name="description" content="Laravel Request Docs">
99
<meta name="keywords" content="">
10+
<meta name="csrf-token" content="{{ csrf_token() }}">
1011
<link href="https://cdn.jsdelivr.net/npm/tailwindcss/dist/tailwind.min.css" rel="stylesheet">
1112
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
1213
<script src="https://unpkg.com/vue-prism-editor"></script>
@@ -128,8 +129,20 @@
128129
</span>
129130
<span class="text-xs" v-bind:class="docs[{{$index}}]['isActiveSidebar'] ? 'font-bold':''">
130131
<span class="text-gray-800 pr-1 pl-1" v-if="docs[{{$index}}]['responseOk'] === null">{{$doc['uri']}}</span>
131-
<span class="font-bold text-green-600 border rounded-full pr-1 pl-1 border-green-600" v-if="docs[{{$index}}]['responseOk'] === true">{{$doc['uri']}} - SUCCESS</span>
132-
<span class="font-bold text-red-600 border rounded-full pr-1 pl-1 border-red-500" v-if="docs[{{$index}}]['responseOk'] === false">{{$doc['uri']}} - ERROR</span>
132+
<span class="font-bold text-green-600 border rounded-full pr-1 pl-1 border-green-600" v-if="docs[{{$index}}]['responseOk'] === true">
133+
{{$doc['uri']}} -
134+
<span
135+
class="inline-flex text-xs"
136+
v-text="'Status:'+docs[{{$index}}]['responseCode'] + ', Took:' + docs[{{$index}}]['responseTime'] + 'ms'">
137+
</span>
138+
</span>
139+
<span class="font-bold text-red-600 border rounded-full pr-1 pl-1 border-red-500" v-if="docs[{{$index}}]['responseOk'] === false">
140+
{{$doc['uri']}} -
141+
<span
142+
class="inline-flex text-xs"
143+
v-text="'Status:'+docs[{{$index}}]['responseCode'] + ', Took:' + docs[{{$index}}]['responseTime'] + 'ms'">
144+
</span>
145+
</span>
133146
</span>
134147
</a>
135148
</td>
@@ -327,21 +340,6 @@ class="animate-spin h-4 w-4 rounded-full bg-transparent border-2 border-transpar
327340
Run
328341
</button>
329342

330-
331-
<div v-if="docs[{{$index}}]['bearer'] && docs[{{$index}}]['try']" class="mb-4">
332-
<label class="block text-gray-700 text-sm font-bold mb-2" for="token">
333-
Bearer Token
334-
</label>
335-
<input
336-
v-model="token"
337-
class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"
338-
id="token"
339-
type="text"
340-
placeholder="Bearer Token"
341-
autocomplete="off"
342-
/>
343-
</div>
344-
345343
<div class="grid grid-cols-1 mt-3 pr-2 overflow-auto">
346344
<div class="">
347345
<div v-if="docs[{{$index}}]['try']">
@@ -404,6 +402,16 @@ class="inline-flex text-xs font-bold text-red-900"
404402
</span>
405403
</td>
406404
</tr>
405+
<tr>
406+
<td class="align-left pl-2 pr-2 bg-gray-100 border-r-2">Memory Usage</td>
407+
<td class="align-left pl-2 pr-2 break-all">
408+
<span
409+
v-if="docs[{{$index}}]['memory']"
410+
class="inline-flex text-xs font-bold text-red-900"
411+
v-text="docs[{{$index}}]['memory']">
412+
</span>
413+
</td>
414+
</tr>
407415
<tr>
408416
<td class="align-left pl-2 pr-2 bg-gray-100 border-r-2">Response Time</td>
409417
<td class="align-left pl-2 pr-2 break-all">
@@ -557,6 +565,7 @@ class="my-prism-editor"
557565
doc.cancel = true
558566
doc.loading = false
559567
doc.responseTime = null
568+
doc.memory = null
560569
// check in array
561570
if (doc.methods[0] == 'GET') {
562571
var idx = 1
@@ -608,17 +617,13 @@ class="my-prism-editor"
608617
el: '#app',
609618
data: {
610619
docs: docs,
611-
token: '',
612620
showRoute: false,
613621
requestHeaders: ''
614622
},
615623
created: function () {
616-
this.requestHeaders = 'X-CSRF-TOKEN:{{ csrf_token() }}'
617-
this.requestHeaders += '\n'
618-
this.requestHeaders += 'Accept:application/json'
619-
this.requestHeaders += '\n'
620-
this.requestHeaders += 'Authorization:Bearer ' + this.token
621-
this.requestHeaders += '\n'
624+
axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
625+
axios.defaults.headers.common['Authorization'] = 'Bearer '
626+
this.requestHeaders = JSON.stringify(axios.defaults.headers.common, null, 2)
622627
},
623628
methods: {
624629
highlightSidebar(idx) {
@@ -633,6 +638,7 @@ class="my-prism-editor"
633638
return Prism.highlight(code, Prism.languages.atom, "js");
634639
},
635640
request(doc) {
641+
636642
// convert string to lower case
637643
var method = doc['methods'][0].toLowerCase()
638644
@@ -645,26 +651,21 @@ class="my-prism-editor"
645651
doc.response = "Cannot parse JSON request body"
646652
return
647653
}
654+
655+
try {
656+
axios.defaults.headers.common = JSON.parse(this.requestHeaders)
657+
axios.defaults.headers.common['X-Request-LRD'] = 'lrd'
658+
} catch (e) {
659+
doc.response = "Cannot parse JSON request headers"
660+
return
661+
}
648662
doc.queries = []
649663
doc.response = null
650664
doc.responseOk = null
651665
doc.responseTime = null
652666
doc.responseHeaders = null
653667
doc.loading = true
654668
655-
headers = this.requestHeaders.split("\n")
656-
657-
axios.defaults.headers.common['X-Request-LRD'] = 'lrd'
658-
659-
for (header of headers) {
660-
let h = header.split(":")
661-
let key = h[0]
662-
let value = h[1]
663-
if (key && value) {
664-
axios.defaults.headers.common[key.trim()] = value.trim()
665-
}
666-
}
667-
668669
let startTime = new Date().getTime();
669670
axios({
670671
method: method,
@@ -673,11 +674,12 @@ class="my-prism-editor"
673674
decompress: true,
674675
withCredentials: true
675676
}).then(response => {
676-
console.log(response)
677+
console.log("response", response)
677678
doc.responseOk = true
678679
if (response && response.data) {
679680
if (response.data['_lrd']) {
680681
doc.queries = response.data['_lrd']['queries']
682+
doc.memory = response.data['_lrd']['memory']
681683
delete response.data['_lrd']
682684
}
683685
doc.response = JSON.stringify(response.data, null, 2)
@@ -687,10 +689,12 @@ class="my-prism-editor"
687689
688690
}).catch(error => {
689691
doc.responseOk = false
690-
console.log(error)
692+
console.log("error", error)
691693
if (error && error.response && error.response.data) {
694+
console.log("error response", error.response)
692695
if (error.response.data['_lrd']) {
693696
doc.queries = error.response.data['_lrd']['queries']
697+
doc.memory = error.response.data['_lrd']['memory']
694698
delete error.response.data['_lrd']
695699
}
696700
doc.responseCode = error.response.status;

src/LaravelRequestDocs.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,6 @@ public function getControllersInfo(): array
7979
$getStartWord = strrpos(explode('@', $route->action['controller'])[0], '\\') + 1;
8080
$controllerName = substr($controllerFullPath, $getStartWord);
8181

82-
/// Has Auth Token
83-
$hasAuthToken = !is_array($route->action['middleware']) ? [$route->action['middleware']] : $route->action['middleware'];
84-
8582
$method = explode('@', $route->action['controller'])[1];
8683
$httpMethod = $route->methods[0];
8784
foreach ($controllersInfo as $controllerInfo) {
@@ -100,8 +97,7 @@ public function getControllersInfo(): array
10097
'method' => $method,
10198
'httpMethod' => $httpMethod,
10299
'rules' => [],
103-
'docBlock' => "",
104-
'bearer' => in_array('auth:api', $hasAuthToken)
100+
'docBlock' => ""
105101
];
106102
} catch (Exception $e) {
107103
continue;

src/LaravelRequestDocsMiddleware.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,22 @@ public function handle($request, Closure $next, ...$guards)
2525
$response = $next($request);
2626

2727
$content = $response->getData();
28-
$content->_lrd = ['queries' => $this->queries];
29-
$response->setData($content);
28+
$content->_lrd = [
29+
'queries' => $this->queries,
30+
'memory' => (string) round(memory_get_peak_usage(true) / 1048576, 2) . "MB",
31+
];
32+
$jsonContent = json_encode($content);
33+
34+
if (in_array('gzip', $request->getEncodings()) && function_exists('gzencode')) {
35+
$level = 9; // best compression;
36+
$jsonContent = gzencode($jsonContent, $level);
37+
$response->headers->add([
38+
'Content-type' => 'application/json; charset=utf-8',
39+
'Content-Length'=> strlen($jsonContent),
40+
'Content-Encoding' => 'gzip',
41+
]);
42+
}
43+
$response->setContent($jsonContent);
3044
return $response;
3145
}
3246

0 commit comments

Comments
 (0)