@@ -49,22 +49,30 @@ public SmartadserverBidder(String endpointUrl, JacksonMapper mapper) {
4949
5050 @ Override
5151 public Result <List <HttpRequest <BidRequest >>> makeHttpRequests (BidRequest request ) {
52- final List <HttpRequest <BidRequest >> result = new ArrayList <>();
5352 final List <BidderError > errors = new ArrayList <>();
53+ final List <Imp > imps = new ArrayList <>();
54+ ExtImpSmartadserver extImp = null ;
5455
5556 for (Imp imp : request .getImp ()) {
5657 try {
57- final ExtImpSmartadserver extImpSmartadserver = parseImpExt (imp );
58- final BidRequest updatedRequest = request .toBuilder ()
59- .imp (Collections .singletonList (imp ))
60- .site (modifySite (request .getSite (), extImpSmartadserver .getNetworkId ()))
61- .build ();
62- result .add (createSingleRequest (updatedRequest ));
58+ extImp = parseImpExt (imp );
59+ imps .add (imp );
6360 } catch (PreBidException e ) {
6461 errors .add (BidderError .badInput (e .getMessage ()));
6562 }
6663 }
67- return Result .of (result , errors );
64+
65+ if (imps .isEmpty ()) {
66+ return Result .withErrors (errors );
67+ }
68+
69+ final BidRequest outgoingRequest = request .toBuilder ()
70+ .imp (imps )
71+ .site (modifySite (request .getSite (), extImp .getNetworkId ()))
72+ .build ();
73+
74+ final HttpRequest <BidRequest > httpRequest = BidderUtil .defaultRequest (outgoingRequest , makeUrl (), mapper );
75+ return Result .of (Collections .singletonList (httpRequest ), errors );
6876 }
6977
7078 private ExtImpSmartadserver parseImpExt (Imp imp ) {
@@ -75,24 +83,6 @@ private ExtImpSmartadserver parseImpExt(Imp imp) {
7583 }
7684 }
7785
78- private HttpRequest <BidRequest > createSingleRequest (BidRequest request ) {
79-
80- return BidderUtil .defaultRequest (request , getUri (), mapper );
81- }
82-
83- private String getUri () {
84- final URI uri ;
85- try {
86- uri = new URI (endpointUrl );
87- } catch (URISyntaxException e ) {
88- throw new PreBidException ("Malformed URL: %s." .formatted (endpointUrl ));
89- }
90- return new URIBuilder (uri )
91- .setPath (StringUtils .removeEnd (uri .getPath (), "/" ) + "/api/bid" )
92- .addParameter ("callerId" , "5" )
93- .toString ();
94- }
95-
9686 private static Site modifySite (Site site , Integer networkId ) {
9787 final Site .SiteBuilder siteBuilder = site != null ? site .toBuilder () : Site .builder ();
9888 final Publisher sitePublisher = site != null ? site .getPublisher () : null ;
@@ -108,6 +98,19 @@ private static Publisher modifyPublisher(Publisher publisher, Integer networkId)
10898 return publisherBuilder .id (String .valueOf (networkId )).build ();
10999 }
110100
101+ private String makeUrl () {
102+ final URI uri ;
103+ try {
104+ uri = new URI (endpointUrl );
105+ } catch (URISyntaxException e ) {
106+ throw new PreBidException ("Malformed URL: %s." .formatted (endpointUrl ));
107+ }
108+ return new URIBuilder (uri )
109+ .setPath (StringUtils .removeEnd (uri .getPath (), "/" ) + "/api/bid" )
110+ .addParameter ("callerId" , "5" )
111+ .toString ();
112+ }
113+
111114 @ Override
112115 public Result <List <BidderBid >> makeBids (BidderCall <BidRequest > httpCall , BidRequest bidRequest ) {
113116 try {
@@ -135,7 +138,6 @@ private Result<List<BidderBid>> extractBids(BidResponse bidResponse) {
135138
136139 private static BidType getBidTypeFromMarkupType (Integer markupType ) {
137140 return switch (markupType ) {
138- case 1 -> BidType .banner ;
139141 case 2 -> BidType .video ;
140142 case 3 -> BidType .audio ;
141143 case 4 -> BidType .xNative ;
0 commit comments