/// <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)); }
/// <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)); }
/// <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); } } }