@@ -255,12 +255,17 @@ func MatchCompare(value any, method db.IntegrationMatchMethodType, expected stri
255255 }
256256}
257257
258- func GetTaskDefinition (integration db.Integration , payload []byte , r * http.Request ) (taskDefinition db.Task , err error ) {
258+ func GetTaskDefinition (
259+ integration db.Integration ,
260+ payload []byte ,
261+ h http.Header ,
262+ extractorCreator func (projectID , integrationID int ) ([]db.IntegrationExtractValue , error ),
263+ ) (taskDefinition db.Task , err error ) {
259264
260265 var envValues = make ([]db.IntegrationExtractValue , 0 )
261266 var taskValues = make ([]db.IntegrationExtractValue , 0 )
262267
263- extractValuesForExtractor , err := helpers . Store ( r ). GetIntegrationExtractValues ( integration .ProjectID , db. RetrieveQueryParams {} , integration .ID )
268+ extractValuesForExtractor , err := extractorCreator ( integration .ProjectID , integration .ID )
264269 if err != nil {
265270 return
266271 }
@@ -274,14 +279,15 @@ func GetTaskDefinition(integration db.Integration, payload []byte, r *http.Reque
274279 }
275280 }
276281
277- var extractedEnvResults = Extract (envValues , r , payload )
282+ var extractedEnvResults = Extract (envValues , h , payload )
278283
279284 if integration .TaskParams != nil {
280285 taskDefinition = integration .TaskParams .CreateTask (integration .TemplateID )
281286 } else {
282287 taskDefinition = db.Task {
283288 ProjectID : integration .ProjectID ,
284289 TemplateID : integration .TemplateID ,
290+ Params : make (db.MapStringAnyField ),
285291 }
286292 }
287293
@@ -311,7 +317,7 @@ func GetTaskDefinition(integration db.Integration, payload []byte, r *http.Reque
311317
312318 taskDefinition .Environment = string (envStr )
313319
314- extractedTaskResults := ExtractAsAnyForTaskParams (taskValues , r , payload )
320+ extractedTaskResults := ExtractAsAnyForTaskParams (taskValues , h , payload )
315321 for k , v := range extractedTaskResults {
316322 taskDefinition .Params [k ] = v
317323 }
@@ -323,7 +329,10 @@ func RunIntegration(integration db.Integration, project db.Project, r *http.Requ
323329
324330 log .Info (fmt .Sprintf ("Running integration %d" , integration .ID ))
325331
326- taskDefinition , err := GetTaskDefinition (integration , payload , r )
332+ taskDefinition , err := GetTaskDefinition (
333+ integration , payload , r .Header , func (projectID , integrationID int ) ([]db.IntegrationExtractValue , error ) {
334+ return helpers .Store (r ).GetIntegrationExtractValues (projectID , db.RetrieveQueryParams {}, integrationID )
335+ })
327336 if err != nil {
328337 log .WithError (err ).WithFields (log.Fields {
329338 "context" : "integrations" ,
@@ -347,13 +356,13 @@ func RunIntegration(integration db.Integration, project db.Project, r *http.Requ
347356 }
348357}
349358
350- func Extract (extractValues []db.IntegrationExtractValue , r * http.Request , payload []byte ) (result map [string ]string ) {
359+ func Extract (extractValues []db.IntegrationExtractValue , h http.Header , payload []byte ) (result map [string ]string ) {
351360 result = make (map [string ]string )
352361
353362 for _ , extractValue := range extractValues {
354363 switch extractValue .ValueSource {
355364 case db .IntegrationExtractHeaderValue :
356- result [extractValue .Variable ] = r . Header .Get (extractValue .Key )
365+ result [extractValue .Variable ] = h .Get (extractValue .Key )
357366 case db .IntegrationExtractBodyValue :
358367 switch extractValue .BodyDataType {
359368 case db .IntegrationBodyDataJSON :
@@ -367,15 +376,15 @@ func Extract(extractValues []db.IntegrationExtractValue, r *http.Request, payloa
367376 return
368377}
369378
370- func ExtractAsAnyForTaskParams (extractValues []db.IntegrationExtractValue , r * http.Request , payload []byte ) db.MapStringAnyField {
379+ func ExtractAsAnyForTaskParams (extractValues []db.IntegrationExtractValue , h http.Header , payload []byte ) db.MapStringAnyField {
371380 // Create a result map that accepts any type
372381 result := make (db.MapStringAnyField )
373382
374383 for _ , extractValue := range extractValues {
375384 switch extractValue .ValueSource {
376385 case db .IntegrationExtractHeaderValue :
377386 // Extract the header value
378- result [extractValue .Variable ] = r . Header .Get (extractValue .Key )
387+ result [extractValue .Variable ] = h .Get (extractValue .Key )
379388
380389 case db .IntegrationExtractBodyValue :
381390 switch extractValue .BodyDataType {
0 commit comments