@@ -230,13 +230,8 @@ shaka.ads.InterstitialAdManager = class {
230
230
* @return {!Promise }
231
231
*/
232
232
async addAdUrlInterstitial ( url ) {
233
- const type = shaka . net . NetworkingEngine . RequestType . ADS ;
234
- const request = shaka . net . NetworkingEngine . makeRequest (
235
- [ url ] ,
236
- shaka . net . NetworkingEngine . defaultRetryParameters ( ) ) ;
237
- const op = this . basePlayer_ . getNetworkingEngine ( ) . request ( type , request ) ;
238
- const response = await op . promise ;
239
- const data = shaka . util . TXml . parseXml ( response . data , 'VAST,vmap:VMAP' ) ;
233
+ const responseData = await this . makeAdRequest_ ( url ) ;
234
+ const data = shaka . util . TXml . parseXml ( responseData , 'VAST,vmap:VMAP' ) ;
240
235
if ( ! data ) {
241
236
throw new shaka . util . Error (
242
237
shaka . util . Error . Severity . CRITICAL ,
@@ -247,6 +242,20 @@ shaka.ads.InterstitialAdManager = class {
247
242
if ( data . tagName == 'VAST' ) {
248
243
interstitials = shaka . ads . Utils . parseVastToInterstitials (
249
244
data , this . lastTime_ ) ;
245
+ } else if ( data . tagName == 'vmap:VMAP' ) {
246
+ for ( const ad of shaka . ads . Utils . parseVMAP ( data ) ) {
247
+ // eslint-disable-next-line no-await-in-loop
248
+ const vastResponseData = await this . makeAdRequest_ ( ad . uri ) ;
249
+ const vast = shaka . util . TXml . parseXml ( vastResponseData , 'VAST' ) ;
250
+ if ( ! vast ) {
251
+ throw new shaka . util . Error (
252
+ shaka . util . Error . Severity . CRITICAL ,
253
+ shaka . util . Error . Category . ADS ,
254
+ shaka . util . Error . Code . VAST_INVALID_XML ) ;
255
+ }
256
+ interstitials . push ( ...shaka . ads . Utils . parseVastToInterstitials (
257
+ vast , ad . time ) ) ;
258
+ }
250
259
}
251
260
this . addInterstitials ( interstitials ) ;
252
261
}
@@ -705,14 +714,9 @@ shaka.ads.InterstitialAdManager = class {
705
714
if ( ! uri ) {
706
715
return interstitialsAd ;
707
716
}
708
- const type = shaka . net . NetworkingEngine . RequestType . ADS ;
709
- const request = shaka . net . NetworkingEngine . makeRequest (
710
- [ uri ] ,
711
- shaka . net . NetworkingEngine . defaultRetryParameters ( ) ) ;
712
- const op = this . basePlayer_ . getNetworkingEngine ( ) . request ( type , request ) ;
713
717
try {
714
- const response = await op . promise ;
715
- const data = shaka . util . StringUtils . fromUTF8 ( response . data ) ;
718
+ const responseData = await this . makeAdRequest_ ( uri ) ;
719
+ const data = shaka . util . StringUtils . fromUTF8 ( responseData ) ;
716
720
const dataAsJson =
717
721
/** @type {!shaka.ads.InterstitialAdManager.AssetsList } */ (
718
722
JSON . parse ( data ) ) ;
@@ -791,6 +795,21 @@ shaka.ads.InterstitialAdManager = class {
791
795
netEngine . clearAllResponseFilters ( ) ;
792
796
this . basePlayer_ . getNetworkingEngine ( ) . copyFiltersInto ( netEngine ) ;
793
797
}
798
+
799
+ /**
800
+ * @param {string } url
801
+ * @return {!Promise.<BufferSource> }
802
+ * @private
803
+ */
804
+ async makeAdRequest_ ( url ) {
805
+ const type = shaka . net . NetworkingEngine . RequestType . ADS ;
806
+ const request = shaka . net . NetworkingEngine . makeRequest (
807
+ [ url ] ,
808
+ shaka . net . NetworkingEngine . defaultRetryParameters ( ) ) ;
809
+ const op = this . basePlayer_ . getNetworkingEngine ( ) . request ( type , request ) ;
810
+ const response = await op . promise ;
811
+ return response . data ;
812
+ }
794
813
} ;
795
814
796
815
0 commit comments