added coupon service and enabled health check
This commit is contained in:
parent
40d4a311f2
commit
49595b5d58
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -15,6 +15,7 @@ public class Startup
|
||||
services.AddHealthChecks()
|
||||
.AddCheck("self", () => HealthCheckResult.Healthy())
|
||||
.AddUrlGroup(new Uri(Configuration["CatalogUrlHC"]), name: "catalogapi-check", tags: new string[] { "catalogapi" })
|
||||
.AddUrlGroup(new Uri(Configuration["CouponUrlHC"]), name: "couponapi-check", tags: new string[] { "couponapi" })
|
||||
.AddUrlGroup(new Uri(Configuration["OrderingUrlHC"]), name: "orderingapi-check", tags: new string[] { "orderingapi" })
|
||||
.AddUrlGroup(new Uri(Configuration["BasketUrlHC"]), name: "basketapi-check", tags: new string[] { "basketapi" })
|
||||
.AddUrlGroup(new Uri(Configuration["IdentityUrlHC"]), name: "identityapi-check", tags: new string[] { "identityapi" })
|
||||
|
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -15,6 +15,7 @@ public class Startup
|
||||
services.AddHealthChecks()
|
||||
.AddCheck("self", () => HealthCheckResult.Healthy())
|
||||
.AddUrlGroup(new Uri(Configuration["CatalogUrlHC"]), name: "catalogapi-check", tags: new string[] { "catalogapi" })
|
||||
.AddUrlGroup(new Uri(Configuration["CouponUrlHC"]), name: "couponapi-check", tags: new string[] { "couponapi" })
|
||||
.AddUrlGroup(new Uri(Configuration["OrderingUrlHC"]), name: "orderingapi-check", tags: new string[] { "orderingapi" })
|
||||
.AddUrlGroup(new Uri(Configuration["BasketUrlHC"]), name: "basketapi-check", tags: new string[] { "basketapi" })
|
||||
.AddUrlGroup(new Uri(Configuration["IdentityUrlHC"]), name: "identityapi-check", tags: new string[] { "identityapi" })
|
||||
|
@ -1,32 +0,0 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Coupon.API.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("[controller]")]
|
||||
public class WeatherForecastController : ControllerBase
|
||||
{
|
||||
private static readonly string[] Summaries = new[]
|
||||
{
|
||||
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
|
||||
};
|
||||
|
||||
private readonly ILogger<WeatherForecastController> _logger;
|
||||
|
||||
public WeatherForecastController(ILogger<WeatherForecastController> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
[HttpGet(Name = "GetWeatherForecast")]
|
||||
public IEnumerable<WeatherForecast> Get()
|
||||
{
|
||||
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
|
||||
{
|
||||
Date = DateTime.Now.AddDays(index),
|
||||
TemperatureC = Random.Shared.Next(-20, 55),
|
||||
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
|
||||
})
|
||||
.ToArray();
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3"/>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,25 +0,0 @@
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// Add services to the container.
|
||||
|
||||
builder.Services.AddControllers();
|
||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
builder.Services.AddSwaggerGen();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
}
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
app.UseAuthorization();
|
||||
|
||||
app.MapControllers();
|
||||
|
||||
app.Run();
|
@ -1,12 +0,0 @@
|
||||
namespace Coupon.API;
|
||||
|
||||
public class WeatherForecast
|
||||
{
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
public int TemperatureC { get; set; }
|
||||
|
||||
public int TemperatureF => 32 + (int) (TemperatureC / 0.5556);
|
||||
|
||||
public string? Summary { get; set; }
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -68,10 +68,10 @@
|
||||
<PackageReference Include="Serilog.Sinks.Seq" Version="4.1.0-dev-00166" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.2.1" />
|
||||
<PackageReference Include="System.Data.SqlClient" version="4.8.2"/>
|
||||
<PackageReference Include="System.Data.SqlClient" version="4.8.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0"/>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -25,6 +25,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -0,0 +1,20 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Coupon.API.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[ApiVersion("1.0")]
|
||||
[Route("v{version:apiVersion}/[controller]")]
|
||||
public class CouponController : ControllerBase
|
||||
{
|
||||
[HttpGet("{code}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
public async Task<ActionResult> GetCouponByCodeAsync(string code)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
|
||||
return Ok(code);
|
||||
}
|
||||
}
|
43
src/Services/Coupon/Coupon.API/Coupon.API.csproj
Normal file
43
src/Services/Coupon/Coupon.API/Coupon.API.csproj
Normal file
@ -0,0 +1,43 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<DebugType>portable</DebugType>
|
||||
<PreserveCompilationContext>true</PreserveCompilationContext>
|
||||
<AssemblyName>Coupon.API</AssemblyName>
|
||||
<PackageId>Coupon.API</PackageId>
|
||||
<UserSecretsId>aspnet-Coupon.API-20161122013618</UserSecretsId>
|
||||
<DockerComposeProjectPath>..\..\..\..\docker-compose.dcproj</DockerComposeProjectPath>
|
||||
<GenerateErrorForMissingTargetingPacks>false</GenerateErrorForMissingTargetingPacks>
|
||||
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="6.0.3" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.MongoDb" Version="6.0.1" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="6.0.2" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="6.0.2" />
|
||||
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="6.0.4" />
|
||||
|
||||
<PackageReference Include="Microsoft.AspNetCore.HealthChecks" Version="1.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.20.0" />
|
||||
<PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="2.0.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.3" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.23" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.15.0" />
|
||||
<PackageReference Include="MongoDB.Driver.Core" Version="2.13.3" />
|
||||
<PackageReference Include="Polly" Version="7.2.3" />
|
||||
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\EventBusRabbitMQ\EventBusRabbitMQ.csproj" />
|
||||
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\EventBusServiceBus\EventBusServiceBus.csproj" />
|
||||
<ProjectReference Include="..\..\..\BuildingBlocks\EventBus\IntegrationEventLogEF\IntegrationEventLogEF.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
14
src/Services/Coupon/Coupon.API/CouponSettings.cs
Normal file
14
src/Services/Coupon/Coupon.API/CouponSettings.cs
Normal file
@ -0,0 +1,14 @@
|
||||
namespace Coupon.API;
|
||||
|
||||
public class CouponSettings
|
||||
{
|
||||
public string ConnectionString { get; set; }
|
||||
|
||||
public string CouponMongoDatabase { get; set; }
|
||||
|
||||
public string EventBusConnection { get; set; }
|
||||
|
||||
public bool UseCustomizationData { get; set; }
|
||||
|
||||
public bool AzureStorageEnabled { get; set; }
|
||||
}
|
68
src/Services/Coupon/Coupon.API/Dockerfile
Normal file
68
src/Services/Coupon/Coupon.API/Dockerfile
Normal file
@ -0,0 +1,68 @@
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
|
||||
WORKDIR /app
|
||||
EXPOSE 80
|
||||
EXPOSE 443
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
|
||||
WORKDIR /src
|
||||
|
||||
# It's important to keep lines from here down to "COPY . ." identical in all Dockerfiles
|
||||
# to take advantage of Docker's build cache, to speed up local container builds
|
||||
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
|
||||
|
||||
COPY "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj" "ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj"
|
||||
COPY "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj" "ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj"
|
||||
COPY "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj" "BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj"
|
||||
COPY "BuildingBlocks/EventBus/EventBus/EventBus.csproj" "BuildingBlocks/EventBus/EventBus/EventBus.csproj"
|
||||
COPY "BuildingBlocks/EventBus/EventBus.Tests/EventBus.Tests.csproj" "BuildingBlocks/EventBus/EventBus.Tests/EventBus.Tests.csproj"
|
||||
COPY "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj" "BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj"
|
||||
COPY "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj" "BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj"
|
||||
COPY "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj" "BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj"
|
||||
COPY "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj" "BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj"
|
||||
COPY "Services/Basket/Basket.API/Basket.API.csproj" "Services/Basket/Basket.API/Basket.API.csproj"
|
||||
COPY "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj" "Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj"
|
||||
COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
COPY "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj" "Services/Ordering/Ordering.Domain/Ordering.Domain.csproj"
|
||||
COPY "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj" "Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj"
|
||||
COPY "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj" "Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj"
|
||||
COPY "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj" "Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj"
|
||||
COPY "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj" "Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj"
|
||||
COPY "Services/Payment/Payment.API/Payment.API.csproj" "Services/Payment/Payment.API/Payment.API.csproj"
|
||||
COPY "Services/Webhooks/Webhooks.API/Webhooks.API.csproj" "Services/Webhooks/Webhooks.API/Webhooks.API.csproj"
|
||||
COPY "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj" "Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj"
|
||||
COPY "Web/WebhookClient/WebhookClient.csproj" "Web/WebhookClient/WebhookClient.csproj"
|
||||
COPY "Web/WebMVC/WebMVC.csproj" "Web/WebMVC/WebMVC.csproj"
|
||||
COPY "Web/WebSPA/WebSPA.csproj" "Web/WebSPA/WebSPA.csproj"
|
||||
COPY "Web/WebStatus/WebStatus.csproj" "Web/WebStatus/WebStatus.csproj"
|
||||
|
||||
COPY "docker-compose.dcproj" "docker-compose.dcproj"
|
||||
|
||||
COPY "NuGet.config" "NuGet.config"
|
||||
|
||||
RUN dotnet restore "eShopOnContainers-ServicesAndWebApps.sln"
|
||||
|
||||
COPY . .
|
||||
WORKDIR /src/Services/Coupon/Coupon.API
|
||||
RUN dotnet publish --no-restore -c Release -o /app
|
||||
|
||||
#FROM build as unittest
|
||||
#WORKDIR /src/Services/Catalog/Catalog.UnitTests
|
||||
#
|
||||
#FROM build as functionaltest
|
||||
#WORKDIR /src/Services/Catalog/Catalog.FunctionalTests
|
||||
|
||||
FROM build AS publish
|
||||
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app .
|
||||
#COPY --from=build /src/Services/Catalog/Catalog.API/Proto /app/Proto
|
||||
COPY --from=build /src/Services/Coupon/Coupon.API/eshop.pfx .
|
||||
ENTRYPOINT ["dotnet", "Coupon.API.dll"]
|
22
src/Services/Coupon/Coupon.API/Dockerfile.develop
Normal file
22
src/Services/Coupon/Coupon.API/Dockerfile.develop
Normal file
@ -0,0 +1,22 @@
|
||||
FROM mcr.microsoft.com/dotnet/sdk:6.0
|
||||
ARG BUILD_CONFIGURATION=Debug
|
||||
ENV ASPNETCORE_ENVIRONMENT=Development
|
||||
ENV DOTNET_USE_POLLING_FILE_WATCHER=true
|
||||
EXPOSE 80
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
COPY ["BuildingBlocks/EventBus/EventBus/EventBus.csproj", "BuildingBlocks/EventBus/EventBus/"]
|
||||
COPY ["BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj", "BuildingBlocks/EventBus/EventBusRabbitMQ/"]
|
||||
COPY ["BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj", "BuildingBlocks/EventBus/EventBusServiceBus/"]
|
||||
COPY ["BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj", "BuildingBlocks/EventBus/IntegrationEventLogEF/"]
|
||||
COPY ["BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj", "BuildingBlocks/WebHostCustomization/WebHost.Customization/"]
|
||||
COPY ["Services/Catalog/Catalog.API/Catalog.API.csproj", "Services/Catalog/Catalog.API/"]
|
||||
COPY ["NuGet.config", "NuGet.config"]
|
||||
|
||||
RUN dotnet restore Services/Catalog/Catalog.API/Catalog.API.csproj -nowarn:msb3202,nu1503
|
||||
COPY . .
|
||||
WORKDIR "/src/Services/Catalog/Catalog.API"
|
||||
RUN dotnet build -c $BUILD_CONFIGURATION
|
||||
|
||||
ENTRYPOINT ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"]
|
@ -0,0 +1,164 @@
|
||||
using System.Data.Common;
|
||||
using System.Reflection;
|
||||
using Autofac;
|
||||
using Coupon.API.Infrastructure.Filters;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus;
|
||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions;
|
||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ;
|
||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus;
|
||||
using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.Services;
|
||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using RabbitMQ.Client;
|
||||
|
||||
namespace Coupon.API.Extensions;
|
||||
|
||||
public static class CustomExtensionMethods
|
||||
{
|
||||
public static IServiceCollection AddAppInsight(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
services.AddApplicationInsightsTelemetry(configuration);
|
||||
services.AddApplicationInsightsKubernetesEnricher();
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddCustomMVC(this IServiceCollection services)
|
||||
{
|
||||
services.AddControllers(options =>
|
||||
{
|
||||
options.Filters.Add(typeof(HttpGlobalExceptionFilter));
|
||||
})
|
||||
.AddJsonOptions(options => options.JsonSerializerOptions.WriteIndented = true);
|
||||
|
||||
services.AddCors(options =>
|
||||
{
|
||||
options.AddPolicy("CorsPolicy",
|
||||
builder => builder
|
||||
.SetIsOriginAllowed((host) => true)
|
||||
.AllowAnyMethod()
|
||||
.AllowAnyHeader()
|
||||
.AllowCredentials());
|
||||
});
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddCustomHealthCheck(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
var accountName = configuration.GetValue<string>("AzureStorageAccountName");
|
||||
var accountKey = configuration.GetValue<string>("AzureStorageAccountKey");
|
||||
|
||||
var hcBuilder = services.AddHealthChecks();
|
||||
|
||||
hcBuilder.AddCheck("self", () => HealthCheckResult.Healthy())
|
||||
.AddMongoDb(
|
||||
configuration["ConnectionString"],
|
||||
name: "CouponCollection-check",
|
||||
tags: new string[] { "couponcollection" });
|
||||
|
||||
if (configuration.GetValue<bool>("AzureServiceBusEnabled"))
|
||||
{
|
||||
hcBuilder
|
||||
.AddAzureServiceBusTopic(
|
||||
configuration["EventBusConnection"],
|
||||
topicName: "eshop_event_bus",
|
||||
name: "coupon-servicebus-check",
|
||||
tags: new string[] { "servicebus" });
|
||||
}
|
||||
else
|
||||
{
|
||||
hcBuilder
|
||||
.AddRabbitMQ(
|
||||
$"amqp://{configuration["EventBusConnection"]}",
|
||||
name: "coupon-rabbitmqbus-check",
|
||||
tags: new string[] { "rabbitmqbus" });
|
||||
}
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddCustomOptions(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
services.Configure<CouponSettings>(configuration);
|
||||
services.Configure<ApiBehaviorOptions>(options =>
|
||||
{
|
||||
options.InvalidModelStateResponseFactory = context =>
|
||||
{
|
||||
var problemDetails = new ValidationProblemDetails(context.ModelState)
|
||||
{
|
||||
Instance = context.HttpContext.Request.Path,
|
||||
Status = StatusCodes.Status400BadRequest,
|
||||
Detail = "Please refer to the errors property for additional details."
|
||||
};
|
||||
|
||||
return new BadRequestObjectResult(problemDetails)
|
||||
{
|
||||
ContentTypes = { "application/problem+json", "application/problem+xml" }
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddSwagger(this IServiceCollection services)
|
||||
{
|
||||
services.AddSwaggerGen(options =>
|
||||
{
|
||||
options.SwaggerDoc("v1", new OpenApiInfo
|
||||
{
|
||||
Title = "eShopOnContainers - Coupon HTTP API",
|
||||
Version = "v1",
|
||||
Description = "The Coupon Microservice HTTP API. This is a Data-Driven/CRUD microservice sample"
|
||||
});
|
||||
});
|
||||
|
||||
return services;
|
||||
|
||||
}
|
||||
|
||||
public static IServiceCollection AddEventBus(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
if (configuration.GetValue<bool>("AzureServiceBusEnabled"))
|
||||
{
|
||||
services.AddSingleton<IEventBus, EventBusServiceBus>(sp =>
|
||||
{
|
||||
var serviceBusPersisterConnection = sp.GetRequiredService<IServiceBusPersisterConnection>();
|
||||
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
|
||||
var logger = sp.GetRequiredService<ILogger<EventBusServiceBus>>();
|
||||
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
|
||||
string subscriptionName = configuration["SubscriptionClientName"];
|
||||
|
||||
return new EventBusServiceBus(serviceBusPersisterConnection, logger,
|
||||
eventBusSubcriptionsManager, iLifetimeScope, subscriptionName);
|
||||
});
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
services.AddSingleton<IEventBus, EventBusRabbitMQ>(sp =>
|
||||
{
|
||||
var subscriptionClientName = configuration["SubscriptionClientName"];
|
||||
var rabbitMQPersistentConnection = sp.GetRequiredService<IRabbitMQPersistentConnection>();
|
||||
var iLifetimeScope = sp.GetRequiredService<ILifetimeScope>();
|
||||
var logger = sp.GetRequiredService<ILogger<EventBusRabbitMQ>>();
|
||||
var eventBusSubcriptionsManager = sp.GetRequiredService<IEventBusSubscriptionsManager>();
|
||||
|
||||
var retryCount = 5;
|
||||
if (!string.IsNullOrEmpty(configuration["EventBusRetryCount"]))
|
||||
{
|
||||
retryCount = int.Parse(configuration["EventBusRetryCount"]);
|
||||
}
|
||||
|
||||
return new EventBusRabbitMQ(rabbitMQPersistentConnection, logger, iLifetimeScope, eventBusSubcriptionsManager, subscriptionClientName, retryCount);
|
||||
});
|
||||
}
|
||||
|
||||
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
namespace Coupon.API.Extensions;
|
||||
|
||||
public static class WebHostExtensions
|
||||
{
|
||||
public static bool IsInKubernetes(this IWebHost host)
|
||||
{
|
||||
var cfg = host.Services.GetService<IConfiguration>();
|
||||
var orchestratorType = cfg.GetValue<string>("OrchestratorType");
|
||||
return orchestratorType?.ToUpper() == "K8S";
|
||||
}
|
||||
|
||||
// public static IWebHost MigrateDbContext<TContext>(this IWebHost host, Action<TContext, IServiceProvider> seeder) where TContext : DbContext
|
||||
// {
|
||||
// var underK8s = host.IsInKubernetes();
|
||||
//
|
||||
// using var scope = host.Services.CreateScope();
|
||||
// var services = scope.ServiceProvider;
|
||||
//
|
||||
// var logger = services.GetRequiredService<ILogger<TContext>>();
|
||||
//
|
||||
// var context = services.GetService<TContext>();
|
||||
//
|
||||
// try
|
||||
// {
|
||||
// logger.LogInformation("Migrating database associated with context {DbContextName}", typeof(TContext).Name);
|
||||
//
|
||||
// if (underK8s)
|
||||
// {
|
||||
// InvokeSeeder(seeder, context, services);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// var retry = Policy.Handle<SqlException>()
|
||||
// .WaitAndRetry(new TimeSpan[]
|
||||
// {
|
||||
// TimeSpan.FromSeconds(3),
|
||||
// TimeSpan.FromSeconds(5),
|
||||
// TimeSpan.FromSeconds(8),
|
||||
// });
|
||||
//
|
||||
// //if the sql server container is not created on run docker compose this
|
||||
// //migration can't fail for network related exception. The retry options for DbContext only
|
||||
// //apply to transient exceptions
|
||||
// // Note that this is NOT applied when running some orchestrators (let the orchestrator to recreate the failing service)
|
||||
// retry.Execute(() => InvokeSeeder(seeder, context, services));
|
||||
// }
|
||||
//
|
||||
// logger.LogInformation("Migrated database associated with context {DbContextName}", typeof(TContext).Name);
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// logger.LogError(ex, "An error occurred while migrating the database used on context {DbContextName}", typeof(TContext).Name);
|
||||
// if (underK8s)
|
||||
// {
|
||||
// throw; // Rethrow under k8s because we rely on k8s to re-run the pod
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return host;
|
||||
// }
|
||||
//
|
||||
// private static void InvokeSeeder<TContext>(Action<TContext, IServiceProvider> seeder, TContext context, IServiceProvider services)
|
||||
// where TContext : DbContext
|
||||
// {
|
||||
// context.Database.Migrate();
|
||||
// seeder(context, services);
|
||||
// }
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Coupon.API.Infrastructure.ActionResults;
|
||||
|
||||
public class InternalServerErrorObjectResult : ObjectResult
|
||||
{
|
||||
public InternalServerErrorObjectResult(object error) : base(error)
|
||||
{
|
||||
StatusCode = StatusCodes.Status500InternalServerError;
|
||||
}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
using System.Net;
|
||||
using Coupon.API.Infrastructure.ActionResults;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Filters;
|
||||
|
||||
namespace Coupon.API.Infrastructure.Filters;
|
||||
|
||||
public class HttpGlobalExceptionFilter : IExceptionFilter
|
||||
{
|
||||
private readonly IWebHostEnvironment env;
|
||||
private readonly ILogger<HttpGlobalExceptionFilter> logger;
|
||||
|
||||
public HttpGlobalExceptionFilter(IWebHostEnvironment env, ILogger<HttpGlobalExceptionFilter> logger)
|
||||
{
|
||||
this.env = env;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
public void OnException(ExceptionContext context)
|
||||
{
|
||||
logger.LogError(new EventId(context.Exception.HResult),
|
||||
context.Exception,
|
||||
context.Exception.Message);
|
||||
|
||||
// TODO: Create domain exception
|
||||
if (context.Exception.GetType() == typeof(Exception))
|
||||
{
|
||||
var problemDetails = new ValidationProblemDetails()
|
||||
{
|
||||
Instance = context.HttpContext.Request.Path,
|
||||
Status = StatusCodes.Status400BadRequest,
|
||||
Detail = "Please refer to the errors property for additional details."
|
||||
};
|
||||
|
||||
problemDetails.Errors.Add("DomainValidations", new string[] { context.Exception.Message.ToString() });
|
||||
|
||||
context.Result = new BadRequestObjectResult(problemDetails);
|
||||
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
|
||||
}
|
||||
else
|
||||
{
|
||||
var json = new JsonErrorResponse
|
||||
{
|
||||
Messages = new[] { "An error ocurred." }
|
||||
};
|
||||
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
json.DeveloperMessage = context.Exception;
|
||||
}
|
||||
|
||||
context.Result = new InternalServerErrorObjectResult(json);
|
||||
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
|
||||
}
|
||||
context.ExceptionHandled = true;
|
||||
}
|
||||
|
||||
private class JsonErrorResponse
|
||||
{
|
||||
public string[] Messages { get; set; }
|
||||
|
||||
public object DeveloperMessage { get; set; }
|
||||
}
|
||||
}
|
53
src/Services/Coupon/Coupon.API/Program.cs
Normal file
53
src/Services/Coupon/Coupon.API/Program.cs
Normal file
@ -0,0 +1,53 @@
|
||||
using Coupon.API.Extensions;
|
||||
using HealthChecks.UI.Client;
|
||||
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
var configuration = builder.Configuration;
|
||||
|
||||
builder.Services
|
||||
.AddEndpointsApiExplorer()
|
||||
.AddSwagger()
|
||||
.AddApiVersioning()
|
||||
.AddAppInsight(configuration)
|
||||
.AddCustomMVC()
|
||||
.AddCustomOptions(configuration)
|
||||
.AddEventBus(configuration)
|
||||
.AddCustomHealthCheck(configuration);
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
}
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
app.UseRouting();
|
||||
app.UseAuthorization();
|
||||
|
||||
var pathBase = configuration["PATH_BASE"];
|
||||
if (!string.IsNullOrEmpty(pathBase))
|
||||
{
|
||||
app.UsePathBase(pathBase);
|
||||
}
|
||||
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
endpoints.MapControllers();
|
||||
|
||||
endpoints.MapHealthChecks("/hc", new HealthCheckOptions
|
||||
{
|
||||
Predicate = _ => true,
|
||||
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
|
||||
});
|
||||
endpoints.MapHealthChecks("/liveness", new HealthCheckOptions
|
||||
{
|
||||
Predicate = r => r.Name.Contains("self")
|
||||
});
|
||||
});
|
||||
|
||||
app.Run();
|
18
src/Services/Coupon/Coupon.API/appsettings.Development.json
Normal file
18
src/Services/Coupon/Coupon.API/appsettings.Development.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"ConnectionString": "mongodb://localhost:27017",
|
||||
"CouponMongoDatabase": "CouponDb",
|
||||
"Serilog": {
|
||||
"MinimumLevel": {
|
||||
"Default": "Debug",
|
||||
"Override": {
|
||||
"Microsoft": "Warning",
|
||||
"Microsoft.eShopOnContainers": "Debug",
|
||||
"System": "Warning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"IdentityUrlExternal": "http://localhost:5105",
|
||||
"IdentityUrl": "http://localhost:5105",
|
||||
"AzureServiceBusEnabled": false,
|
||||
"EventBusConnection": "localhost"
|
||||
}
|
28
src/Services/Coupon/Coupon.API/appsettings.json
Normal file
28
src/Services/Coupon/Coupon.API/appsettings.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"ConnectionString": null,
|
||||
"CouponMongoDatabase": "CouponDb",
|
||||
"UseCustomizationData": false,
|
||||
"Serilog": {
|
||||
"SeqServerUrl": null,
|
||||
"LogstashUrl": null,
|
||||
"MinimumLevel": {
|
||||
"Default": "Information",
|
||||
"Override": {
|
||||
"Microsoft": "Warning",
|
||||
"Microsoft.eShopOnContainers": "Information",
|
||||
"System": "Warning"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SubscriptionClientName": "Coupon",
|
||||
"ApplicationInsights": {
|
||||
"InstrumentationKey": ""
|
||||
},
|
||||
"EventBusRetryCount": 5,
|
||||
"UseVault": false,
|
||||
"Vault": {
|
||||
"Name": "eshop",
|
||||
"ClientId": "your-client-id",
|
||||
"ClientSecret": "your-client-secret"
|
||||
}
|
||||
}
|
BIN
src/Services/Coupon/Coupon.API/eshop.pfx
Normal file
BIN
src/Services/Coupon/Coupon.API/eshop.pfx
Normal file
Binary file not shown.
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -35,6 +35,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -24,6 +24,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -25,6 +25,7 @@ COPY "Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj" "Services/Basket
|
||||
COPY "Services/Catalog/Catalog.API/Catalog.API.csproj" "Services/Catalog/Catalog.API/Catalog.API.csproj"
|
||||
COPY "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj" "Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj"
|
||||
COPY "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj" "Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj"
|
||||
COPY "Services/Coupon/Coupon.API/Coupon.API.csproj" "Services/Coupon/Coupon.API/Coupon.API.csproj"
|
||||
COPY "Services/Identity/Identity.API/Identity.API.csproj" "Services/Identity/Identity.API/Identity.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.API/Ordering.API.csproj" "Services/Ordering/Ordering.API/Ordering.API.csproj"
|
||||
COPY "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj" "Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj"
|
||||
|
@ -100,7 +100,28 @@ services:
|
||||
ports:
|
||||
- "5101:80"
|
||||
- "9101:81"
|
||||
|
||||
|
||||
coupon-api:
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Development
|
||||
- ConnectionString=mongodb://nosqldata
|
||||
- CouponMongoDatabase=CouponDb
|
||||
- EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq}
|
||||
- EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME}
|
||||
- EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD}
|
||||
- AzureStorageAccountName=${ESHOP_AZURE_STORAGE_CATALOG_NAME}
|
||||
- AzureStorageAccountKey=${ESHOP_AZURE_STORAGE_CATALOG_KEY}
|
||||
- UseCustomizationData=True
|
||||
- AzureServiceBusEnabled=False
|
||||
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
|
||||
- OrchestratorType=${ORCHESTRATOR_TYPE}
|
||||
- GRPC_PORT=81
|
||||
- PORT=80
|
||||
- PATH_BASE=/coupon-api
|
||||
ports:
|
||||
- "5110:80"
|
||||
- "9110:81"
|
||||
|
||||
ordering-api:
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Development
|
||||
@ -177,27 +198,29 @@ services:
|
||||
volumes:
|
||||
- ./ApiGateways/Envoy/config/mobileshopping:/etc/envoy
|
||||
ports:
|
||||
- "5200:80"
|
||||
- "15200:8001"
|
||||
- "5200:80"
|
||||
- "15200:8001"
|
||||
|
||||
webshoppingapigw:
|
||||
volumes:
|
||||
- ./ApiGateways/Envoy/config/webshopping:/etc/envoy
|
||||
ports:
|
||||
- "5202:80"
|
||||
- "15202:8001"
|
||||
- "5202:80"
|
||||
- "15202:8001"
|
||||
|
||||
mobileshoppingagg:
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Development
|
||||
- urls__basket=http://basket-api
|
||||
- urls__catalog=http://catalog-api
|
||||
- urls__coupon=http://coupon-api
|
||||
- urls__orders=http://ordering-api
|
||||
- urls__identity=http://identity-api
|
||||
- urls__grpcBasket=http://basket-api:81
|
||||
- urls__grpcCatalog=http://catalog-api:81
|
||||
- urls__grpcOrdering=http://ordering-api:81
|
||||
- CatalogUrlHC=http://catalog-api/hc
|
||||
- CouponUrlHC=http://coupon-api/hc
|
||||
- OrderingUrlHC=http://ordering-api/hc
|
||||
- IdentityUrlHC=http://identity-api/hc
|
||||
- BasketUrlHC=http://basket-api/hc
|
||||
@ -211,12 +234,14 @@ services:
|
||||
- ASPNETCORE_ENVIRONMENT=Development
|
||||
- urls__basket=http://basket-api
|
||||
- urls__catalog=http://catalog-api
|
||||
- urls__coupon=http://coupon-api
|
||||
- urls__orders=http://ordering-api
|
||||
- urls__identity=http://identity-api
|
||||
- urls__grpcBasket=http://basket-api:81
|
||||
- urls__grpcCatalog=http://catalog-api:81
|
||||
- urls__grpcOrdering=http://ordering-api:81
|
||||
- CatalogUrlHC=http://catalog-api/hc
|
||||
- CouponUrlHC=http://coupon-api/hc
|
||||
- OrderingUrlHC=http://ordering-api/hc
|
||||
- IdentityUrlHC=http://identity-api/hc
|
||||
- BasketUrlHC=http://basket-api/hc
|
||||
@ -257,14 +282,16 @@ services:
|
||||
- HealthChecksUI__HealthChecks__5__Uri=http://basket-api/hc
|
||||
- HealthChecksUI__HealthChecks__6__Name=Catalog HTTP Check
|
||||
- HealthChecksUI__HealthChecks__6__Uri=http://catalog-api/hc
|
||||
- HealthChecksUI__HealthChecks__7__Name=Identity HTTP Check
|
||||
- HealthChecksUI__HealthChecks__7__Uri=http://identity-api/hc
|
||||
- HealthChecksUI__HealthChecks__8__Name=Payments HTTP Check
|
||||
- HealthChecksUI__HealthChecks__8__Uri=http://payment-api/hc
|
||||
- HealthChecksUI__HealthChecks__9__Name=Ordering SignalRHub HTTP Check
|
||||
- HealthChecksUI__HealthChecks__9__Uri=http://ordering-signalrhub/hc
|
||||
- HealthChecksUI__HealthChecks__10__Name=Ordering HTTP Background Check
|
||||
- HealthChecksUI__HealthChecks__10__Uri=http://ordering-backgroundtasks/hc
|
||||
- HealthChecksUI__HealthChecks__7__Name=Coupon HTTP Check
|
||||
- HealthChecksUI__HealthChecks__7__Uri=http://coupon-api/hc
|
||||
- HealthChecksUI__HealthChecks__8__Name=Identity HTTP Check
|
||||
- HealthChecksUI__HealthChecks__8__Uri=http://identity-api/hc
|
||||
- HealthChecksUI__HealthChecks__9__Name=Payments HTTP Check
|
||||
- HealthChecksUI__HealthChecks__9__Uri=http://payment-api/hc
|
||||
- HealthChecksUI__HealthChecks__10__Name=Ordering SignalRHub HTTP Check
|
||||
- HealthChecksUI__HealthChecks__10__Uri=http://ordering-signalrhub/hc
|
||||
- HealthChecksUI__HealthChecks__11__Name=Ordering HTTP Background Check
|
||||
- HealthChecksUI__HealthChecks__11__Uri=http://ordering-backgroundtasks/hc
|
||||
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
|
||||
- OrchestratorType=${ORCHESTRATOR_TYPE}
|
||||
ports:
|
||||
|
@ -114,6 +114,7 @@ services:
|
||||
- IdentityUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105 #Local: You need to open your local dev-machine firewall at range 5100-5105. at range 5100-5105.
|
||||
- PurchaseUrl=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5202
|
||||
- CatalogUrlHC=http://catalog-api/hc
|
||||
- CouponUrlHC=http://coupon-api/hc
|
||||
- OrderingUrlHC=http://ordering-api/hc
|
||||
- IdentityUrlHC=http://identity-api/hc #Local: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}, if using external IP or DNS name from browser.
|
||||
- BasketUrlHC=http://basket-api/hc
|
||||
@ -131,6 +132,7 @@ services:
|
||||
- PurchaseUrl=http://webshoppingapigw
|
||||
- IdentityUrl=http://10.0.75.1:5105 # Local Mac: Use http://docker.for.mac.localhost:5105 || Local Windows: Use 10.0.75.1 in a "Docker for Windows" environment, if using "localhost" from browser. || #Remote access: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP} if using external IP or DNS name from browser.
|
||||
- CatalogUrlHC=http://catalog-api/hc
|
||||
- CouponUrlHC=http://coupon-api/hc
|
||||
- OrderingUrlHC=http://ordering-api/hc
|
||||
- IdentityUrlHC=http://identity-api/hc #Local: Use ${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}, if using external IP or DNS name from browser.
|
||||
- BasketUrlHC=http://basket-api/hc
|
||||
|
@ -43,6 +43,16 @@ services:
|
||||
depends_on:
|
||||
- sqldata
|
||||
- rabbitmq
|
||||
|
||||
coupon-api:
|
||||
image: ${REGISTRY:-eshop}/coupon.api:${PLATFORM:-linux}-${TAG:-latest}
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Services/Coupon/Coupon.API/Dockerfile
|
||||
depends_on:
|
||||
- sqldata
|
||||
- nosqldata
|
||||
- rabbitmq
|
||||
|
||||
ordering-api:
|
||||
image: ${REGISTRY:-eshop}/ordering.api:${PLATFORM:-linux}-${TAG:-latest}
|
||||
|
@ -19,6 +19,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web Apps", "Web Apps", "{E2
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Catalog", "Catalog", "{326A7FB3-5295-468C-A4FE-67DCB823E1E5}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Coupon", "Coupon", "{112D21CD-E9A7-4815-81EF-ECB61E2D9CC2}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Basket", "Basket", "{BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Ordering", "Ordering", "{0BD0DB92-2D98-44D9-9AC0-C59186D59B0B}"
|
||||
@ -33,6 +35,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Basket.API", "Services\Bask
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Catalog.API", "Services\Catalog\Catalog.API\Catalog.API.csproj", "{42681D9D-750A-4DF7-BD9F-9292CFD5C253}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Coupon.API", "Services\Coupon\Coupon.API\Coupon.API.csproj", "{181F8727-ECA0-4D10-B6E5-E73593D35DA6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.API", "Services\Ordering\Ordering.API\Ordering.API.csproj", "{231226CE-690B-4979-8870-9A79D80928E2}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.Domain", "Services\Ordering\Ordering.Domain\Ordering.Domain.csproj", "{F5598DCB-6DDE-4661-AD9D-A55612DA7E76}"
|
||||
@ -124,10 +128,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{373D8AA1
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBus.Tests", "BuildingBlocks\EventBus\EventBus.Tests\EventBus.Tests.csproj", "{95D735BE-2899-4495-BE3F-2600E93B4E3C}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Coupon", "Coupon", "{EA8E5543-46DB-4646-B29B-847756FF0B37}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Coupon.API", "Coupon.API\Coupon.API.csproj", "{A50CFB1D-A31D-4399-9115-CF79A004E106}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
@ -256,6 +256,32 @@ Global
|
||||
{42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{42681D9D-750A-4DF7-BD9F-9292CFD5C253}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{231226CE-690B-4979-8870-9A79D80928E2}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
@ -1534,54 +1560,6 @@ Global
|
||||
{95D735BE-2899-4495-BE3F-2600E93B4E3C}.Release|x64.Build.0 = Release|Any CPU
|
||||
{95D735BE-2899-4495-BE3F-2600E93B4E3C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{95D735BE-2899-4495-BE3F-2600E93B4E3C}.Release|x86.Build.0 = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|x64.Build.0 = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@ -1590,12 +1568,14 @@ Global
|
||||
{91CF7717-08AB-4E65-B10E-0B426F01E2E8} = {932D8224-11F6-4D07-B109-DA28AD288A63}
|
||||
{E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} = {932D8224-11F6-4D07-B109-DA28AD288A63}
|
||||
{326A7FB3-5295-468C-A4FE-67DCB823E1E5} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8}
|
||||
{112D21CD-E9A7-4815-81EF-ECB61E2D9CC2} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8}
|
||||
{BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8}
|
||||
{0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8}
|
||||
{EF0337F2-ED00-4643-89FD-EE10863F1870} = {A857AD10-40FF-4303-BEC2-FF1C58D5735E}
|
||||
{24CD3B53-141E-4A07-9B0D-796641E1CF78} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8}
|
||||
{2110CBB0-3B38-4EE4-A743-DF6968D80D90} = {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8}
|
||||
{42681D9D-750A-4DF7-BD9F-9292CFD5C253} = {326A7FB3-5295-468C-A4FE-67DCB823E1E5}
|
||||
{181F8727-ECA0-4D10-B6E5-E73593D35DA6} = {112D21CD-E9A7-4815-81EF-ECB61E2D9CC2}
|
||||
{231226CE-690B-4979-8870-9A79D80928E2} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B}
|
||||
{F5598DCB-6DDE-4661-AD9D-A55612DA7E76} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B}
|
||||
{F0333D8E-0B27-42B7-B2C6-78F3657624E2} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04}
|
||||
@ -1640,8 +1620,6 @@ Global
|
||||
{B62E859F-825E-4C8B-93EC-5966EACFD026} = {798BFC44-2CCD-45FA-B37A-5173B03C2B30}
|
||||
{373D8AA1-36BE-49EC-89F0-6CB736666285} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F}
|
||||
{95D735BE-2899-4495-BE3F-2600E93B4E3C} = {373D8AA1-36BE-49EC-89F0-6CB736666285}
|
||||
{EA8E5543-46DB-4646-B29B-847756FF0B37} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8}
|
||||
{A50CFB1D-A31D-4399-9115-CF79A004E106} = {EA8E5543-46DB-4646-B29B-847756FF0B37}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9}
|
||||
|
Loading…
x
Reference in New Issue
Block a user