public RedirectorController(IConfiguration configuration, IDeviceResolver deviceResolver, ICrawlerResolver crawlerResolver, IMemoryCache memoryCache) { _deviceResolver = deviceResolver; _crawlerResolver = crawlerResolver; _memoryCache = memoryCache; _configuration = configuration; }
public Detection(IUserAgentService service, IDeviceResolver deviceResolver, IBrowserResolver browserResolver, ICrawlerResolver crawlerResolver) { this._service = service; this._deviceResolver = deviceResolver; this._browserResolver = browserResolver; this._crawlerResolver = crawlerResolver; }
public Detection(IUserAgentService service, IDeviceResolver deviceResolver, IBrowserResolver browserResolver, IPlatformResolver platformResolver, IEngineResolver engineResolver, ICrawlerResolver crawlerResolver) { this._service = service; this._deviceResolver = deviceResolver; this._browserResolver = browserResolver; this._platformResolver = platformResolver; this._engineResolver = engineResolver; this._crawlerResolver = crawlerResolver; }
public async Task <ActionResult <DocumentPreviewResponse> > GetAsync(long id, [FromServices] IQueueProvider queueProvider, [FromServices] ICrawlerResolver crawlerResolver, [FromServices] IIndex <DocumentType, IDocumentGenerator> generatorIndex, [FromServices] IUrlBuilder urlBuilder, CancellationToken token) { long?userId = null; if (User.Identity.IsAuthenticated) { userId = _userManager.GetLongUserId(User); } var query = new DocumentById(id, userId); var model = await _queryBus.QueryAsync(query, token); if (model == null) { return(NotFound()); } model.Document.User.Image = urlBuilder.BuildUserImageEndpoint(model.Document.User.Id, model.Document.User.Image); if (model.Tutor != null) { model.Tutor.Image = urlBuilder.BuildUserImageEndpoint(model.Tutor.UserId, model.Tutor.Image); } var tQueue = queueProvider.InsertMessageAsync(new UpdateDocumentNumberOfViews(id), token); var textTask = Task; if (crawlerResolver.Crawler != null) { textTask = _blobProvider.DownloadTextAsync("text.txt", query.Id.ToString(), token); } var files = await generatorIndex[model.Document.DocumentType].GeneratePreviewAsync(model, userId.GetValueOrDefault(-1), token); await System.Threading.Tasks.Task.WhenAll(tQueue, textTask); model.Document.Url = Url.DocumentUrl(model.Document.Course, model.Document.Id, model.Document.Title); return(new DocumentPreviewResponse(model, files, textTask.Result)); }