Skip to content

Commit 9187aff

Browse files
committed
update
1 parent ed763ae commit 9187aff

File tree

4 files changed

+35
-1
lines changed

4 files changed

+35
-1
lines changed

src/Controller/Controller.Uwp/BiliController.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public partial class BiliController
3636
private readonly IPlayerProvider _playerProvider;
3737
private readonly ISearchProvider _searchProvider;
3838
private readonly ICommunityProvider _communityProvider;
39+
private readonly IHttpProvider _httpProvider;
3940

4041
private readonly INetworkModule _networkModule;
4142
private readonly ILoggerModule _loggerModule;
@@ -48,6 +49,8 @@ public partial class BiliController
4849
private bool _isLiveSocketConnected;
4950
private Task _liveConnectionTask;
5051

52+
private bool _isCookieCached;
53+
5154
/// <summary>
5255
/// Initializes a new instance of the <see cref="BiliController"/> class.
5356
/// </summary>
@@ -68,7 +71,8 @@ internal BiliController()
6871
.LoadService(out _pgcProvider)
6972
.LoadService(out _playerProvider)
7073
.LoadService(out _searchProvider)
71-
.LoadService(out _communityProvider);
74+
.LoadService(out _communityProvider)
75+
.LoadService(out _httpProvider);
7276

7377
InitializeLiveSocket();
7478
RegisterEvents();
@@ -265,6 +269,18 @@ internal BiliController()
265269
/// </summary>
266270
public bool IsNetworkAvailable => _networkModule.IsNetworkAvaliable;
267271

272+
/// <summary>
273+
/// 初始化网络环境.
274+
/// </summary>
275+
/// <returns><see cref="Task"/>.</returns>
276+
public async Task InitializeNetworkEnvorimentAsync()
277+
{
278+
if (IsNetworkAvailable)
279+
{
280+
await _httpProvider.InitializeLocalCookieAsync();
281+
}
282+
}
283+
268284
private void RegisterEvents()
269285
{
270286
this._authorizeProvider.StateChanged += OnAuthenticationStateChanged;

src/Lib/Lib.Interfaces/IHttpProvider.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,11 @@ public interface IHttpProvider
8787
/// <returns>转换结果.</returns>
8888
Task<T> ParseAsync<T>(HttpResponseMessage response, MessageParser<T> parser)
8989
where T : IMessage<T>;
90+
91+
/// <summary>
92+
/// 初始化Web.Http.HttpClient的Cookie.
93+
/// </summary>
94+
/// <returns><see cref="Task"/>.</returns>
95+
Task InitializeLocalCookieAsync();
9096
}
9197
}

src/Lib/Lib.Uwp/HttpProvider/HttpProvider.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using Richasy.Bili.Models.App.Other;
1515
using Richasy.Bili.Models.Enums;
1616
using Richasy.Bili.Models.gRPC;
17+
using Windows.Web.Http.Filters;
1718
using static Richasy.Bili.Models.App.Constants.ServiceConstants;
1819

1920
namespace Richasy.Bili.Lib.Uwp
@@ -192,5 +193,15 @@ public async Task<object> ParseAsync<T1, T2>(HttpResponseMessage response, Func<
192193
return JsonConvert.DeserializeObject<T2>(responseString);
193194
}
194195
}
196+
197+
/// <inheritdoc/>
198+
public Task InitializeLocalCookieAsync()
199+
{
200+
var filter = new HttpBaseProtocolFilter();
201+
filter.IgnorableServerCertificateErrors.Add(Windows.Security.Cryptography.Certificates.ChainValidationResult.Expired);
202+
filter.AllowAutoRedirect = true;
203+
var client = new Windows.Web.Http.HttpClient(filter);
204+
return client.GetStringAsync(new Uri("https://www.bilibili.com")).AsTask();
205+
}
195206
}
196207
}

src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ public async Task LoadAsync(object vm, bool isRefresh = false)
131131
await LoadPgcDetailAsync(Convert.ToInt32(videoId), seasonId, isRefresh);
132132
break;
133133
case VideoType.Live:
134+
await Controller.InitializeNetworkEnvorimentAsync();
134135
await LoadLiveDetailAsync(Convert.ToInt32(videoId), isRefresh);
135136
break;
136137
default:

0 commit comments

Comments
 (0)