Skip to content

Commit be96fd0

Browse files
authored
feat(net): Add shaka.net.NetworkingUtils (#5756)
1 parent 3096378 commit be96fd0

File tree

5 files changed

+43
-25
lines changed

5 files changed

+43
-25
lines changed

build/types/core

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646

4747
+../../lib/net/backoff.js
4848
+../../lib/net/networking_engine.js
49+
+../../lib/net/networking_utils.js
4950

5051
+../../lib/player.js
5152

lib/media/manifest_parser.js

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ goog.provide('shaka.media.ManifestParser');
99
goog.require('goog.Uri');
1010
goog.require('shaka.log');
1111
goog.require('shaka.net.NetworkingEngine');
12+
goog.require('shaka.net.NetworkingUtils');
1213
goog.require('shaka.util.Error');
1314
goog.require('shaka.util.Platform');
1415

@@ -159,7 +160,8 @@ shaka.media.ManifestParser = class {
159160
}
160161

161162
if (!mimeType) {
162-
mimeType = await ManifestParser.getMimeType(uri, netEngine, retryParams);
163+
mimeType = await shaka.net.NetworkingUtils.getMimeType(
164+
uri, netEngine, retryParams);
163165

164166
if (mimeType) {
165167
const factory = shaka.media.ManifestParser.parsersByMime[mimeType];
@@ -180,27 +182,6 @@ shaka.media.ManifestParser = class {
180182
}
181183

182184

183-
/**
184-
* @param {string} uri
185-
* @param {!shaka.net.NetworkingEngine} netEngine
186-
* @param {shaka.extern.RetryParameters} retryParams
187-
* @return {!Promise.<string>}
188-
*/
189-
static async getMimeType(uri, netEngine, retryParams) {
190-
const type = shaka.net.NetworkingEngine.RequestType.MANIFEST;
191-
192-
const request = shaka.net.NetworkingEngine.makeRequest([uri], retryParams);
193-
request.method = 'HEAD';
194-
195-
const response = await netEngine.request(type, request).promise;
196-
197-
// https://bit.ly/2K9s9kf says this header should always be available,
198-
// but just to be safe:
199-
const mimeType = response.headers['content-type'];
200-
return mimeType ? mimeType.toLowerCase().split(';').shift() : '';
201-
}
202-
203-
204185
/**
205186
* @param {string} uri
206187
* @return {string}

lib/net/networking_utils.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*! @license
2+
* Shaka Player
3+
* Copyright 2016 Google LLC
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
goog.provide('shaka.net.NetworkingUtils');
8+
9+
goog.require('shaka.net.NetworkingEngine');
10+
11+
12+
/**
13+
* @summary Networking utility functions.
14+
*/
15+
shaka.net.NetworkingUtils = class {
16+
/**
17+
* @param {string} uri
18+
* @param {!shaka.net.NetworkingEngine} netEngine
19+
* @param {shaka.extern.RetryParameters} retryParams
20+
* @return {!Promise.<string>}
21+
*/
22+
static async getMimeType(uri, netEngine, retryParams) {
23+
const type = shaka.net.NetworkingEngine.RequestType.MANIFEST;
24+
25+
const request = shaka.net.NetworkingEngine.makeRequest([uri], retryParams);
26+
request.method = 'HEAD';
27+
28+
const response = await netEngine.request(type, request).promise;
29+
30+
// https://bit.ly/2K9s9kf says this header should always be available,
31+
// but just to be safe:
32+
const mimeType = response.headers['content-type'];
33+
return mimeType ? mimeType.toLowerCase().split(';').shift() : '';
34+
}
35+
};

lib/player.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ goog.require('shaka.media.SrcEqualsPlayhead');
3131
goog.require('shaka.media.StreamingEngine');
3232
goog.require('shaka.media.TimeRangesUtils');
3333
goog.require('shaka.net.NetworkingEngine');
34+
goog.require('shaka.net.NetworkingUtils');
3435
goog.require('shaka.routing.Walker');
3536
goog.require('shaka.text.SimpleTextDisplayer');
3637
goog.require('shaka.text.TextEngine');
@@ -5151,7 +5152,7 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
51515152
goog.asserts.assert(
51525153
this.networkingEngine_, 'Need networking engine.');
51535154
// eslint-disable-next-line require-atomic-updates
5154-
mimeType = await shaka.media.ManifestParser.getMimeType(uri,
5155+
mimeType = await shaka.net.NetworkingUtils.getMimeType(uri,
51555156
this.networkingEngine_,
51565157
this.config_.streaming.retryParameters);
51575158
} catch (error) {}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
const testGetMimeType = async (expertedMimeType, contentType) => {
88
const netEngine = new shaka.test.FakeNetworkingEngine()
99
.setHeaders('dummy://foo', {'content-type': contentType});
10-
const mimeType = await shaka.media.ManifestParser
10+
const mimeType = await shaka.net.NetworkingUtils
1111
.getMimeType('dummy://foo', netEngine,
1212
shaka.net.NetworkingEngine.defaultRetryParameters());
1313
expect(mimeType).toBe(expertedMimeType);
1414
};
1515

16-
describe('ManifestParser', () => {
16+
describe('NetworkingUtils', () => {
1717
describe('getMimeType', () => {
1818
it('test correct mimeType', () => {
1919
testGetMimeType('application/dash+xml', 'application/dash+xml');

0 commit comments

Comments
 (0)