public RedirectorController(IConfiguration configuration,
                             IDeviceResolver deviceResolver,
                             ICrawlerResolver crawlerResolver,
                             IMemoryCache memoryCache)
 {
     _deviceResolver  = deviceResolver;
     _crawlerResolver = crawlerResolver;
     _memoryCache     = memoryCache;
     _configuration   = configuration;
 }
Exemple #2
0
 public Detection(IUserAgentService service,
                  IDeviceResolver deviceResolver,
                  IBrowserResolver browserResolver,
                  ICrawlerResolver crawlerResolver)
 {
     this._service         = service;
     this._deviceResolver  = deviceResolver;
     this._browserResolver = browserResolver;
     this._crawlerResolver = crawlerResolver;
 }
Exemple #3
0
 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));
        }