示例#1
0
        /// <summary>
        /// Generateurls the specified URL.
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <returns>IActionResult.</returns>
        public IActionResult generateurl(PageURL url)
        {
            ModelState.Clear();

            var _allKeys = _localCache.Get <AllPageUrls>("AllKeys");

            if (_allKeys == null)
            {
                _allKeys = new AllPageUrls()
                {
                    Id = Guid.NewGuid(), AllUrls = new List <PageURL>()
                };
            }
            else if (_allKeys.AllUrls == null)
            {
                _allKeys.AllUrls = new List <PageURL>();
            }

            var rtn = new PageURL()
            {
                Id = Guid.NewGuid(), FullURL = url.FullURL, ShortURL = Shortener.GetHash(url.FullURL)
            };

            _localCache.Set(rtn.ShortURL.ToString(), url.FullURL, TimeSpan.FromHours(24));

            _allKeys.AllUrls.Add(rtn);


            _localCache.Set("AllKeys", _allKeys, TimeSpan.FromHours(24));

            PersistentStore.Store(_localCache, _persistentStore, _allrepository, _repository);

            return(View("ShortenURL", rtn));
        }
示例#2
0
        /// <summary>
        /// Views the urls.
        /// </summary>
        /// <returns>IActionResult.</returns>
        public IActionResult ViewUrls()
        {
            var rtn    = new AllPageUrls();
            var rtnurl = new List <PageURL>();

            _localCache.TryGetValue("AllKeys", out rtn);
            rtn ??= new AllPageUrls();

            rtnurl.AddRange(rtn.AllUrls.ToArray());


            return(View(rtnurl));
        }
示例#3
0
        /// <summary>
        /// Stores the specified local cache.
        /// </summary>
        /// <param name="_localCache">The local cache.</param>
        /// <param name="storestyle">The storestyle.</param>
        /// <param name="alldatabase">The alldatabase.</param>
        /// <param name="database">The database.</param>
        public static void Store(IMemoryCache _localCache, RestoreStoreStyleEnum storestyle, IAllPageURLRepository alldatabase, IPageURLRepository database)
        {
            bool blanklist = true;

            var _allKeys = new AllPageUrls();

            _localCache.TryGetValue("AllKeys", out _allKeys);



            if (storestyle == RestoreStoreStyleEnum.File)
            {
                using FileStream fs = File.Create("storevalues.json");

                var    _output = JsonConvert.SerializeObject(_allKeys.AllUrls);
                byte[] bytes   = Encoding.UTF8.GetBytes(_output);
                fs.Write(bytes, 0, bytes.Length);
            }
            if (storestyle == RestoreStoreStyleEnum.Db)
            {
                var allDbkey  = alldatabase.GetAllPageURL();
                var allDbkeys = database.GetAllPageURL();

                Guid originalId = Guid.NewGuid();

                if (allDbkey.Result != null)
                {
                    originalId = allDbkey.Result.Id;
                    blanklist  = false;
                }


                var Allkeys = new AllPageUrls()
                {
                    Id = originalId, AllUrls = new List <PageURL>()
                };

                Allkeys.AllUrls.AddRange(_allKeys.AllUrls);
                if (blanklist)
                {
                    alldatabase.SetAllUrls(Allkeys);
                }
                else
                {
                    alldatabase.Update(Allkeys);
                }
            }
        }