private void AddLinkStatuses(AddLinkRequest addLinkRequest, string linkId)
 {
     dataFlowStatus.Links.Add(new LinkStatus(linkId,
                                             addLinkRequest.SourceId,
                                             addLinkRequest.TargetId,
                                             addLinkRequest.SourceMapLink,
                                             addLinkRequest.TargetMapLink));
 }
Exemplo n.º 2
0
        public async Task <ActionResult <LinkDto> > PostLink([FromBody] CreateLinkDto?createLinkDto)
        {
            var  request = new AddLinkRequest(createLinkDto?.FullUrl);
            Link link    = await _mediator.Send(request);

            var linkDto = _mapper.Map <LinkDto>(link);

            return(CreatedAtAction(nameof(GetLink), new { code = linkDto.ShortCode }, linkDto));
        }
        public void AddLink(AddLinkRequest addLinkRequest)
        {
            var linkId = GenerateLinkId();
            var link   = new Link(linkId, dataFlowFacade.GetNode(addLinkRequest.SourceId), dataFlowFacade.GetNode(addLinkRequest.TargetId));/*, TODO fix maplinks*/

            dataFlowFacade.AddLink(link);
            AddLinkStatuses(addLinkRequest, linkId);
            progress.Report(dataFlowStatus);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Adds a download link to the given device.
        /// </summary>
        /// <param name="request">Contains informations like the link itself or the priority. If you want to use multiple links sperate them with an ';' char.</param>
        public bool AddLinks(AddLinkRequest request)
        {
            request.Links = request.Links.Replace(";", "\\r\\n");
            var json     = JsonConvert.SerializeObject(request);
            var param    = new[] { json };
            var response = ApiHandler.CallAction <DefaultResponse <object> >(Device, "/linkgrabberv2/addLinks",
                                                                             param, JDownloaderHandler.LoginObject, true);

            return(response != null);
        }
        public async Task <ActionResult <AddLinkResponse> > CreateLink([FromBody] AddLinkRequest request)
        {
            try
            {
                await this.createNewLink.ExecuteUseCase(request.FileName, request.OriginalFileName, request.NumberDownloads, request.Password, request.CreatedBy);

                throw new NotImplementedException();
            }
            catch (Exception except)
            {
                return(BadRequest(except.Message));
            }
        }
 public void AddLink(IScenario scenario, AddLinkRequest addLinkRequest)
 {
     scenarioContainer.GetDataFlow(scenario).AddLink(addLinkRequest);
 }
Exemplo n.º 7
0
        public async Task <IActionResult> AddLink([FromBody] AddLinkRequest request,
                                                  [FromServices] AliasKeyService.AliasKeyService keyService)
        {
            if (request == null || !ModelState.IsValid)
            {
                return(BadRequest());
            }

            // TODO regex test incoming url for validity

            if (!request.Url.StartsWith("http"))
            {
                request.Url = "http://" + request.Url;
            }
            request.Url = new Uri(request.Url).ToString(); // this will standardize the url and lowercase approprate parts

            AddLinkResponse response = new AddLinkResponse()
            {
                OriginalUrl = request.Url
            };

            string alias  = null;
            bool   insert = false;

            if (!string.IsNullOrWhiteSpace(request.Alias))
            {
                // check if alias is already used in db
                string originalUrl = await _unitOfWork.LinksRepository.GetOriginalUrlByAlias(request.Alias);

                if (originalUrl != null)
                {
                    return(Conflict()); // alias is already used
                }
                alias  = request.Alias;
                insert = true;
            }
            else
            {
                // first check if the link already exists
                alias = await _unitOfWork.LinksRepository.GetAliasByLink(request.Url);

                if (alias == null)
                {
                    alias = await keyService.GetKey();

                    insert = true;
                }
            }

            if (insert)
            {
                Link link = new Link()
                {
                    Alias            = alias,
                    CreationDateTime = DateTime.UtcNow,
                    OriginalUrl      = request.Url
                };

                _unitOfWork.LinksRepository.Insert(link);
                await _unitOfWork.SaveAsync();
            }

            // TODO inject base url from configuration for the shortened url
            response.Link = $"{Request.Scheme}://{Request.Host}/{alias}";

            return(Ok(response));
        }