Reviewed-on: #277 Reviewed-by: Mikolaj Widla <widlam@noreply.example.com> Co-authored-by: Adam Bem <adam.bem@zoho.eu> Co-committed-by: Adam Bem <adam.bem@zoho.eu>
69 lines
2.2 KiB
Vue
69 lines
2.2 KiB
Vue
<script setup lang="ts">
|
|
import {ref, type Ref } from 'vue';
|
|
|
|
const emit = defineEmits([
|
|
'click:showHeaders',
|
|
'click:showBody',
|
|
])
|
|
|
|
interface historyRecord {
|
|
clientUUID : String,
|
|
dateTimeStamp: String,
|
|
headers : Headers ,
|
|
httpMethod: String,
|
|
requestBody: String
|
|
}
|
|
|
|
interface Headers {
|
|
'content-type': String,
|
|
[propName: string]: any;
|
|
}
|
|
|
|
const clientUUID = localStorage.getItem("clientUUID")
|
|
const fetchLink = window.location.protocol + "//" + window.location.hostname + "/mock/api/event";
|
|
const historyRecords : Ref<Array<historyRecord>> = ref([]);
|
|
|
|
|
|
fetch(fetchLink+"/"+clientUUID).then(response => response.json()).then(data => { historyRecords.value = data });
|
|
|
|
function parseTimeStamp(timestamp : String){
|
|
return timestamp.substring(10,19).replace("T"," ");
|
|
}
|
|
|
|
function showHeaders(headers: Object, index : number){
|
|
emit('click:showHeaders',headers, index)
|
|
}
|
|
|
|
function showBody(body: String , index : number, contentType: String){
|
|
|
|
emit('click:showBody',body, index, contentType )
|
|
}
|
|
|
|
function refreshHistory(){
|
|
fetch(fetchLink+"/"+clientUUID).then(response => response.json()).then(data => { historyRecords.value = data });
|
|
}
|
|
|
|
</script>
|
|
|
|
<template>
|
|
<div class="h-28 text-center text-grey-900 dark:text-white">
|
|
<table class="w-full">
|
|
<tr>
|
|
<th>Time</th>
|
|
<th>Request <br>HTTP Method</th>
|
|
<th>Request Headers</th>
|
|
<th>Request Body</th>
|
|
<th class="text-2xl"><button @click="refreshHistory()">⟳</button></th>
|
|
</tr>
|
|
<tr v-for="(item , index) in historyRecords" :key="index">
|
|
<td> {{ parseTimeStamp(item.dateTimeStamp) }} </td>
|
|
<td> {{ item.httpMethod }} </td>
|
|
<td> <button @click="showHeaders(item.headers, index)" class="underline">Show Headers</button> </td>
|
|
<td>
|
|
<button v-if="item.requestBody.length != 0" @click="showBody(item.requestBody, index, item.headers['content-type'])" class="underline">Show Body</button>
|
|
<span v-else>Empty</span>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</template> |