Try your search with a different keyword or use * as a wildcard.
using System.Net;
using Microsoft.AspNetCore.Http;
using Microsoft.Net.Http.Headers;
using Nop.Core;
using Nop.Core.Domain.Common;
using Nop.Core.Domain.Messages;
using Nop.Core.Rss;
using Nop.Services.Localization;
using Nop.Services.Messages;
namespace Nop.Services.Common;
///
/// Represents the HTTP client to request nopCommerce official site
///
public partial class NopHttpClient
{
#region Fields
protected readonly AdminAreaSettings _adminAreaSettings;
protected readonly EmailAccountSettings _emailAccountSettings;
protected readonly HttpClient _httpClient;
protected readonly IEmailAccountService _emailAccountService;
protected readonly IHttpContextAccessor _httpContextAccessor;
protected readonly ILanguageService _languageService;
protected readonly IWebHelper _webHelper;
protected readonly IWorkContext _workContext;
#endregion
#region Ctor
public NopHttpClient(AdminAreaSettings adminAreaSettings,
EmailAccountSettings emailAccountSettings,
HttpClient client,
IEmailAccountService emailAccountService,
IHttpContextAccessor httpContextAccessor,
ILanguageService languageService,
IWebHelper webHelper,
IWorkContext workContext)
{
//configure client
client.BaseAddress = new Uri("https://www.nopcommerce.com/");
client.Timeout = TimeSpan.FromSeconds(5);
client.DefaultRequestHeaders.Add(HeaderNames.UserAgent, $"nopCommerce-{NopVersion.CURRENT_VERSION}");
_adminAreaSettings = adminAreaSettings;
_emailAccountSettings = emailAccountSettings;
_httpClient = client;
_emailAccountService = emailAccountService;
_httpContextAccessor = httpContextAccessor;
_languageService = languageService;
_webHelper = webHelper;
_workContext = workContext;
}
#endregion
#region Methods
///
/// Check whether the site is available
///
///
/// A task that represents the asynchronous operation
/// The task result contains the asynchronous task whose result determines that request is completed
///
public virtual async Task PingAsync()
{
await _httpClient.GetStringAsync("/");
}
///
/// Check the current store for license compliance
///
///
/// A task that represents the asynchronous operation
/// The task result contains the asynchronous task whose result contains the license check details
///
public virtual async Task GetLicenseCheckDetailsAsync()
{
var isLocal = _webHelper.IsLocalRequest(_httpContextAccessor.HttpContext.Request);
var storeUrl = _webHelper.GetStoreLocation();
if (!_adminAreaSettings.CheckLicense || isLocal || storeUrl.Contains("localhost"))
return string.Empty;
var emailAccount = await _emailAccountService.GetEmailAccountByIdAsync(_emailAccountSettings.DefaultEmailAccountId)
?? (await _emailAccountService.GetAllEmailAccountsAsync()).FirstOrDefault();
var language = _languageService.GetTwoLetterIsoLanguageName(await _workContext.GetWorkingLanguageAsync());
var url = string.Format(NopCommonDefaults.NopLicenseCheckPath,
storeUrl,
NopVersion.FULL_VERSION,
WebUtility.UrlEncode(emailAccount.Email),
language).ToLowerInvariant();
_httpClient.Timeout = TimeSpan.FromSeconds(3);
return await _httpClient.GetStringAsync(url);
}
///
/// Get official news RSS
///
///
/// A task that represents the asynchronous operation
/// The task result contains the asynchronous task whose result contains news RSS feed
///
public virtual async Task GetNewsRssAsync()
{
//prepare URL to request
var language = _languageService.GetTwoLetterIsoLanguageName(await _workContext.GetWorkingLanguageAsync());
var url = string.Format(NopCommonDefaults.NopNewsRssPath,
NopVersion.FULL_VERSION,
_webHelper.IsLocalRequest(_httpContextAccessor.HttpContext.Request),
_adminAreaSettings.HideAdvertisementsOnAdminArea,
_webHelper.GetStoreLocation(),
language).ToLowerInvariant();
//get news feed
await using var stream = await _httpClient.GetStreamAsync(url);
return await RssFeed.LoadAsync(stream);
}
///
/// Notification about the successful installation
///
/// Admin email
/// Language code
/// Culture name
///
/// A task that represents the asynchronous operation
/// The task result contains the asynchronous task whose result contains the result string
///
public virtual async Task InstallationCompletedAsync(string email, string languageCode, string culture)
{
//prepare URL to request
var url = string.Format(NopCommonDefaults.NopInstallationCompletedPath,
NopVersion.FULL_VERSION,
_webHelper.IsLocalRequest(_httpContextAccessor.HttpContext.Request),
WebUtility.UrlEncode(email),
_webHelper.GetStoreLocation(),
languageCode,
culture)
.ToLowerInvariant();
//this request takes some more time
_httpClient.Timeout = TimeSpan.FromSeconds(30);
return await _httpClient.GetStringAsync(url);
}
///
/// Subscribe to nopCommerce newsletters during installation
///
/// Admin email
///
/// A task that represents the asynchronous operation
/// The task result contains the asynchronous task whose result contains the result string
///
public virtual async Task SubscribeNewslettersAsync(string email)
{
//prepare URL to request
var url = string.Format(NopCommonDefaults.NopSubscribeNewslettersPath,
WebUtility.UrlEncode(email))
.ToLowerInvariant();
return await _httpClient.GetAsync(url);
}
///
/// Get a response regarding available categories of marketplace extensions
///
///
/// A task that represents the asynchronous operation
/// The task result contains the asynchronous task whose result contains the result string
///
public virtual async Task GetExtensionsCategoriesAsync()
{
//prepare URL to request
var language = _languageService.GetTwoLetterIsoLanguageName(await _workContext.GetWorkingLanguageAsync());
var url = string.Format(NopCommonDefaults.NopExtensionsCategoriesPath, language).ToLowerInvariant();
//get XML response
return await _httpClient.GetStringAsync(url);
}
///
/// Get a response regarding available versions of marketplace extensions
///
///
/// A task that represents the asynchronous operation
/// The task result contains the asynchronous task whose result contains the result string
///
public virtual async Task GetExtensionsVersionsAsync()
{
//prepare URL to request
var language = _languageService.GetTwoLetterIsoLanguageName(await _workContext.GetWorkingLanguageAsync());
var url = string.Format(NopCommonDefaults.NopExtensionsVersionsPath, language).ToLowerInvariant();
//get XML response
return await _httpClient.GetStringAsync(url);
}
///
/// Get a response regarding marketplace extensions
///
/// Category identifier
/// Version identifier
/// Price; 0 - all, 10 - free, 20 - paid
/// Search term
/// Page index
/// Page size
///
/// A task that represents the asynchronous operation
/// The task result contains the asynchronous task whose result contains the result string
///
public virtual async Task GetExtensionsAsync(int categoryId = 0,
int versionId = 0, int price = 0, string searchTerm = null,
int pageIndex = 0, int pageSize = int.MaxValue)
{
//prepare URL to request
var language = _languageService.GetTwoLetterIsoLanguageName(await _workContext.GetWorkingLanguageAsync());
var url = string.Format(NopCommonDefaults.NopExtensionsPath,
categoryId, versionId, price, WebUtility.UrlEncode(searchTerm), pageIndex, pageSize, language).ToLowerInvariant();
//get XML response
return await _httpClient.GetStringAsync(url);
}
#endregion
}