diff --git a/server/service/core/action/webhook/logs.go b/server/service/core/action/webhook/logs.go
index 4a8886a02..292e3e757 100644
--- a/server/service/core/action/webhook/logs.go
+++ b/server/service/core/action/webhook/logs.go
@@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"
"net/http"
+ "strconv"
"github.com/factly/dega-server/service/core/model"
"github.com/factly/x/errorx"
@@ -11,6 +12,7 @@ import (
"github.com/factly/x/middlewarex"
"github.com/factly/x/renderx"
"github.com/factly/x/requestx"
+ "github.com/go-chi/chi"
"github.com/spf13/viper"
)
@@ -32,6 +34,15 @@ type logPaging struct {
// @Success 200 {object} paging
// @Router /core/webhooks/logs [get]
func logs(w http.ResponseWriter, r *http.Request) {
+ webhookID := chi.URLParam(r, "webhook_id")
+ wID, err := strconv.Atoi(webhookID)
+
+ if err != nil {
+ loggerx.Error(err)
+ errorx.Render(w, errorx.Parser(errorx.InvalidID()))
+ return
+ }
+
uID, err := middlewarex.GetUser(r.Context())
if err != nil {
loggerx.Error(err)
@@ -46,7 +57,7 @@ func logs(w http.ResponseWriter, r *http.Request) {
return
}
- hukzURL := viper.GetString("hukz_url") + "/webhooks/logs?tag=app:dega&tag=space:" + fmt.Sprint(sID) + "&limit=" + r.URL.Query().Get("limit") + "&page=" + r.URL.Query().Get("page")
+ hukzURL := viper.GetString("hukz_url") + "/webhooks/space/" + fmt.Sprint(sID) + "/webhook/" + fmt.Sprint(wID) + "/logs?tag=app:dega&tag=space:" + fmt.Sprint(sID) + "&limit=" + r.URL.Query().Get("limit") + "&page=" + r.URL.Query().Get("page")
resp, err := requestx.Request("GET", hukzURL, nil, map[string]string{
"X-User": fmt.Sprint(uID),
diff --git a/server/service/core/action/webhook/route.go b/server/service/core/action/webhook/route.go
index 171617757..b799c6782 100644
--- a/server/service/core/action/webhook/route.go
+++ b/server/service/core/action/webhook/route.go
@@ -22,8 +22,8 @@ func Router() chi.Router {
r.With(util.CheckKetoPolicy(entity, "get")).Get("/", list)
r.With(util.CheckKetoPolicy(entity, "create")).Post("/", create)
- r.With(util.CheckKetoPolicy(entity, "get")).Get("/logs", logs)
r.Route("/{webhook_id}", func(r chi.Router) {
+ r.With(util.CheckKetoPolicy(entity, "get")).Get("/logs", logs)
r.With(util.CheckKetoPolicy(entity, "get")).Get("/", details)
r.With(util.CheckKetoPolicy(entity, "update")).Put("/", update)
r.With(util.CheckKetoPolicy(entity, "delete")).Delete("/", delete)
diff --git a/studio/src/actions/webhooklogs.js b/studio/src/actions/webhooklogs.js
new file mode 100644
index 000000000..017050346
--- /dev/null
+++ b/studio/src/actions/webhooklogs.js
@@ -0,0 +1,55 @@
+import axios from 'axios';
+import {
+ ADD_WEBHOOKLOGS,
+ ADD_WEBHOOKLOGS_REQUEST,
+ SET_WEBHOOKLOGS_LOADING,
+ RESET_WEBHOOKLOGS,
+} from '../constants/webhooklogs';
+import { addErrorNotification, addSuccessNotification } from './notifications';
+import { addEvents } from './events';
+import getError from '../utils/getError';
+import { WEBHOOKS_API } from '../constants/webhooks';
+
+export const getWebhooklogs = (id, query) => {
+ return (dispatch) => {
+ dispatch(loadingWebhookLogs());
+ return axios
+ .get(WEBHOOKS_API + '/' + id + '/logs', {
+ params: query,
+ })
+ .then((response) => {
+ dispatch(addWebhooklogList(response.data.nodes));
+ dispatch(
+ addWebhookRequest({
+ data: response.data.nodes.map((item) => item.id),
+ query: query,
+ total: response.data.total,
+ }),
+ );
+ })
+ .catch((error) => {
+ dispatch(addErrorNotification(getError(error)));
+ })
+ .finally(() => dispatch(stopWebhookLogsLoading()));
+ };
+};
+
+export const loadingWebhookLogs = () => ({
+ type: SET_WEBHOOKLOGS_LOADING,
+ payload: true,
+});
+export const stopWebhookLogsLoading = () => ({
+ type: SET_WEBHOOKLOGS_LOADING,
+ payload: false,
+});
+export const addWebhooklogList = (data) => ({
+ type: ADD_WEBHOOKLOGS,
+ payload: data,
+});
+export const addWebhookRequest = (data) => ({
+ type: ADD_WEBHOOKLOGS_REQUEST,
+ payload: data,
+});
+export const resetWebhooks = () => ({
+ type: RESET_WEBHOOKLOGS,
+});
\ No newline at end of file
diff --git a/studio/src/constants/webhooklogs.js b/studio/src/constants/webhooklogs.js
new file mode 100644
index 000000000..64cc3d3be
--- /dev/null
+++ b/studio/src/constants/webhooklogs.js
@@ -0,0 +1,6 @@
+//Actions
+export const ADD_WEBHOOKLOG = 'ADD_WEBHOOKLOG';
+export const ADD_WEBHOOKLOGS = 'ADD_WEBHOOKLOGS';
+export const ADD_WEBHOOKLOGS_REQUEST = 'ADD_WEBHOOKLOGS_REQUEST';
+export const RESET_WEBHOOKLOGS = 'RESET_WEBHOOKLOGS';
+export const SET_WEBHOOKLOGS_LOADING = 'SET_WEBHOOKLOGS_LOADING';
\ No newline at end of file
diff --git a/studio/src/pages/webhooks/EditWebhook.js b/studio/src/pages/webhooks/EditWebhook.js
index 96a4412d8..47dccf78d 100644
--- a/studio/src/pages/webhooks/EditWebhook.js
+++ b/studio/src/pages/webhooks/EditWebhook.js
@@ -4,9 +4,10 @@ import { useDispatch, useSelector } from 'react-redux';
import { updateWebhook, getWebhook } from '../../actions/webhooks';
import { useHistory } from 'react-router-dom';
import { useParams } from 'react-router-dom';
-import { Skeleton } from 'antd';
+import { Skeleton , Row , Col } from 'antd';
import RecordNotFound from '../../components/ErrorsAndImage/RecordNotFound';
import { Helmet } from 'react-helmet';
+import Webhooklogs from './webhooklogs';
function EditWebhook() {
const history = useHistory();
@@ -37,7 +38,10 @@ function EditWebhook() {
return (
<>