private async Task ExtractExternalUrlAndTitle()
        {
            await CoursesClient.LazyRefresh();

            using (var html = await CoursesClient.SessionClient.GetStreamAsyncHttp(Url))
            {
                var title = LazyHtmlParser.FindTitleInHtml(html);
                Title = title;

                IsTitleExtracted = true;
            }
        }
Пример #2
0
        private async Task ExtractExternalUrlAndTitle()
        {
            await CoursesClient.LazyRefresh();

            // Go to url as clicked on courses
            using (var coursesResponse = await CoursesClient.SessionClient.GetHeadersAsyncHttp(Url))
            {
                var externalResponse = coursesResponse;

                // if redirected to courses, grab url workaround, get title from there
                if (coursesResponse.RequestMessage.RequestUri.Host == CoursesClient.SessionClient.BaseAddress.Host)
                {
                    using (var coursesHtml = await coursesResponse.Content.ReadAsStreamAsync())
                    {
                        var urlWorkaround = LazyHtmlParser.FindUrlWorkaroundInHtml(coursesHtml);
                        ExternalUrl = urlWorkaround;

                        // Go to url as clicked on workaround url
                        externalResponse = await CoursesClient.SessionClient.GetHeadersAsyncHttp(urlWorkaround);
                    }
                }
                // else redirected to external link, just save it
                else
                {
                    var url = coursesResponse.RequestMessage.RequestUri.ToString();
                    ExternalUrl = url;
                }

                using (externalResponse)
                {
                    using (var externalHtml = await externalResponse.Content.ReadAsStreamAsync())
                    {
                        var title = LazyHtmlParser.FindTitleInHtml(externalHtml);
                        Title = title;

                        AreExternalUrlAndTitleExtracted = true;
                    }
                }
            }
        }