Example #1
0
        public async Task <IActionResult> Index(string tinyCode)
        {
            TinyActionResult <Url> res = new TinyActionResult <Url>();

            res = await _urlService.GetByIdAsync(tinyCode, true);

            if (res.IsSuccess)
            {
                return(Redirect(res.Data.SourceUrl));
            }
            else
            {
                return(View("404"));
            }
        }
Example #2
0
        public async Task <TinyActionResult <Url> > InsertAsync(string MainUrl)
        {
            TinyActionResult <Url> res = new TinyActionResult <Url>();

            res.Data      = null;
            res.IsSuccess = false;
            try
            {
                if (Helper.IsValidURL(MainUrl))
                {
                    //you can use your algorithm to generate uniqe code
                    string generateCode = Guid.NewGuid().ToString();
                    Url    u            = new Url()
                    {
                        TinyCode  = generateCode,
                        SourceUrl = MainUrl
                    };
                    await _dbContext.AddAsync(u);

                    var dbRes = await _dbContext.SaveChangesAsync();

                    if (dbRes > 0)
                    {
                        res.Data      = u;
                        res.Message   = Messages.SuccessfullyAdd;
                        res.IsSuccess = true;
                    }
                    else
                    {
                        res.Message = Messages.Error;
                    }
                }
                else
                {
                    res.Message = Messages.NotValidUrl;
                }
                return(res);
            }
            catch (Exception ex)
            {
                //Log
                res.Message = ex.Message;
                return(res);
            }
        }
Example #3
0
        public async Task <TinyActionResult <Url> > GetByIdAsync(string TinyCode, bool doHit)
        {
            TinyActionResult <Url> res = new TinyActionResult <Url>();

            res.Data      = null;
            res.IsSuccess = false;
            try
            {
                var TinyObj = await _dbContext.Urls.Where(o => o.TinyCode == TinyCode).SingleOrDefaultAsync();

                if (TinyObj != null)
                {
                    res.Data      = TinyObj;
                    res.IsSuccess = true;
                    res.Message   = Messages.SuccessfullyFind;
                    if (doHit)
                    {
                        try
                        {
                            var item = _dbContext.Urls.Where(o => o.TinyCode == TinyCode).SingleOrDefault();
                            item.Hit++;
                            await _dbContext.SaveChangesAsync();
                        }
                        catch (Exception ex)
                        {
                            //Log
                            throw;
                        }
                    }
                }
                else
                {
                    res.Message = Messages.NoItemFound;
                }
                return(res);
            }
            catch (Exception ex)
            {
                //Log
                res.Data      = null;
                res.IsSuccess = false;
                res.Message   = ex.Message;
                return(res);
            }
        }