diff --git a/api/integration.go b/api/integration.go index 0a14c26e8..835be0fad 100644 --- a/api/integration.go +++ b/api/integration.go @@ -161,7 +161,7 @@ func ReceiveIntegration(w http.ResponseWriter, r *http.Request) { continue } - RunIntegration(integration, project, r) + RunIntegration(integration, project, r, payload) } w.WriteHeader(http.StatusNoContent) @@ -227,7 +227,7 @@ func MatchCompare(value interface{}, method db.IntegrationMatchMethodType, expec } } -func RunIntegration(integration db.Integration, project db.Project, r *http.Request) { +func RunIntegration(integration db.Integration, project db.Project, r *http.Request, payload []byte) { log.Info(fmt.Sprintf("Running integration %d", integration.ID)) @@ -241,9 +241,8 @@ func RunIntegration(integration db.Integration, project db.Project, r *http.Requ extractValues = append(extractValues, extractValuesForExtractor...) - var extractedResults = Extract(extractValues, r) + var extractedResults = Extract(extractValues, r, payload) - // XXX: LOG AN EVENT HERE environmentJSONBytes, err := json.Marshal(extractedResults) if err != nil { log.Error(err) @@ -252,9 +251,10 @@ func RunIntegration(integration db.Integration, project db.Project, r *http.Requ var environmentJSONString = string(environmentJSONBytes) var taskDefinition = db.Task{ - TemplateID: integration.TemplateID, - ProjectID: integration.ProjectID, - Environment: environmentJSONString, + TemplateID: integration.TemplateID, + ProjectID: integration.ProjectID, + Environment: environmentJSONString, + IntegrationID: &integration.ID, } _, err = helpers.TaskPool(r).AddTask(taskDefinition, nil, integration.ProjectID) @@ -264,7 +264,7 @@ func RunIntegration(integration db.Integration, project db.Project, r *http.Requ } } -func Extract(extractValues []db.IntegrationExtractValue, r *http.Request) (result map[string]string) { +func Extract(extractValues []db.IntegrationExtractValue, r *http.Request, payload []byte) (result map[string]string) { result = make(map[string]string) for _, extractValue := range extractValues { @@ -272,19 +272,12 @@ func Extract(extractValues []db.IntegrationExtractValue, r *http.Request) (resul case db.IntegrationExtractHeaderValue: result[extractValue.Variable] = r.Header.Get(extractValue.Key) case db.IntegrationExtractBodyValue: - bodyBytes, err := io.ReadAll(r.Body) - if err != nil { - log.Fatal(err) - return - } - var body = string(bodyBytes) - switch extractValue.BodyDataType { case db.IntegrationBodyDataJSON: - result[extractValue.Variable] = - fmt.Sprintf("%v", gojsonq.New().JSONString(body).Find(extractValue.Key)) + var extractedResult = fmt.Sprintf("%v", gojsonq.New().JSONString(string(payload)).Find(extractValue.Key)) + result[extractValue.Variable] = extractedResult case db.IntegrationBodyDataString: - result[extractValue.Variable] = body + result[extractValue.Variable] = string(payload) } } } diff --git a/db/Migration.go b/db/Migration.go index 3bc33b199..fb0324ebf 100644 --- a/db/Migration.go +++ b/db/Migration.go @@ -66,6 +66,7 @@ func GetMigrations() []Migration { {Version: "2.9.61"}, {Version: "2.9.62"}, {Version: "2.9.70"}, + {Version: "2.9.97"}, } } diff --git a/db/Task.go b/db/Task.go index 5fde1456a..0231a0704 100644 --- a/db/Task.go +++ b/db/Task.go @@ -20,6 +20,8 @@ type Task struct { DryRun bool `db:"dry_run" json:"dry_run"` Diff bool `db:"diff" json:"diff"` + IntegrationID *int `db:"integration_id" json:"integration_id"` + // override variables Playbook string `db:"playbook" json:"playbook"` Environment string `db:"environment" json:"environment"` diff --git a/db/sql/migrations/v2.9.97.sql b/db/sql/migrations/v2.9.97.sql new file mode 100644 index 000000000..c156fa8ff --- /dev/null +++ b/db/sql/migrations/v2.9.97.sql @@ -0,0 +1 @@ +alter table `task` add `integration_id` int null references project__integration(`id`) on delete set null; \ No newline at end of file diff --git a/web/src/components/TaskLogView.vue b/web/src/components/TaskLogView.vue index 0e2060a27..e71d00836 100644 --- a/web/src/components/TaskLogView.vue +++ b/web/src/components/TaskLogView.vue @@ -23,10 +23,13 @@ - + {{ $t('author') }} {{ user.name || '-' }} + + {{ $t('integration') }} + diff --git a/web/src/lang/en.js b/web/src/lang/en.js index 885dbb6e7..cb484485f 100644 --- a/web/src/lang/en.js +++ b/web/src/lang/en.js @@ -238,5 +238,5 @@ export default { Run: 'Run', CreateDemoProject: 'Create Demo Project', LeaveProject: 'Leave Project', - + integration: 'Integration', }; diff --git a/web/src/views/project/Templates.vue b/web/src/views/project/Templates.vue index a0f8ae082..45d33fe7f 100644 --- a/web/src/views/project/Templates.vue +++ b/web/src/views/project/Templates.vue @@ -185,7 +185,7 @@ :tooltip="item.last_task.message" />
- {{ $t('by', {user_name: item.last_task.user_name}) }} + {{ $t('by', {user_name: item.last_task.user_name }) }}