Exemple #1
0
        public async Task <IActionResult> CreateURL([FromBody] URLShort url)
        {
            if (await _repo.URLExists(url))
            {
                var savedURL = await _repo.getURL(url.urlCode);

                var urlReturns = _mapper.Map <URLForReturnDTO>(savedURL);
                urlReturns.shortUrl = urlReturns.baseUrl + "/" + urlReturns.urlCode;
                return(Ok(urlReturns));
            }

            if (url.urlCode.Length < 1)
            {
                url.urlCode = String.Format("{0:X}", url.originalURl.GetHashCode());
            }

            url.shortUrl = url.baseUrl + "/" + url.urlCode;


            var userToCreate = _mapper.Map <URLShort>(url);
            var createdURL   = await _repo.CreateURL(userToCreate);

            var urlToReturn = _mapper.Map <URLForReturnDTO>(createdURL);

            urlToReturn.shortUrl = urlToReturn.baseUrl + "/" + urlToReturn.urlCode;
            return(CreatedAtRoute("GetURL", new { Controller = "URL", urlCode = createdURL.urlCode }, urlToReturn));
        }
Exemple #2
0
        public async Task <URLShort> CreateURL(URLShort url)
        {
            await _context.URLShort.AddAsync(url); //adding to database

            await _context.SaveChangesAsync();

            return(url);
        }
Exemple #3
0
        public async Task <IActionResult> checkOriginalURL([FromBody] URLShort req)
        {
            var url = await _repo.checkOriginalURL(req.originalURl);

            if (url?.originalURl.Length > 0)
            {
                return(Ok(url));
            }
            return(Ok(false));
        }
Exemple #4
0
        public async Task <bool> URLExists(URLShort url)
        {
            var shortURL = await _context.URLShort.AnyAsync(x => x.urlCode == url.urlCode);

            //AnyAsync return bool
            if (shortURL)
            {
                return(true);
            }

            return(false);
        }
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            if (null != filterContext.Result)
            {
                return;
            }
            if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true))
            {
                return;
            }


            #region 权限校验

            if (CurrentUser.Name.ToLower() == "admin")
            {
                return;
            }
            if (!CurrentUser.Enable)
            {
                filterContext.Result = Redirect(Url.Action("PowerLimit", "Error", new { Msg = "您的帐户已被禁用,请联系管理员" }));
            }
            string URLShortConsole = URLShort.Replace("/Wechat/", "/MP/");
            string URLFullConsole  = URLFull.Replace("/Wechat/", "/MP/");
            List <PowerActionInfo> CurrentPowerActions = PowerActionBLL.GetList(p =>
                                                                                (p.Url.Contains(URLFull) || p.Url.Contains(URLFullConsole))
                                                                                ).ToList();
            if (null == CurrentPowerActions || CurrentPowerActions.Count == 0)
            {
                filterContext.Result = Redirect(Url.Action("PowerLimit", "Error", new { Msg = "系统不知道有这样的操作权限" }));
                return;
            }

            bool result = CurrentPowerActions.Any(a => PowerActionBLL.PowerCheck(a, CurrentUser));
            if (!result)
            {
                filterContext.Result = Redirect(Url.Action("PowerLimit", "Error", new { Msg = "权限不足,用户已被禁止访问" }));
                return;
            }
            #endregion
        }
Exemple #6
0
        public HttpResponseMessage Post([FromBody] URLShort url)
        {
            try
            {
                using (TestesEntities entities = new TestesEntities())
                {
                    //Faz uma solicitação ao bitly
                    WebRequest  request = WebRequest.Create("http://api.bitly.com/v3/shorten");
                    XmlDocument xmlDoc  = new XmlDocument();
                    //passa os dados do usuário, a chave da API e a url original
                    byte[] data = Encoding.UTF8.GetBytes(string.Format("login={0}&apiKey={1}&longUrl={2}&format={3}",
                                                                       "adler74",
                                                                       "R_7ea37adab2cf402980a6cbd7a5761229",
                                                                       System.Web.HttpUtility.UrlEncode(url.url),
                                                                       "xml"));

                    request.Method        = "POST";
                    request.ContentType   = "application/x-www-form-urlencoded";
                    request.ContentLength = data.Length;
                    using (Stream ds = request.GetRequestStream())
                    {
                        ds.Write(data, 0, data.Length);
                    }
                    //lê o arquivo XML obtido do servidor
                    using (WebResponse response = request.GetResponse())
                    {
                        using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                        {
                            xmlDoc.LoadXml(sr.ReadToEnd());
                        }
                    }
                    // Extrai as informações do arquivo XML resposta obtido do servidor
                    string CodigoStatus = xmlDoc.GetElementsByTagName("status_code")[0].InnerText;
                    string TextoStatus  = xmlDoc.GetElementsByTagName("status_txt")[0].InnerText;
                    string Data         = xmlDoc.GetElementsByTagName("data")[0].InnerText;
                    if (CodigoStatus == "200")
                    {
                        string urlEncurtada = xmlDoc.GetElementsByTagName("url")[0].InnerText;
                        string urlOriginal  = xmlDoc.GetElementsByTagName("long_url")[0].InnerText;

                        url.url      = urlOriginal;
                        url.urlshort = urlEncurtada;
                        entities.URLShorts.Add(url);
                        entities.SaveChanges();

                        var message = Request.CreateResponse(HttpStatusCode.Created, url);
                        message.Headers.Location = new Uri(Request.RequestUri + url.urlshort.ToString());
                        return(message);
                    }
                    else
                    {
                        var message = Request.CreateErrorResponse(HttpStatusCode.BadRequest, TextoStatus);
                        return(message);
                    }
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }