Esempio n. 1
0
        // Token: 0x060018EB RID: 6379 RVA: 0x0005698C File Offset: 0x00054B8C
        protected override async Task <GetLinkPreviewResponse> InternalExecute()
        {
            GetLinkPreviewResponse getLinkPreviewResponse;

            try
            {
                DataProviderInformation dataProviderInformation = null;
                long elapsedTimeToWebPageStepCompletion         = 0L;
                long elapsedTimeToRegExStepCompletion           = 0L;
                base.CallContext.ProtocolLog.Set(GetLinkPreviewMetadata.Url, this.request.Url);
                if (GetLinkPreview.GetPreviewsDisabled())
                {
                    return(this.CreateDisabledResponse());
                }
                if (Interlocked.Increment(ref GetLinkPreview.getPreviewRequestCount) > GetLinkPreview.getPreviewRequestCountMax)
                {
                    return(this.CreateErrorResponse("MaxConcurrentRequestExceeded", "The maximum number of concurrent requests has been exceeded."));
                }
                bool      activeViewConvergenceEnabled = GetLinkPreview.GetActiveViewsConvergenceFlightEnabled(base.CallContext.ProtocolLog);
                Stopwatch stopwatch = Stopwatch.StartNew();
                LinkPreviewDataProvider dataProvider = null;
                dataProvider            = LinkPreviewDataProvider.GetDataProvider(this.request, base.CallContext.ProtocolLog, activeViewConvergenceEnabled);
                dataProviderInformation = await dataProvider.GetDataProviderInformation();

                elapsedTimeToWebPageStepCompletion = stopwatch.ElapsedMilliseconds;
                getLinkPreviewResponse             = dataProvider.CreatePreview(dataProviderInformation);
                stopwatch.Stop();
                elapsedTimeToRegExStepCompletion = stopwatch.ElapsedMilliseconds;
                getLinkPreviewResponse.ElapsedTimeToWebPageStepCompletion = elapsedTimeToWebPageStepCompletion;
                getLinkPreviewResponse.ElapsedTimeToRegExStepCompletion   = elapsedTimeToRegExStepCompletion;
                getLinkPreviewResponse.WebPageContentLength = dataProvider.ContentLength;
                this.LogWebMethodData(getLinkPreviewResponse);
            }
            catch (OwaPermanentException exception)
            {
                getLinkPreviewResponse = this.CreateErrorResponse(exception);
            }
            catch (LocalizedException exception2)
            {
                getLinkPreviewResponse = this.CreateErrorResponse(exception2);
            }
            catch (HttpRequestException requestException)
            {
                getLinkPreviewResponse = this.CreateErrorResponse(requestException);
            }
            catch (TaskCanceledException)
            {
                getLinkPreviewResponse = this.CreateErrorResponse("RequestTimeout", "The web page request timed out.");
            }
            catch (WebException webException)
            {
                getLinkPreviewResponse = this.CreateErrorResponse(webException);
            }
            finally
            {
                Interlocked.Decrement(ref GetLinkPreview.getPreviewRequestCount);
            }
            return(getLinkPreviewResponse);
        }