@@ -677,40 +677,47 @@ export function legacyPropertiesToOrtbNative(legacyNative) {
677
677
}
678
678
679
679
export function toOrtbNativeResponse ( legacyResponse , ortbRequest ) {
680
- // copy the request, so we don't pollute it with response data below
681
- ortbRequest = deepClone ( ortbRequest ) ;
682
-
683
680
const ortbResponse = {
684
681
...legacyPropertiesToOrtbNative ( legacyResponse ) ,
685
682
assets : [ ]
686
683
} ;
684
+
685
+ function useRequestAsset ( predicate , fn ) {
686
+ let asset = ortbRequest . assets . find ( predicate ) ;
687
+ if ( asset != null ) {
688
+ asset = deepClone ( asset ) ;
689
+ fn ( asset ) ;
690
+ ortbResponse . assets . push ( asset ) ;
691
+ }
692
+ }
693
+
687
694
Object . keys ( legacyResponse ) . filter ( key => ! ! legacyResponse [ key ] ) . forEach ( key => {
688
695
const value = legacyResponse [ key ] ;
689
696
switch ( key ) {
690
697
// process titles
691
698
case 'title' :
692
- const titleAsset = ortbRequest . assets . find ( asset => asset . title != null ) ;
693
- titleAsset . title = {
694
- text : value
695
- } ;
696
- ortbResponse . assets . push ( titleAsset ) ;
699
+ useRequestAsset ( asset => asset . title != null , titleAsset => {
700
+ titleAsset . title = {
701
+ text : value
702
+ } ;
703
+ } )
697
704
break ;
698
705
case 'image' :
699
706
case 'icon' :
700
707
const imageType = key === 'image' ? NATIVE_IMAGE_TYPES . MAIN : NATIVE_IMAGE_TYPES . ICON ;
701
- const imageAsset = ortbRequest . assets . find ( asset => asset . img != null && asset . img . type == imageType ) ;
702
- imageAsset . img = {
703
- url : value
704
- } ;
705
- ortbResponse . assets . push ( imageAsset ) ;
708
+ useRequestAsset ( asset => asset . img != null && asset . img . type === imageType , imageAsset => {
709
+ imageAsset . img = {
710
+ url : value
711
+ } ;
712
+ } )
706
713
break ;
707
714
default :
708
715
if ( key in PREBID_NATIVE_DATA_KEYS_TO_ORTB ) {
709
- const dataAsset = ortbRequest . assets . find ( asset => asset . data != null && asset . data . type === NATIVE_ASSET_TYPES [ PREBID_NATIVE_DATA_KEYS_TO_ORTB [ key ] ] ) ;
710
- dataAsset . data = {
711
- value
712
- } ;
713
- ortbResponse . assets . push ( dataAsset ) ;
716
+ useRequestAsset ( asset => asset . data != null && asset . data . type === NATIVE_ASSET_TYPES [ PREBID_NATIVE_DATA_KEYS_TO_ORTB [ key ] ] , dataAsset => {
717
+ dataAsset . data = {
718
+ value
719
+ } ;
720
+ } )
714
721
}
715
722
break ;
716
723
}
0 commit comments