diff --git a/src/Umbraco.Core/Composing/CompositionExtensions/Repositories.cs b/src/Umbraco.Core/Composing/CompositionExtensions/Repositories.cs index 23dc9e67c6..00b29dd97f 100644 --- a/src/Umbraco.Core/Composing/CompositionExtensions/Repositories.cs +++ b/src/Umbraco.Core/Composing/CompositionExtensions/Repositories.cs @@ -47,6 +47,8 @@ namespace Umbraco.Core.Composing.CompositionExtensions composition.RegisterUnique(); composition.RegisterUnique(); composition.RegisterUnique(); + composition.RegisterUnique(); + composition.RegisterUnique(); return composition; } diff --git a/src/Umbraco.Core/Persistence/Repositories/IInstallationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IInstallationRepository.cs new file mode 100644 index 0000000000..f786aee319 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/IInstallationRepository.cs @@ -0,0 +1,11 @@ +using System; +using System.Threading.Tasks; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IInstallationRepository + { + Task SaveInstall(InstallLog installLog); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/IUpgradeCheckRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IUpgradeCheckRepository.cs new file mode 100644 index 0000000000..4575ddaa2c --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/IUpgradeCheckRepository.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using Semver; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IUpgradeCheckRepository + { + Task CheckUpgrade(SemVersion version); + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/InstallationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/InstallationRepository.cs new file mode 100644 index 0000000000..2ceb389fc4 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/InstallationRepository.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories.Implement +{ + internal class InstallationRepository : IInstallationRepository + { + private static HttpClient _httpClient; + private const string RestApiInstallUrl = "https://our.umbraco.com/umbraco/api/Installation/Install"; + + + public async Task SaveInstall(InstallLog installLog) + { + try + { + if (_httpClient == null) + _httpClient = new HttpClient(); + + var jsonObj = JsonConvert.SerializeObject(installLog); + var content = new StringContent(jsonObj, Encoding.UTF8, "application/json"); + await _httpClient.PostAsync(RestApiInstallUrl, content); + } + // this occurs if the server for Our is down or cannot be reached + catch (HttpRequestException) + { } + } + } +} diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/UpgradeCheckRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/UpgradeCheckRepository.cs new file mode 100644 index 0000000000..048ca23aa4 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/UpgradeCheckRepository.cs @@ -0,0 +1,40 @@ +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; +using Semver; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories.Implement +{ + internal class UpgradeCheckRepository : IUpgradeCheckRepository + { + private static HttpClient _httpClient; + private const string RestApiUpgradeChecklUrl = "https://our.umbraco.com/umbraco/api/UpgradeCheck/CheckUpgrade"; + + + public async Task CheckUpgrade(SemVersion version) + { + try + { + if (_httpClient == null) + _httpClient = new HttpClient(); + + var jsonObj = new { VersionMajor = version.Major, VersionMinor = version.Minor, VersionPatch = version.Patch, VersionComment = version.Prerelease }; + var json = JsonConvert.SerializeObject(jsonObj); + var content = new StringContent(json, Encoding.UTF8, "application/json"); + + var task = await _httpClient.PostAsync(RestApiUpgradeChecklUrl, content); + var jsonResponse = await task.Content.ReadAsStringAsync(); + var result = JsonConvert.DeserializeObject(jsonResponse); + + return result ?? new UpgradeResult("None", "", ""); + } + catch (HttpRequestException) + { + // this occurs if the server for Our is down or cannot be reached + return new UpgradeResult("None", "", ""); + } + } + } +} diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 1fc3709e88..af58075e60 100755 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -131,12 +131,21 @@ + + + + + + + + + @@ -1552,6 +1561,7 @@ +