// 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); }
public static LinkPreviewDataProvider GetDataProvider(GetLinkPreviewRequest request, RequestDetailsLogger logger, bool activeViewsConvergenceEnabled) { Uri uri = LinkPreviewDataProvider.CreateUri(request.Url); LinkPreviewDataProvider result; Uri uri2; if (activeViewsConvergenceEnabled && OEmbedVideoPreviewBuilder.IsOEmbedVideoUri(uri, logger)) { result = new OEmbedDataProvider(uri, request, logger); } else if (WikipediaLinkPreviewBuilder.TryGetWikipediaServiceUri(uri, out uri2)) { result = new WikipediaDataProvider(uri2, request, logger); } else { result = new WebPageDataProvider(uri, request, logger); } return(result); }