Beispiel #1
0
        public DmcVideoSource(CookieContainer cookieContainer, Uri heartBeatsUri, APIs.heartbeats.Response.Rootobject rootobject)
        {
            Status      = HeartBeatsStatus.Active;
            ContentsUri = new Uri(rootobject.data.session.content_uri);

            Task.Run(() =>
            {
                do
                {
                    try
                    {
                        Task.Delay(rootobject.data.session.keep_method.heartbeat.lifetime / 3).Wait(tokenSource.Token);
                        var beatTask = BeatAsync(cookieContainer, heartBeatsUri, rootobject);
                        beatTask.Wait(tokenSource.Token);
                        heartbeatsInfo = beatTask.Result;
                    }
                    catch (OperationCanceledException)
                    {
                        return;
                    }
                    catch (Exception)
                    {
                        HeartbeatsError?.Invoke();
                    }
                } while (heartbeatsInfo != null && !tokenSource.IsCancellationRequested);
            });
        }
Beispiel #2
0
        private async Task <APIs.heartbeats.Response.Rootobject> BeatAsync(CookieContainer cookieContainer, Uri heartBeatsUri, APIs.heartbeats.Response.Rootobject rootobject)
        {
            var session = new Session <APIs.heartbeats.Response.Rootobject>((flow) =>
            {
                var accessor = new APIs.heartbeats.Accessor();
                accessor.Setting(cookieContainer, heartBeatsUri, rootobject.data);
                flow.Return(accessor);

                return(new APIs.heartbeats.Parser().Parse(flow.GetResult()));
            });

            return(await session.RunAsync(tokenSource.Token));
        }