From 1af170e9ba76c040cb2eea9ec911e36c1b24bf01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Aug 2019 19:18:54 +0300 Subject: [PATCH] Update on NuGet.Config on project creation. --- .../Volo/Abp/Caching/DistributedCache.cs | 1 - .../Abp/Cli/Licensing/AbpIoApiKeyService.cs | 36 +++++++++++++++++++ .../Cli/Licensing/DeveloperApiKeyResult.cs | 12 +++++++ .../Volo/Abp/Cli/Licensing/IApiKeyService.cs | 10 ++++++ .../Abp/Cli/ProjectBuilding/ProjectBuilder.cs | 12 ++++++- .../Templates/App/AppTemplateBase.cs | 6 ++++ .../Templates/App/UpdateNuGetConfigStep.cs | 35 ++++++++++++++++++ .../{MvcModule => Module}/ModuleTemplate.cs | 0 8 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/DeveloperApiKeyResult.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/UpdateNuGetConfigStep.cs rename framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/{MvcModule => Module}/ModuleTemplate.cs (100%) diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs index 309125a0ff..7b93dc5c23 100644 --- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs +++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/DistributedCache.cs @@ -28,7 +28,6 @@ namespace Volo.Abp.Caching protected ICancellationTokenProvider CancellationTokenProvider { get; } - //TODO: Create IDistributedCacheSerializer protected IDistributedCacheSerializer Serializer { get; } protected ICurrentTenant CurrentTenant { get; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs new file mode 100644 index 0000000000..e48e7853d4 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/AbpIoApiKeyService.cs @@ -0,0 +1,36 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Cli.Http; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Json; + +namespace Volo.Abp.Cli.Licensing +{ + public class AbpIoApiKeyService : IApiKeyService, ITransientDependency + { + public AbpIoApiKeyService(IJsonSerializer jsonSerializer) + { + JsonSerializer = jsonSerializer; + } + + protected IJsonSerializer JsonSerializer { get; } + + public async Task GetApiKeyOrNullAsync() + { + using (var client = new CliHttpClient()) + { + var url = $"{CliUrls.WwwAbpIo}api/license/api-key"; + + var response = await client.GetAsync(url); + + if (!response.IsSuccessStatusCode) + { + throw new Exception($"ERROR: Remote server returns '{response.StatusCode}'"); + } + + var responseContent = await response.Content.ReadAsStringAsync(); + return JsonSerializer.Deserialize(responseContent).ApiKey; + } + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/DeveloperApiKeyResult.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/DeveloperApiKeyResult.cs new file mode 100644 index 0000000000..5785ce6cfd --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/DeveloperApiKeyResult.cs @@ -0,0 +1,12 @@ +using System; + +namespace Volo.Abp.Cli.Licensing +{ + public class DeveloperApiKeyResult + { + public bool HasActiveLicense { get; set; } + public string OrganizationName { get; set; } + public string ApiKey { get; set; } + public DateTime LicenseEndTime { get; set; } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs new file mode 100644 index 0000000000..9e97859148 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Licensing/IApiKeyService.cs @@ -0,0 +1,10 @@ +using System.Net; +using System.Threading.Tasks; + +namespace Volo.Abp.Cli.Licensing +{ + public interface IApiKeyService + { + Task GetApiKeyOrNullAsync(); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs index de485b7c06..a2e885d79a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuilder.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Volo.Abp.Cli.Licensing; using Volo.Abp.Cli.ProjectBuilding.Analyticses; using Volo.Abp.Cli.ProjectBuilding.Building; using Volo.Abp.DependencyInjection; @@ -21,18 +22,21 @@ namespace Volo.Abp.Cli.ProjectBuilding protected ICliAnalyticsCollect CliAnalyticsCollect { get; } protected CliOptions Options { get; } protected IJsonSerializer JsonSerializer { get; } + protected IApiKeyService ApiKeyService { get; } public ProjectBuilder(ITemplateStore templateStore, ITemplateInfoProvider templateInfoProvider, ICliAnalyticsCollect cliAnalyticsCollect, IOptions options, - IJsonSerializer jsonSerializer) + IJsonSerializer jsonSerializer, + IApiKeyService apiKeyService) { TemplateStore = templateStore; TemplateInfoProvider = templateInfoProvider; CliAnalyticsCollect = cliAnalyticsCollect; Options = options.Value; JsonSerializer = jsonSerializer; + ApiKeyService = apiKeyService; Logger = NullLogger.Instance; } @@ -48,6 +52,12 @@ namespace Volo.Abp.Cli.ProjectBuilding args.Version ); + var apiKey = await ApiKeyService.GetApiKeyOrNullAsync(); + if (apiKey != null) + { + args.ExtraProperties["api-key"] = apiKey; + } + var context = new ProjectBuildContext( templateInfo, templateFile, diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index 559ddbf2b6..8278a29b81 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -25,6 +25,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App SwitchDatabaseProvider(context, steps); DeleteUnrelatedProjects(context, steps); RandomizeSslPorts(context, steps); + UpdateNuGetConfig(context, steps); CleanupFolderHierarchy(context, steps); return steps; @@ -113,6 +114,11 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App ); } + private void UpdateNuGetConfig(ProjectBuildContext context, List steps) + { + steps.Add(new UpdateNuGetConfigStep("/aspnet-core/NuGet.Config")); + } + private void CleanupFolderHierarchy(ProjectBuildContext context, List steps) { if (context.BuildArgs.UiFramework == UiFramework.Mvc) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/UpdateNuGetConfigStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/UpdateNuGetConfigStep.cs new file mode 100644 index 0000000000..428aaa6c96 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/UpdateNuGetConfigStep.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.ProjectBuilding.Files; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class UpdateNuGetConfigStep : ProjectBuildPipelineStep + { + private readonly string _nugetConfigFilePath; + + public UpdateNuGetConfigStep(string nugetConfigFilePath) + { + _nugetConfigFilePath = nugetConfigFilePath; + } + + public override void Execute(ProjectBuildContext context) + { + var file = context.Files.FirstOrDefault(f => f.Name == _nugetConfigFilePath); + if (file == null) + { + return; + } + + var apiKey = context.BuildArgs.ExtraProperties.GetOrDefault("api-key"); + if (apiKey.IsNullOrEmpty()) + { + return; + } + + file.ReplaceText("{api-key}", apiKey); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcModule/ModuleTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Module/ModuleTemplate.cs similarity index 100% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcModule/ModuleTemplate.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Module/ModuleTemplate.cs