Skip to content

Commit e9ed3cd

Browse files
authored
[video_player_platform_interface] add http headers (flutter#3702)
platform_interface portion of flutter#3671
1 parent 9cd84bd commit e9ed3cd

File tree

6 files changed

+34
-2
lines changed

6 files changed

+34
-2
lines changed

packages/video_player/video_player_platform_interface/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 4.1.0
2+
3+
* Add `httpHeaders` to `DataSource`
4+
15
## 4.0.0
26

37
* **Breaking Changes**:

packages/video_player/video_player_platform_interface/lib/messages.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@ class CreateMessage {
3131
String? uri;
3232
String? packageName;
3333
String? formatHint;
34+
Map<Object?, Object?>? httpHeaders;
3435

3536
Object encode() {
3637
final Map<Object?, Object?> pigeonMap = <Object?, Object?>{};
3738
pigeonMap['asset'] = asset;
3839
pigeonMap['uri'] = uri;
3940
pigeonMap['packageName'] = packageName;
4041
pigeonMap['formatHint'] = formatHint;
42+
pigeonMap['httpHeaders'] = httpHeaders;
4143
return pigeonMap;
4244
}
4345

@@ -47,7 +49,8 @@ class CreateMessage {
4749
..asset = pigeonMap['asset'] as String?
4850
..uri = pigeonMap['uri'] as String?
4951
..packageName = pigeonMap['packageName'] as String?
50-
..formatHint = pigeonMap['formatHint'] as String?;
52+
..formatHint = pigeonMap['formatHint'] as String?
53+
..httpHeaders = pigeonMap['httpHeaders'] as Map<Object?, Object?>?;
5154
}
5255
}
5356

packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class MethodChannelVideoPlayer extends VideoPlayerPlatform {
3737
case DataSourceType.network:
3838
message.uri = dataSource.uri;
3939
message.formatHint = _videoFormatStringMap[dataSource.formatHint];
40+
message.httpHeaders = dataSource.httpHeaders;
4041
break;
4142
case DataSourceType.file:
4243
message.uri = dataSource.uri;

packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ class DataSource {
151151
this.formatHint,
152152
this.asset,
153153
this.package,
154+
this.httpHeaders = const {},
154155
});
155156

156157
/// The way in which the video was originally loaded.
@@ -169,6 +170,11 @@ class DataSource {
169170
/// detection with whatever is set here.
170171
final VideoFormat? formatHint;
171172

173+
/// HTTP headers used for the request to the [uri].
174+
/// Only for [DataSourceType.network] videos.
175+
/// Always empty for other video types.
176+
Map<String, String> httpHeaders;
177+
172178
/// The name of the asset. Only set for [DataSourceType.asset] videos.
173179
final String? asset;
174180

packages/video_player/video_player_platform_interface/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description: A common platform interface for the video_player plugin.
33
homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_platform_interface
44
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
55
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
6-
version: 4.0.0
6+
version: 4.1.0
77

88
dependencies:
99
flutter:

packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,26 @@ void main() {
141141
formatHint: VideoFormat.dash,
142142
));
143143
expect(log.log.last, 'create');
144+
expect(log.createMessage?.asset, null);
144145
expect(log.createMessage?.uri, 'someUri');
146+
expect(log.createMessage?.packageName, null);
145147
expect(log.createMessage?.formatHint, 'dash');
148+
expect(log.createMessage?.httpHeaders, {});
149+
expect(textureId, 3);
150+
});
151+
152+
test('create with network (some headers)', () async {
153+
final int? textureId = await player.create(DataSource(
154+
sourceType: DataSourceType.network,
155+
uri: 'someUri',
156+
httpHeaders: {'Authorization': 'Bearer token'},
157+
));
158+
expect(log.log.last, 'create');
159+
expect(log.createMessage?.asset, null);
160+
expect(log.createMessage?.uri, 'someUri');
161+
expect(log.createMessage?.packageName, null);
162+
expect(log.createMessage?.formatHint, null);
163+
expect(log.createMessage?.httpHeaders, {'Authorization': 'Bearer token'});
146164
expect(textureId, 3);
147165
});
148166

0 commit comments

Comments
 (0)