#112 converting some httpclient usages in main page to db queries
This commit is contained in:
parent
1389f7b473
commit
ee7e05d611
@ -44,6 +44,9 @@ namespace GanjooRazor.Pages
|
||||
/// </summary>
|
||||
private readonly IAppUserService _appUserService;
|
||||
|
||||
/// <summary>
|
||||
/// ganjoor service
|
||||
/// </summary>
|
||||
private readonly IGanjoorService _ganjoorService;
|
||||
|
||||
/// <summary>
|
||||
@ -475,11 +478,12 @@ namespace GanjooRazor.Pages
|
||||
var cacheKey = $"/api/ganjoor/poets?includeBio={includeBio}";
|
||||
if(!_memoryCache.TryGetValue(cacheKey, out List<GanjoorPoetViewModel> poets))
|
||||
{
|
||||
var response = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/poets?includeBio={includeBio}");
|
||||
response.EnsureSuccessStatusCode();
|
||||
poets = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject<List<GanjoorPoetViewModel>>();
|
||||
|
||||
_memoryCache.Set(cacheKey, poets);
|
||||
var resPoets = await _ganjoorService.GetPoets(true, false);
|
||||
if(!string.IsNullOrEmpty(resPoets.ExceptionString))
|
||||
{
|
||||
poets = new List<GanjoorPoetViewModel>(resPoets.Result);
|
||||
_memoryCache.Set(cacheKey, poets);
|
||||
}
|
||||
}
|
||||
|
||||
Poets = poets;
|
||||
@ -505,26 +509,23 @@ namespace GanjooRazor.Pages
|
||||
|
||||
if (!string.IsNullOrEmpty(Request.Query["p"]))
|
||||
{
|
||||
var pageUrlResponse = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/pageurl?id={Request.Query["p"]}");
|
||||
pageUrlResponse.EnsureSuccessStatusCode();
|
||||
var pageUrl = JsonConvert.DeserializeObject<string>(await pageUrlResponse.Content.ReadAsStringAsync());
|
||||
return Redirect(pageUrl);
|
||||
var pageUrlRes = await _ganjoorService.GetPageUrlById(int.Parse(Request.Query["p"]));
|
||||
return Redirect(pageUrlRes.Result);
|
||||
}
|
||||
|
||||
await preparePoets(false);
|
||||
|
||||
if (!IsHomePage)
|
||||
{
|
||||
var pageQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/page?url={Request.Path}");
|
||||
if (!pageQuery.IsSuccessStatusCode)
|
||||
var pageRes = await _ganjoorService.GetPageByUrl(Request.Path, true);
|
||||
if(!string.IsNullOrEmpty(pageRes.ExceptionString))
|
||||
{
|
||||
if (pageQuery.StatusCode == HttpStatusCode.NotFound)
|
||||
if(pageRes.Result == null)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
}
|
||||
pageQuery.EnsureSuccessStatusCode();
|
||||
GanjoorPage = JObject.Parse(await pageQuery.Content.ReadAsStringAsync()).ToObject<GanjoorPageCompleteViewModel>();
|
||||
GanjoorPage = pageRes.Result;
|
||||
GanjoorPage.HtmlText = GanjoorPage.HtmlText.Replace("https://ganjoor.net/", "/").Replace("http://ganjoor.net/", "/");
|
||||
switch (GanjoorPage.GanjoorPageType)
|
||||
{
|
||||
@ -545,14 +546,7 @@ namespace GanjooRazor.Pages
|
||||
|
||||
if (IsPoemPage)
|
||||
{
|
||||
var bannerQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/site/banner");
|
||||
bannerQuery.EnsureSuccessStatusCode();
|
||||
string bannerResponse = await bannerQuery.Content.ReadAsStringAsync();
|
||||
if (!string.IsNullOrEmpty(bannerResponse))
|
||||
{
|
||||
Banner = JObject.Parse(bannerResponse).ToObject<GanjoorSiteBannerViewModel>();
|
||||
}
|
||||
|
||||
Banner = (await _ganjoorService.GetARandomActiveSiteBanner()).Result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -35,17 +35,20 @@ namespace GanjooRazor.Pages
|
||||
string metre = Request.Query["v"];
|
||||
string rhyme = Request.Query["g"];
|
||||
|
||||
string url = $"{APIRoot.Url}/api/ganjoor/poems/similar?PageNumber={pageNumber}&PageSize=20&metre={metre}&rhyme={rhyme}";
|
||||
|
||||
|
||||
var response = await _httpClient.GetAsync(url);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
LastError = await response.Content.ReadAsStringAsync();
|
||||
return;
|
||||
}
|
||||
|
||||
response.EnsureSuccessStatusCode();
|
||||
var poemsRes =
|
||||
(
|
||||
await _ganjoorService.GetSimilarPoems
|
||||
(
|
||||
new PagingParameterModel()
|
||||
{
|
||||
PageNumber = pageNumber,
|
||||
PageSize = 20
|
||||
},
|
||||
metre,
|
||||
rhyme,
|
||||
null
|
||||
)
|
||||
).Result;
|
||||
|
||||
GanjoorPage.Title = "شعرهای ";
|
||||
|
||||
@ -60,13 +63,12 @@ namespace GanjooRazor.Pages
|
||||
string htmlText = "";
|
||||
|
||||
|
||||
var poems = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject<List<GanjoorPoemCompleteViewModel>>();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
foreach (var poem in poems)
|
||||
foreach (var poem in poemsRes.Items)
|
||||
{
|
||||
htmlText += $"<div class=\"sitem\" id=\"post-{poem.Id}\">{Environment.NewLine}<h2><a href=\"{poem.FullUrl}\" rel=\"bookmark\">{poem.FullTitle}</a>{Environment.NewLine}</h2>{Environment.NewLine}" +
|
||||
$"<div class=\"spacer\"> </div>{Environment.NewLine}"
|
||||
@ -83,41 +85,34 @@ namespace GanjooRazor.Pages
|
||||
|
||||
htmlText += "<p style=\"text-align: center;\">";
|
||||
|
||||
string paginnationMetadata = response.Headers.GetValues("paging-headers").FirstOrDefault();
|
||||
if (!string.IsNullOrEmpty(paginnationMetadata))
|
||||
PaginationMetadata paginationMetadata = poemsRes.PagingMeta;
|
||||
|
||||
if (paginationMetadata.totalPages > 1)
|
||||
{
|
||||
|
||||
|
||||
PaginationMetadata paginationMetadata = JsonConvert.DeserializeObject<PaginationMetadata>(paginnationMetadata);
|
||||
|
||||
|
||||
if (paginationMetadata.totalPages > 1)
|
||||
GanjoorPage.Title += $" - صفحهٔ {pageNumber.ToPersianNumbers()}";
|
||||
if (paginationMetadata.currentPage > 3)
|
||||
{
|
||||
GanjoorPage.Title += $" - صفحهٔ {pageNumber.ToPersianNumbers()}";
|
||||
if (paginationMetadata.currentPage > 3)
|
||||
htmlText += $"[<a href=\"/simi/?v={Uri.EscapeUriString(metre)}&g={Uri.EscapeUriString(rhyme)}&page=1\">صفحهٔ اول</a>] …";
|
||||
}
|
||||
for (int i = (paginationMetadata.currentPage - 2); i <= (paginationMetadata.currentPage + 2); i++)
|
||||
{
|
||||
if (i >= 1 && i <= paginationMetadata.totalPages)
|
||||
{
|
||||
htmlText += $"[<a href=\"/simi/?v={Uri.EscapeUriString(metre)}&g={Uri.EscapeUriString(rhyme)}&page=1\">صفحهٔ اول</a>] …";
|
||||
}
|
||||
for (int i = (paginationMetadata.currentPage - 2); i <= (paginationMetadata.currentPage + 2); i++)
|
||||
{
|
||||
if (i >= 1 && i <= paginationMetadata.totalPages)
|
||||
htmlText += " [";
|
||||
if (i == paginationMetadata.currentPage)
|
||||
{
|
||||
htmlText += " [";
|
||||
if (i == paginationMetadata.currentPage)
|
||||
{
|
||||
htmlText += i.ToPersianNumbers();
|
||||
}
|
||||
else
|
||||
{
|
||||
htmlText += $"<a href=\"/simi/?v={Uri.EscapeUriString(metre)}&g={Uri.EscapeUriString(rhyme)}&page={i}\">{i.ToPersianNumbers()}</a>";
|
||||
}
|
||||
htmlText += "] ";
|
||||
htmlText += i.ToPersianNumbers();
|
||||
}
|
||||
else
|
||||
{
|
||||
htmlText += $"<a href=\"/simi/?v={Uri.EscapeUriString(metre)}&g={Uri.EscapeUriString(rhyme)}&page={i}\">{i.ToPersianNumbers()}</a>";
|
||||
}
|
||||
htmlText += "] ";
|
||||
}
|
||||
if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2))
|
||||
{
|
||||
htmlText += $"… [<a href=\"/simi/?v={Uri.EscapeUriString(metre)}&g={Uri.EscapeUriString(rhyme)}&page={paginationMetadata.totalPages}\">صفحهٔ آخر</a>]";
|
||||
}
|
||||
}
|
||||
if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2))
|
||||
{
|
||||
htmlText += $"… [<a href=\"/simi/?v={Uri.EscapeUriString(metre)}&g={Uri.EscapeUriString(rhyme)}&page={paginationMetadata.totalPages}\">صفحهٔ آخر</a>]";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -31,17 +31,17 @@ namespace GanjooRazor.Pages
|
||||
string metre = Request.Query["v"];
|
||||
int poetId = string.IsNullOrEmpty(Request.Query["a"]) ? 0 : int.Parse(Request.Query["a"]);
|
||||
|
||||
string url = $"{APIRoot.Url}/api/ganjoor/poems/similar?PageNumber={pageNumber}&PageSize=20&metre={metre}&poetId={poetId}";
|
||||
|
||||
|
||||
var response = await _httpClient.GetAsync(url);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
LastError = await response.Content.ReadAsStringAsync();
|
||||
return;
|
||||
}
|
||||
|
||||
response.EnsureSuccessStatusCode();
|
||||
var poemsRes = await _ganjoorService.GetSimilarPoems
|
||||
(
|
||||
new PagingParameterModel()
|
||||
{
|
||||
PageNumber = pageNumber,
|
||||
PageSize = 20
|
||||
},
|
||||
metre: metre,
|
||||
rhyme: null,
|
||||
poetId: poetId
|
||||
);
|
||||
|
||||
GanjoorPage.Title = "شعرهای ";
|
||||
if (poetId != 0)
|
||||
@ -65,13 +65,9 @@ namespace GanjooRazor.Pages
|
||||
htmlText += $"</div>{Environment.NewLine}";
|
||||
}
|
||||
|
||||
var poems = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject<List<GanjoorPoemCompleteViewModel>>();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
foreach (var poem in poems)
|
||||
foreach (var poem in poemsRes.Result.Items)
|
||||
{
|
||||
htmlText += $"<div class=\"sitem\" id=\"post-{poem.Id}\">{Environment.NewLine}<h2><a href=\"{poem.FullUrl}\" rel=\"bookmark\">{poem.FullTitle}</a>{Environment.NewLine}</h2>{Environment.NewLine}" +
|
||||
$"<div class=\"spacer\"> </div>{Environment.NewLine}"
|
||||
@ -88,42 +84,37 @@ namespace GanjooRazor.Pages
|
||||
|
||||
htmlText += "<p style=\"text-align: center;\">";
|
||||
|
||||
string paginnationMetadata = response.Headers.GetValues("paging-headers").FirstOrDefault();
|
||||
if (!string.IsNullOrEmpty(paginnationMetadata))
|
||||
PaginationMetadata paginationMetadata = poemsRes.Result.PagingMeta;
|
||||
|
||||
string queryPoetId = poetId == 0 ? "" : $"&a={poetId}";
|
||||
|
||||
if (paginationMetadata.totalPages > 1)
|
||||
{
|
||||
GanjoorPage.Title += $" - صفحهٔ {pageNumber.ToPersianNumbers()}";
|
||||
|
||||
PaginationMetadata paginationMetadata = JsonConvert.DeserializeObject<PaginationMetadata>(paginnationMetadata);
|
||||
|
||||
string queryPoetId = poetId == 0 ? "" : $"&a={poetId}";
|
||||
|
||||
if (paginationMetadata.totalPages > 1)
|
||||
if (paginationMetadata.currentPage > 3)
|
||||
{
|
||||
GanjoorPage.Title += $" - صفحهٔ {pageNumber.ToPersianNumbers()}";
|
||||
|
||||
if (paginationMetadata.currentPage > 3)
|
||||
htmlText += $"[<a href=\"/vazn/?v={Uri.EscapeUriString(metre)}&page=1{queryPoetId}\">صفحهٔ اول</a>] …";
|
||||
}
|
||||
for (int i = (paginationMetadata.currentPage - 2); i <= (paginationMetadata.currentPage + 2); i++)
|
||||
{
|
||||
if (i >= 1 && i <= paginationMetadata.totalPages)
|
||||
{
|
||||
htmlText += $"[<a href=\"/vazn/?v={Uri.EscapeUriString(metre)}&page=1{queryPoetId}\">صفحهٔ اول</a>] …";
|
||||
}
|
||||
for (int i = (paginationMetadata.currentPage - 2); i <= (paginationMetadata.currentPage + 2); i++)
|
||||
{
|
||||
if (i >= 1 && i <= paginationMetadata.totalPages)
|
||||
htmlText += " [";
|
||||
if (i == paginationMetadata.currentPage)
|
||||
{
|
||||
htmlText += " [";
|
||||
if (i == paginationMetadata.currentPage)
|
||||
{
|
||||
htmlText += i.ToPersianNumbers();
|
||||
}
|
||||
else
|
||||
{
|
||||
htmlText += $"<a href=\"/vazn/?v={Uri.EscapeUriString(metre)}&page={i}{queryPoetId}\">{i.ToPersianNumbers()}</a>";
|
||||
}
|
||||
htmlText += "] ";
|
||||
htmlText += i.ToPersianNumbers();
|
||||
}
|
||||
else
|
||||
{
|
||||
htmlText += $"<a href=\"/vazn/?v={Uri.EscapeUriString(metre)}&page={i}{queryPoetId}\">{i.ToPersianNumbers()}</a>";
|
||||
}
|
||||
htmlText += "] ";
|
||||
}
|
||||
if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2))
|
||||
{
|
||||
htmlText += $"… [<a href=\"/vazn/?v={Uri.EscapeUriString(metre)}&page={paginationMetadata.totalPages}{queryPoetId}\">صفحهٔ آخر</a>]";
|
||||
}
|
||||
}
|
||||
if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2))
|
||||
{
|
||||
htmlText += $"… [<a href=\"/vazn/?v={Uri.EscapeUriString(metre)}&page={paginationMetadata.totalPages}{queryPoetId}\">صفحهٔ آخر</a>]";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user