@@ -280,7 +280,17 @@ run_transactions( From
280
280
Request = make_katt_request (Req , Params , Callbacks ),
281
281
RequestFun = proplists :get_value (request , Callbacks ),
282
282
ValidateFun = proplists :get_value (validate , Callbacks ),
283
- ActualResponse = RequestFun (Request , Params , Callbacks ),
283
+ ActualResponse0 = RequestFun (Request , Params , Callbacks ),
284
+ ActualResponseHdrs = ActualResponse0 # katt_response .headers ,
285
+ {_ActualResponseContentType , _ActualResponseHdrs , ActualResponseHdrsCT } =
286
+ get_headers_content_type (Res # katt_response .headers , ActualResponseHdrs ),
287
+ ParseFun = proplists :get_value (parse , Callbacks ),
288
+ ActualResponseParsedBody = ParseFun ( ActualResponseHdrsCT
289
+ , ActualResponse0 # katt_response .body
290
+ , Params
291
+ , Callbacks
292
+ ),
293
+ ActualResponse = ActualResponse0 # katt_response {parsed_body = ActualResponseParsedBody },
284
294
ExpectedResponse = make_katt_response (ActualResponse , Res , Params , Callbacks ),
285
295
ValidationResult = ValidateFun ( ExpectedResponse
286
296
, ActualResponse
@@ -326,8 +336,9 @@ make_katt_request( #katt_request{url=Url0, headers=Hdrs0, body=Body0} = Req0
326
336
, Callbacks
327
337
)),
328
338
Url = make_request_url (Url1 , Params ),
329
- Hdrs = RecallFun (headers , Hdrs0 , Params , Callbacks ),
330
- [Hdrs , Body ] = RecallFun (body , [Hdrs , Body0 ], Params , Callbacks ),
339
+ Hdrs1 = RecallFun (headers , Hdrs0 , Params , Callbacks ),
340
+ {_ContentType , Hdrs , HdrsCT } = get_headers_content_type (Hdrs1 ),
341
+ [HdrsCT , Body ] = RecallFun (body , [HdrsCT , Body0 ], Params , Callbacks ),
331
342
Req = Req0 # katt_request { url = Url
332
343
, headers = Hdrs
333
344
, body = Body
@@ -341,9 +352,10 @@ make_katt_response( ActualResponse
341
352
) ->
342
353
RecallFun = proplists :get_value (recall , Callbacks ),
343
354
ParseFun = proplists :get_value (parse , Callbacks ),
344
- Hdrs = RecallFun (headers , Hdrs0 , Params , Callbacks ),
345
- [Hdrs , Body ] = RecallFun (body , [Hdrs , Body0 ], Params , Callbacks ),
346
- ParsedBody = ParseFun (Hdrs , Body , Params , Callbacks ),
355
+ Hdrs1 = RecallFun (headers , Hdrs0 , Params , Callbacks ),
356
+ {_ContentType , Hdrs , HdrsCT } = get_headers_content_type (Hdrs1 ),
357
+ [HdrsCT , Body ] = RecallFun (body , [HdrsCT , Body0 ], Params , Callbacks ),
358
+ ParsedBody = ParseFun (HdrsCT , Body , Params , Callbacks ),
347
359
Res = Res0 # katt_response { headers = Hdrs
348
360
, body = Body
349
361
, parsed_body = ParsedBody
@@ -395,3 +407,21 @@ maybe_transform_response(Res0, Params, Callbacks, ActualResponse) ->
395
407
Res = Res0 # katt_response {headers = Hdrs },
396
408
TransformFun (TransformId , {Res , ActualResponse }, Params , Callbacks )
397
409
end .
410
+
411
+ get_headers_content_type (Hdrs ) ->
412
+ get_headers_content_type (Hdrs , Hdrs ).
413
+
414
+ get_headers_content_type (HdrsSrc , HdrsTarget0 ) ->
415
+ case proplists :get_value (" x-katt-content-type" , HdrsSrc ) of
416
+ undefined ->
417
+ {undefined , HdrsTarget0 , HdrsTarget0 };
418
+ ContentType ->
419
+ HdrsTarget = proplists :delete (" x-katt-content-type" , HdrsTarget0 ),
420
+ HdrsTargetCT = case proplists :is_defined (" Content-Type" , HdrsTarget ) of
421
+ true ->
422
+ katt_util :merge_proplists (HdrsTarget , [{" Content-Type" , ContentType }]);
423
+ false ->
424
+ katt_util :merge_proplists (HdrsTarget , [{" content-type" , ContentType }])
425
+ end ,
426
+ {ContentType , HdrsTarget , HdrsTargetCT }
427
+ end .
0 commit comments