Merge branch 'dev' into features/addIntegrationIstio
This commit is contained in:
		
						commit
						cc8715c3c9
					
				
							
								
								
									
										70
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								README.md
									
									
									
									
									
								
							| @ -1,7 +1,69 @@ | |||||||
| # eShopOnContainers - Microservices Architecture and Containers based Reference Application (**BETA state** - Visual Studio 2017 and CLI environments compatible) | # eShopOnContainers - Microservices Architecture and Containers based Reference Application (**BETA state** - Visual Studio 2017 and CLI environments compatible) | ||||||
| Sample .NET Core reference application, powered by Microsoft, based on a simplified microservices architecture and Docker containers. | Sample .NET Core reference application, powered by Microsoft, based on a simplified microservices architecture and Docker containers. | ||||||
| 
 | 
 | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=184) | ## Linux Build Status for 'dev' branch | ||||||
|  | 
 | ||||||
|  | Dev branch contains the latest "stable" code, and their images are tagged with `:dev` in our [Docker Hub](https://cloud.docker.com/u/eshop/repository/list): | ||||||
|  | 
 | ||||||
|  | Api Gateways base image | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=201&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Basket API | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=199&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Catalog API | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=197&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Identity API | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=200&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Location API | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=202&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Marketing API | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=203&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Ordering API | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=198&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Payment API | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=205&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Webhooks API | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=207&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Web Shopping Aggregator | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=206&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Mobile Shopping Aggregator | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=204&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Webbhooks demo client | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=208&branchName=dev) | ||||||
|  | 
 | ||||||
|  | WebMVC Client | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=209&branchName=dev) | ||||||
|  | 
 | ||||||
|  | WebSPA Client | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=210&branchName=dev) | ||||||
|  | 
 | ||||||
|  | Web Status | ||||||
|  | 
 | ||||||
|  | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=211&branchName=dev) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## IMPORTANT NOTES! | ## IMPORTANT NOTES! | ||||||
| @ -63,6 +125,12 @@ The architecture proposes a microservice oriented architecture implementation wi | |||||||
| > <p> A similar case is defined in regard to Redis cache running as a container for the development environment. Or a No-SQL database (MongoDB) running as a container. | > <p> A similar case is defined in regard to Redis cache running as a container for the development environment. Or a No-SQL database (MongoDB) running as a container. | ||||||
| > <p> However, in a real production environment it is recommended to have your databases (SQL Server, Redis, and the NO-SQL database, in this case) in HA (High Available) services like Azure SQL Database, Redis as a service and Azure CosmosDB instead the MongoDB container (as both systems share the same access protocol). If you want to change to a production configuration, you'll just need to change the connection strings once you have set up the servers in an HA cloud or on-premises. | > <p> However, in a real production environment it is recommended to have your databases (SQL Server, Redis, and the NO-SQL database, in this case) in HA (High Available) services like Azure SQL Database, Redis as a service and Azure CosmosDB instead the MongoDB container (as both systems share the same access protocol). If you want to change to a production configuration, you'll just need to change the connection strings once you have set up the servers in an HA cloud or on-premises. | ||||||
| 
 | 
 | ||||||
|  | > ### Important Note on EventBus | ||||||
|  | > In this solution's current EventBus is a simplified implementation, mainly used for learning purposes (development and testing), so it doesn't handle all production scenarios, most notably on error handling.  <p>  | ||||||
|  | > The following forks provide production environment level implementation examples with eShopOnContainers : | ||||||
|  | > * Implementation with [CAP](https://github.com/dotnetcore/CAP) : https://github.com/yang-xiaodong/eShopOnContainers | ||||||
|  | > * Implementation with [NServiceBus](https://github.com/Particular/NServiceBus) : https://github.com/Particular/eShopOnContainers | ||||||
|  | 
 | ||||||
| ## Related documentation and guidance | ## Related documentation and guidance | ||||||
| While developing this reference application, we've been creating a reference <b>Guide/eBook</b> focusing on <b>architecting and developing containerized and microservice based .NET Applications</b> (download link available below) which explains in detail how to develop this kind of architectural style (microservices, Docker containers, Domain-Driven Design for certain microservices) plus other simpler architectural styles, like monolithic apps that can also live as Docker containers. | While developing this reference application, we've been creating a reference <b>Guide/eBook</b> focusing on <b>architecting and developing containerized and microservice based .NET Applications</b> (download link available below) which explains in detail how to develop this kind of architectural style (microservices, Docker containers, Domain-Driven Design for certain microservices) plus other simpler architectural styles, like monolithic apps that can also live as Docker containers. | ||||||
| <p> | <p> | ||||||
|  | |||||||
							
								
								
									
										50
									
								
								build/azure-devops/apigws/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								build/azure-devops/apigws/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/ApiGateways/* | ||||||
|  |     - k8s/helm/apigwmm/* | ||||||
|  |     - k8s/helm/apigwms/* | ||||||
|  |     - k8s/helm/apigwwm/* | ||||||
|  |     - k8s/helm/apigwws/* | ||||||
|  |     exclude: | ||||||
|  |     - src/ApiGateways/Mobile.Bff.Shopping/aggregator/* | ||||||
|  |     - src/ApiGateways/Web.Bff.Shopping/aggregator/* | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build apigws | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push apigws | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName)         | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/basket-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/basket-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Services/Basket/* | ||||||
|  |     - k8s/helm/basket-api/* | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build basket | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build basket.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push basket | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push basket.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/catalog-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/catalog-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Services/Catalog/* | ||||||
|  |     - k8s/helm/catalog-api/*     | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build catalog | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build catalog.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push catalog | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push catalog.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/identity-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/identity-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Services/Identity/* | ||||||
|  |     - k8s/helm/identity-api/*       | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build identity | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build identity.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push identity | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push identity.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										25
									
								
								build/azure-devops/infrastructure/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								build/azure-devops/infrastructure/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - k8s/helm/basket-data/* | ||||||
|  |     - k8s/helm/keystore-data/* | ||||||
|  |     - k8s/helm/nosql-data/* | ||||||
|  |     - k8s/helm/rabbitmq/* | ||||||
|  |     - k8s/helm/sql-data/* | ||||||
|  | steps: | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/location-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/location-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Services/Location/* | ||||||
|  |     - k8s/helm/locations-api/*           | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build locations | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build locations.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push locations | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push locations.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/marketing-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/marketing-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Services/Marketing/* | ||||||
|  |     - k8s/helm/marketing-api/*             | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build marketing | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build marketing.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push marketing | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push marketing.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										44
									
								
								build/azure-devops/mobile-shopping-agg/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								build/azure-devops/mobile-shopping-agg/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/ApiGateways/Mobile.Bff.Shopping/aggregator/* | ||||||
|  |     - k8s/helm/mobileshoppingagg/*           | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build mobileshoppingagg | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build mobileshoppingagg' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push mobileshoppingagg | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push mobileshoppingagg' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										47
									
								
								build/azure-devops/ordering-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								build/azure-devops/ordering-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Services/Ordering/* | ||||||
|  |     - k8s/helm/ordering-api/*   | ||||||
|  |     - k8s/helm/ordering-backgroundtasks/* | ||||||
|  |     - k8s/helm/ordering-signalrhub/* | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build ordering  | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build ordering.api ordering.backgroundtasks ordering.signalrhub' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push ordering | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push ordering.api ordering.backgroundtasks ordering.signalrhub' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/payment-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/payment-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Services/Payment/* | ||||||
|  |     - k8s/helm/payment-api/*   | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build payment | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build payment.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push payment | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push payment.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										5
									
								
								build/azure-devops/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								build/azure-devops/readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | # Azure Devops build definitions | ||||||
|  | 
 | ||||||
|  | This folder contains the Azure Devops build definitions in YAML format. Each folder contains one `azure-pipelines.yml` that contains the build definition for one microservice (usually a Docker image, but some microservices generates more than one Docker image). | ||||||
|  | 
 | ||||||
|  | For more information about YAML builds read the [Azure DevOps documentation](https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started-yaml?view=azure-devops). | ||||||
							
								
								
									
										44
									
								
								build/azure-devops/web-shopping-agg/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								build/azure-devops/web-shopping-agg/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/ApiGateways/Web.Bff.Shopping/aggregator/* | ||||||
|  |     - k8s/helm/webshoppingagg/*            | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build webshoppingagg | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build webshoppingagg' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push webshoppingagg | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push webshoppingagg' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/webhooks-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/webhooks-api/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Services/Webhooks/* | ||||||
|  |     - k8s/helm/webhooks-api/*   | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build webhooks | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build webhooks.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push webhooks | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push webhooks.api' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/webhooks-client/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/webhooks-client/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Web/WebhookClient/* | ||||||
|  |     - k8s/helm/webhooks-web/*       | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build webhooks.client | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build webhooks.client' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push webhooks.client | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push webhooks.client' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/webmvc/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/webmvc/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Web/WebMVC/* | ||||||
|  |     - k8s/helm/webmvc/*         | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build webmvc | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build webmvc' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push webmvc | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push webmvc' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/webspa/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/webspa/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Web/WebSPA/* | ||||||
|  |     - k8s/helm/webspa/*             | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build webspa | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build webspa' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push webspa | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push webspa' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
							
								
								
									
										45
									
								
								build/azure-devops/webstatus/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								build/azure-devops/webstatus/azure-pipelines.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | pool: | ||||||
|  |   vmImage: 'ubuntu-16.04' | ||||||
|  | variables: | ||||||
|  |     registryEndpoint: eshop-registry | ||||||
|  | trigger: | ||||||
|  |   branches: | ||||||
|  |     include: | ||||||
|  |     - master | ||||||
|  |     - dev | ||||||
|  |   paths: | ||||||
|  |     include: | ||||||
|  |     - src/BuildingBlocks/* | ||||||
|  |     - src/Web/WebStatus/* | ||||||
|  |     - k8s/helm/webstatus/*         | ||||||
|  | steps: | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose build webstatus | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'build webstatus' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: DockerCompose@0 | ||||||
|  |   displayName: Compose push webstatus | ||||||
|  |   inputs: | ||||||
|  |     dockerComposeCommand: 'push webstatus' | ||||||
|  |     containerregistrytype: Container Registry | ||||||
|  |     dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |     dockerComposeFile: docker-compose.yml | ||||||
|  |     qualifyImageNames: true | ||||||
|  |     projectName: "" | ||||||
|  |     dockerComposeFileArgs: | | ||||||
|  |       TAG=$(Build.SourceBranchName) | ||||||
|  | - task: CopyFiles@2 | ||||||
|  |   inputs: | ||||||
|  |     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|  |     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  | - task: PublishBuildArtifacts@1 | ||||||
|  |   inputs: | ||||||
|  |     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |     artifactName: helm | ||||||
| @ -8,7 +8,7 @@ The ARM template `sbusdeploy.json` and its parameter file (`sbusdeploy.parameter | |||||||
| 
 | 
 | ||||||
| ## Editing sbusdeploy.parameters.json file | ## Editing sbusdeploy.parameters.json file | ||||||
| 
 | 
 | ||||||
| You can edit the `sbusdeploy.parameters.parameters.json` file to set your values, but is not needed. The only parameter than can | You can edit the `sbusdeploy.parameters.json` file to set your values, but is not needed. The only parameter than can | ||||||
| be set is: | be set is: | ||||||
| 
 | 
 | ||||||
| 1. `namespaceprefix` is a string that is used to create the namespace. ARM script creates unique values by appending a unique string to this parameter value, so you can leave the default value. | 1. `namespaceprefix` is a string that is used to create the namespace. ARM script creates unique values by appending a unique string to this parameter value, so you can leave the default value. | ||||||
| @ -21,4 +21,4 @@ i. e. if you are in windows, to deploy servicebus in a new resourcegroup located | |||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| create-resources.cmd servicebus\sbusdeploy newResourceGroup -c westus | create-resources.cmd servicebus\sbusdeploy newResourceGroup -c westus | ||||||
| ``` | ``` | ||||||
|  | |||||||
| @ -324,7 +324,7 @@ services: | |||||||
| 
 | 
 | ||||||
|   webstatus: |   webstatus: | ||||||
|     environment: |     environment: | ||||||
|       - ASPNETCORE_ENVIRONMENT=Development |       - ASPNETCORE_ENVIRONMENT=Production | ||||||
|       - ASPNETCORE_URLS=http://0.0.0.0:80 |       - ASPNETCORE_URLS=http://0.0.0.0:80 | ||||||
|       - HealthChecks-UI__HealthChecks__1__Name=WebMVC HTTP Check |       - HealthChecks-UI__HealthChecks__1__Name=WebMVC HTTP Check | ||||||
|       - HealthChecks-UI__HealthChecks__1__Uri=http://webmvc/hc |       - HealthChecks-UI__HealthChecks__1__Uri=http://webmvc/hc | ||||||
|  | |||||||
| @ -55,20 +55,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBusRabbitMQ", "src\Bui | |||||||
| EndProject | EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationEventLogEF", "src\BuildingBlocks\EventBus\IntegrationEventLogEF\IntegrationEventLogEF.csproj", "{9EE28E45-1533-472B-8267-56C48855BA0E}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationEventLogEF", "src\BuildingBlocks\EventBus\IntegrationEventLogEF\IntegrationEventLogEF.csproj", "{9EE28E45-1533-472B-8267-56C48855BA0E}" | ||||||
| EndProject | EndProject | ||||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HealthChecks", "HealthChecks", "{A81ECBC2-6B00-4DCD-8388-469174033379}" |  | ||||||
| EndProject |  | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.HealthChecks", "src\BuildingBlocks\HealthChecks\src\Microsoft.Extensions.HealthChecks\Microsoft.Extensions.HealthChecks.csproj", "{942ED6E8-0050-495F-A0EA-01E97F63760C}" |  | ||||||
| EndProject |  | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebStatus", "src\Web\WebStatus\WebStatus.csproj", "{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebStatus", "src\Web\WebStatus\WebStatus.csproj", "{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}" | ||||||
| EndProject | EndProject | ||||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Payment", "Payment", "{022E145D-1593-47EE-9608-8E323D3C63F5}" | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Payment", "Payment", "{022E145D-1593-47EE-9608-8E323D3C63F5}" | ||||||
| EndProject | EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.API", "src\Services\Payment\Payment.API\Payment.API.csproj", "{1A01AF82-6FCB-464C-B39C-F127AEBD315D}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.API", "src\Services\Payment\Payment.API\Payment.API.csproj", "{1A01AF82-6FCB-464C-B39C-F127AEBD315D}" | ||||||
| EndProject | EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.HealthChecks", "src\BuildingBlocks\HealthChecks\src\Microsoft.AspNetCore.HealthChecks\Microsoft.AspNetCore.HealthChecks.csproj", "{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}" |  | ||||||
| EndProject |  | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.HealthChecks.SqlServer", "src\BuildingBlocks\HealthChecks\src\Microsoft.Extensions.HealthChecks.SqlServer\Microsoft.Extensions.HealthChecks.SqlServer.csproj", "{4BD76717-3102-4969-8C2C-BAAA3F0263B6}" |  | ||||||
| EndProject |  | ||||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Location", "Location", "{41139F64-4046-4F16-96B7-D941D96FA9C6}" | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Location", "Location", "{41139F64-4046-4F16-96B7-D941D96FA9C6}" | ||||||
| EndProject | EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Locations.API", "src\Services\Location\Locations.API\Locations.API.csproj", "{E7581357-FC34-474C-B8F5-307EE3CE05EF}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Locations.API", "src\Services\Location\Locations.API\Locations.API.csproj", "{E7581357-FC34-474C-B8F5-307EE3CE05EF}" | ||||||
| @ -79,8 +71,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Marketing.API", "src\Servic | |||||||
| EndProject | EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBusServiceBus", "src\BuildingBlocks\EventBus\EventBusServiceBus\EventBusServiceBus.csproj", "{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventBusServiceBus", "src\BuildingBlocks\EventBus\EventBusServiceBus\EventBusServiceBus.csproj", "{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}" | ||||||
| EndProject | EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.HealthChecks.AzureStorage", "src\BuildingBlocks\HealthChecks\src\Microsoft.Extensions.HealthChecks.AzureStorage\Microsoft.Extensions.HealthChecks.AzureStorage.csproj", "{768C887F-C229-4B94-ACD8-0C7F65686524}" |  | ||||||
| EndProject |  | ||||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebHost", "WebHost", "{1815B651-941C-466B-AE33-D1D7EEB8F77F}" | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebHost", "WebHost", "{1815B651-941C-466B-AE33-D1D7EEB8F77F}" | ||||||
| EndProject | EndProject | ||||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebHost.Customization", "src\BuildingBlocks\WebHostCustomization\WebHost.Customization\WebHost.Customization.csproj", "{15F4B3AA-89B6-4A0D-9051-414305974781}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebHost.Customization", "src\BuildingBlocks\WebHostCustomization\WebHost.Customization\WebHost.Customization.csproj", "{15F4B3AA-89B6-4A0D-9051-414305974781}" | ||||||
| @ -141,6 +131,36 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{DA1786E4 | |||||||
| EndProject | EndProject | ||||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{30308DE0-8128-4613-BCAD-B0BEFFB20E38}" | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{30308DE0-8128-4613-BCAD-B0BEFFB20E38}" | ||||||
| EndProject | EndProject | ||||||
|  | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ApiGateways", "ApiGateways", "{79C64C7A-ED74-4F01-921F-92F4F9FC1E1D}" | ||||||
|  | EndProject | ||||||
|  | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ApiGw-Base", "ApiGw-Base", "{56AD1FCA-6E16-4798-BF29-941C5B3277D2}" | ||||||
|  | EndProject | ||||||
|  | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile.Bff.Marketing", "Mobile.Bff.Marketing", "{34ED3311-2B30-4C8B-823B-312B50FFC32A}" | ||||||
|  | 	ProjectSection(SolutionItems) = preProject | ||||||
|  | 		src\ApiGateways\Mobile.Bff.Marketing\apigw\configuration.json = src\ApiGateways\Mobile.Bff.Marketing\apigw\configuration.json | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile.Bff.Shopping", "Mobile.Bff.Shopping", "{A32A5254-BA36-46FC-8C75-F7B8FFE8FCD0}" | ||||||
|  | 	ProjectSection(SolutionItems) = preProject | ||||||
|  | 		src\ApiGateways\Mobile.Bff.Shopping\apigw\configuration.json = src\ApiGateways\Mobile.Bff.Shopping\apigw\configuration.json | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web.Bff.Marketing", "Web.Bff.Marketing", "{696D2B7E-6B75-401D-964A-BFE6F4D7AF73}" | ||||||
|  | 	ProjectSection(SolutionItems) = preProject | ||||||
|  | 		src\ApiGateways\Web.Bff.Marketing\apigw\configuration.json = src\ApiGateways\Web.Bff.Marketing\apigw\configuration.json | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Web.Bff.Shopping", "Web.Bff.Shopping", "{424BC53E-17EA-4E12-BC07-64BAA927ABCB}" | ||||||
|  | 	ProjectSection(SolutionItems) = preProject | ||||||
|  | 		src\ApiGateways\Web.Bff.Shopping\apigw\configuration.json = src\ApiGateways\Web.Bff.Shopping\apigw\configuration.json | ||||||
|  | 	EndProjectSection | ||||||
|  | EndProject | ||||||
|  | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OcelotApiGw", "src\ApiGateways\ApiGw-Base\OcelotApiGw.csproj", "{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}" | ||||||
|  | EndProject | ||||||
|  | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mobile.Shopping.HttpAggregator", "src\ApiGateways\Mobile.Bff.Shopping\aggregator\Mobile.Shopping.HttpAggregator.csproj", "{98E0B3BA-6601-4C59-A9AA-24A00A17D835}" | ||||||
|  | EndProject | ||||||
|  | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Web.Shopping.HttpAggregator", "src\ApiGateways\Web.Bff.Shopping\aggregator\Web.Shopping.HttpAggregator.csproj", "{E39BD762-BC86-459D-B818-B6BF2D9F1352}" | ||||||
|  | EndProject | ||||||
| Global | Global | ||||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
| 		Ad-Hoc|Any CPU = Ad-Hoc|Any CPU | 		Ad-Hoc|Any CPU = Ad-Hoc|Any CPU | ||||||
| @ -635,54 +655,6 @@ Global | |||||||
| 		{9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x64.Build.0 = Release|Any CPU | 		{9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x64.Build.0 = Release|Any CPU | ||||||
| 		{9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x86.ActiveCfg = Release|Any CPU | 		{9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
| 		{9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x86.Build.0 = Release|Any CPU | 		{9EE28E45-1533-472B-8267-56C48855BA0E}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Ad-Hoc|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.AppStore|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Debug|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|Any CPU.ActiveCfg = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|Any CPU.Build.0 = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|ARM.ActiveCfg = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|ARM.Build.0 = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|iPhone.ActiveCfg = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|iPhone.Build.0 = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|x64.ActiveCfg = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|x64.Build.0 = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|x86.ActiveCfg = Release|Any CPU |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C}.Release|x86.Build.0 = Release|Any CPU |  | ||||||
| 		{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | 		{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | 		{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | ||||||
| 		{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | 		{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | ||||||
| @ -779,102 +751,6 @@ Global | |||||||
| 		{1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x64.Build.0 = Release|Any CPU | 		{1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x64.Build.0 = Release|Any CPU | ||||||
| 		{1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x86.ActiveCfg = Release|Any CPU | 		{1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
| 		{1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x86.Build.0 = Release|Any CPU | 		{1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.AppStore|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Debug|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|Any CPU.ActiveCfg = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|Any CPU.Build.0 = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|ARM.ActiveCfg = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|ARM.Build.0 = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|iPhone.ActiveCfg = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|iPhone.Build.0 = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|x64.ActiveCfg = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|x64.Build.0 = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|x86.ActiveCfg = Release|Any CPU |  | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Release|x86.Build.0 = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Ad-Hoc|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.AppStore|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Debug|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|Any CPU.ActiveCfg = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|Any CPU.Build.0 = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|ARM.ActiveCfg = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|ARM.Build.0 = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|iPhone.ActiveCfg = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|iPhone.Build.0 = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|iPhoneSimulator.Build.0 = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|x64.ActiveCfg = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|x64.Build.0 = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|x86.ActiveCfg = Release|Any CPU |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6}.Release|x86.Build.0 = Release|Any CPU |  | ||||||
| 		{E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | 		{E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | 		{E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | ||||||
| 		{E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | 		{E7581357-FC34-474C-B8F5-307EE3CE05EF}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | ||||||
| @ -1019,54 +895,6 @@ Global | |||||||
| 		{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x64.Build.0 = Release|Any CPU | 		{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x64.Build.0 = Release|Any CPU | ||||||
| 		{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x86.ActiveCfg = Release|Any CPU | 		{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
| 		{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x86.Build.0 = Release|Any CPU | 		{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Ad-Hoc|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.AppStore|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|ARM.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|ARM.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|iPhone.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|iPhone.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|x64.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|x64.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|x86.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Debug|x86.Build.0 = Debug|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|Any CPU.ActiveCfg = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|Any CPU.Build.0 = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|ARM.ActiveCfg = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|ARM.Build.0 = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|iPhone.ActiveCfg = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|iPhone.Build.0 = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|iPhoneSimulator.Build.0 = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|x64.ActiveCfg = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|x64.Build.0 = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|x86.ActiveCfg = Release|Any CPU |  | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524}.Release|x86.Build.0 = Release|Any CPU |  | ||||||
| 		{15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | 		{15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | 		{15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | ||||||
| 		{15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | 		{15F4B3AA-89B6-4A0D-9051-414305974781}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | ||||||
| @ -2067,6 +1895,150 @@ Global | |||||||
| 		{3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x64.Build.0 = Release|Any CPU | 		{3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x64.Build.0 = Release|Any CPU | ||||||
| 		{3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x86.ActiveCfg = Release|Any CPU | 		{3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
| 		{3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x86.Build.0 = Release|Any CPU | 		{3572B4E2-4399-4797-B5C2-3720D870E0C3}.Release|x86.Build.0 = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Ad-Hoc|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.AppStore|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|iPhone.ActiveCfg = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|iPhone.Build.0 = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC}.Release|x86.Build.0 = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Ad-Hoc|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.AppStore|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|iPhone.ActiveCfg = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|iPhone.Build.0 = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|iPhoneSimulator.Build.0 = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835}.Release|x86.Build.0 = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Ad-Hoc|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.AppStore|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|iPhone.ActiveCfg = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|iPhone.Build.0 = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|iPhoneSimulator.Build.0 = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 	EndGlobalSection | 	EndGlobalSection | ||||||
| 	GlobalSection(SolutionProperties) = preSolution | 	GlobalSection(SolutionProperties) = preSolution | ||||||
| 		HideSolutionNode = FALSE | 		HideSolutionNode = FALSE | ||||||
| @ -2092,19 +2064,14 @@ Global | |||||||
| 		{0044B293-1DCC-4224-B948-00CF6DC7F510} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} | 		{0044B293-1DCC-4224-B948-00CF6DC7F510} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} | ||||||
| 		{8088F3FC-6787-45FA-A924-816EC81CBFAC} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} | 		{8088F3FC-6787-45FA-A924-816EC81CBFAC} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} | ||||||
| 		{9EE28E45-1533-472B-8267-56C48855BA0E} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} | 		{9EE28E45-1533-472B-8267-56C48855BA0E} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} | ||||||
| 		{A81ECBC2-6B00-4DCD-8388-469174033379} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} |  | ||||||
| 		{942ED6E8-0050-495F-A0EA-01E97F63760C} = {A81ECBC2-6B00-4DCD-8388-469174033379} |  | ||||||
| 		{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} | 		{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} | ||||||
| 		{022E145D-1593-47EE-9608-8E323D3C63F5} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} | 		{022E145D-1593-47EE-9608-8E323D3C63F5} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} | ||||||
| 		{1A01AF82-6FCB-464C-B39C-F127AEBD315D} = {022E145D-1593-47EE-9608-8E323D3C63F5} | 		{1A01AF82-6FCB-464C-B39C-F127AEBD315D} = {022E145D-1593-47EE-9608-8E323D3C63F5} | ||||||
| 		{22A0F9C1-2D4A-4107-95B7-8459E6688BC5} = {A81ECBC2-6B00-4DCD-8388-469174033379} |  | ||||||
| 		{4BD76717-3102-4969-8C2C-BAAA3F0263B6} = {A81ECBC2-6B00-4DCD-8388-469174033379} |  | ||||||
| 		{41139F64-4046-4F16-96B7-D941D96FA9C6} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} | 		{41139F64-4046-4F16-96B7-D941D96FA9C6} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} | ||||||
| 		{E7581357-FC34-474C-B8F5-307EE3CE05EF} = {41139F64-4046-4F16-96B7-D941D96FA9C6} | 		{E7581357-FC34-474C-B8F5-307EE3CE05EF} = {41139F64-4046-4F16-96B7-D941D96FA9C6} | ||||||
| 		{A5260DE0-1FDD-467E-9CC1-A028AB081CEE} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} | 		{A5260DE0-1FDD-467E-9CC1-A028AB081CEE} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} | ||||||
| 		{DF395F85-B010-465D-857A-7EBCC512C0C2} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE} | 		{DF395F85-B010-465D-857A-7EBCC512C0C2} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE} | ||||||
| 		{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} | 		{69AF10D3-AA76-4FF7-B187-EC7E8CC5F5B8} = {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} | ||||||
| 		{768C887F-C229-4B94-ACD8-0C7F65686524} = {A81ECBC2-6B00-4DCD-8388-469174033379} |  | ||||||
| 		{1815B651-941C-466B-AE33-D1D7EEB8F77F} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} | 		{1815B651-941C-466B-AE33-D1D7EEB8F77F} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} | ||||||
| 		{15F4B3AA-89B6-4A0D-9051-414305974781} = {1815B651-941C-466B-AE33-D1D7EEB8F77F} | 		{15F4B3AA-89B6-4A0D-9051-414305974781} = {1815B651-941C-466B-AE33-D1D7EEB8F77F} | ||||||
| 		{EF3EDC78-E864-43FF-8E80-CF33DD9508A3} = {932D8224-11F6-4D07-B109-DA28AD288A63} | 		{EF3EDC78-E864-43FF-8E80-CF33DD9508A3} = {932D8224-11F6-4D07-B109-DA28AD288A63} | ||||||
| @ -2135,6 +2102,15 @@ Global | |||||||
| 		{2B26A7AA-6D61-42FA-8AB7-C0F05AAE7F1C} = {41139F64-4046-4F16-96B7-D941D96FA9C6} | 		{2B26A7AA-6D61-42FA-8AB7-C0F05AAE7F1C} = {41139F64-4046-4F16-96B7-D941D96FA9C6} | ||||||
| 		{DA1786E4-30AB-434E-A827-92896390B79D} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE} | 		{DA1786E4-30AB-434E-A827-92896390B79D} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE} | ||||||
| 		{30308DE0-8128-4613-BCAD-B0BEFFB20E38} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} | 		{30308DE0-8128-4613-BCAD-B0BEFFB20E38} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} | ||||||
|  | 		{79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} = {932D8224-11F6-4D07-B109-DA28AD288A63} | ||||||
|  | 		{56AD1FCA-6E16-4798-BF29-941C5B3277D2} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} | ||||||
|  | 		{34ED3311-2B30-4C8B-823B-312B50FFC32A} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} | ||||||
|  | 		{A32A5254-BA36-46FC-8C75-F7B8FFE8FCD0} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} | ||||||
|  | 		{696D2B7E-6B75-401D-964A-BFE6F4D7AF73} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} | ||||||
|  | 		{424BC53E-17EA-4E12-BC07-64BAA927ABCB} = {79C64C7A-ED74-4F01-921F-92F4F9FC1E1D} | ||||||
|  | 		{0A328C44-4C4E-49BE-9FB4-9D851CEC28AC} = {56AD1FCA-6E16-4798-BF29-941C5B3277D2} | ||||||
|  | 		{98E0B3BA-6601-4C59-A9AA-24A00A17D835} = {A32A5254-BA36-46FC-8C75-F7B8FFE8FCD0} | ||||||
|  | 		{E39BD762-BC86-459D-B818-B6BF2D9F1352} = {424BC53E-17EA-4E12-BC07-64BAA927ABCB} | ||||||
| 	EndGlobalSection | 	EndGlobalSection | ||||||
| 	GlobalSection(ExtensibilityGlobals) = postSolution | 	GlobalSection(ExtensibilityGlobals) = postSolution | ||||||
| 		SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9} | 		SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9} | ||||||
|  | |||||||
							
								
								
									
										23
									
								
								hosts
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								hosts
									
									
									
									
									
								
							| @ -1,23 +0,0 @@ | |||||||
| # Copyright (c) 1993-2009 Microsoft Corp. |  | ||||||
| # |  | ||||||
| # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. |  | ||||||
| # |  | ||||||
| # This file contains the mappings of IP addresses to host names. Each |  | ||||||
| # entry should be kept on an individual line. The IP address should |  | ||||||
| # be placed in the first column followed by the corresponding host name. |  | ||||||
| # The IP address and the host name should be separated by at least one |  | ||||||
| # space. |  | ||||||
| # |  | ||||||
| # Additionally, comments (such as these) may be inserted on individual |  | ||||||
| # lines or following the machine name denoted by a '#' symbol. |  | ||||||
| # |  | ||||||
| # For example: |  | ||||||
| # |  | ||||||
| #      102.54.94.97     rhino.acme.com          # source server |  | ||||||
| #       38.25.63.10     x.acme.com              # x client host |  | ||||||
| 
 |  | ||||||
| # localhost name resolution is handled within DNS itself. |  | ||||||
| #	127.0.0.1       localhost |  | ||||||
| #	::1             localhost |  | ||||||
| 
 |  | ||||||
|        10.0.75.1     identity.service |  | ||||||
							
								
								
									
										208
									
								
								k8s/helm/deploy-all.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										208
									
								
								k8s/helm/deploy-all.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,208 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | # http://redsymbol.net/articles/unofficial-bash-strict-mode | ||||||
|  | set -euo pipefail | ||||||
|  | 
 | ||||||
|  | usage() | ||||||
|  | { | ||||||
|  |   cat <<END | ||||||
|  | deploy.sh: deploys the $app_name application to a Kubernetes cluster using Helm. | ||||||
|  | Parameters: | ||||||
|  |   --aks-name <AKS cluster name> | ||||||
|  |     The name of the AKS cluster. Required when the registry (using the -r parameter) is set to "aks". | ||||||
|  |   --aks-rg <AKS resource group> | ||||||
|  |     The resource group for the AKS cluster. Required when the registry (using the -r parameter) is set to "aks". | ||||||
|  |   -b | --build-solution | ||||||
|  |     Force a solution build before deployment (default: false). | ||||||
|  |   -d | --dns <dns or ip address> | ||||||
|  |     Specifies the external DNS/ IP address of the Kubernetes cluster.  | ||||||
|  |     When --use-local-k8s is specified the external DNS is automatically set to localhost. | ||||||
|  |   -h | --help | ||||||
|  |     Displays this help text and exits the script. | ||||||
|  |   -n | --app-name <the name of the app> | ||||||
|  |     Specifies the name of the application (default: eshop). | ||||||
|  |   -p | --docker-password <docker password> | ||||||
|  |     The Docker password used to logon to the custom registry, supplied using the -r parameter. | ||||||
|  |   -r | --registry <container registry> | ||||||
|  |     Specifies the container registry to use (required), e.g. myregistry.azurecr.io. | ||||||
|  |   --skip-clean | ||||||
|  |     Do not clean the Kubernetes cluster (default is to clean the cluster). | ||||||
|  |   --skip-image-build | ||||||
|  |     Do not build images (default is to build all images). | ||||||
|  |   --skip-image-push | ||||||
|  |     Do not upload images to the container registry (just run the Kubernetes deployment portion). | ||||||
|  |     Default is to push the images to the container registry. | ||||||
|  |   --skip-infrastructure | ||||||
|  |     Do not deploy infrastructure resources (like sql-data, no-sql or redis). | ||||||
|  |     This is useful for production environments where infrastructure is hosted outside the Kubernetes cluster. | ||||||
|  |   -t | --tag <docker image tag> | ||||||
|  |     The tag used for the newly created docker images. Default: newly created, date-based timestamp, with 1-minute resolution. | ||||||
|  |   -u | --docker-user <docker username> | ||||||
|  |     The Docker username used to logon to the custom registry, supplied using the -r parameter. | ||||||
|  |   --use-local-k8s | ||||||
|  |     Deploy to a locally installed Kubernetes (default: false). | ||||||
|  | 
 | ||||||
|  | It is assumed that the Kubernetes cluster has been granted access to the container registry. | ||||||
|  | If using AKS and ACR see link for more info:  | ||||||
|  | https://docs.microsoft.com/en-us/azure/container-registry/container-registry-auth-aks | ||||||
|  | 
 | ||||||
|  | WARNING! THE SCRIPT WILL COMPLETELY DESTROY ALL DEPLOYMENTS AND SERVICES VISIBLE | ||||||
|  | FROM THE CURRENT CONFIGURATION CONTEXT. | ||||||
|  | It is recommended that you create a separate namespace and confguration context | ||||||
|  | for the $app_name application, to isolate it from other applications on the cluster. | ||||||
|  | For more information see https://kubernetes.io/docs/tasks/administer-cluster/namespaces/ | ||||||
|  | You can use namespace.yaml file (in the same directory) to create the namespace. | ||||||
|  | 
 | ||||||
|  | END | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | app_name='eshop' | ||||||
|  | aks_name='' | ||||||
|  | aks_rg='' | ||||||
|  | build_images='yes' | ||||||
|  | clean='yes' | ||||||
|  | build_solution='' | ||||||
|  | container_registry='' | ||||||
|  | docker_password='' | ||||||
|  | docker_username='' | ||||||
|  | dns='' | ||||||
|  | image_tag=$(date '+%Y%m%d%H%M') | ||||||
|  | push_images='yes' | ||||||
|  | skip_infrastructure='' | ||||||
|  | use_local_k8s='' | ||||||
|  | 
 | ||||||
|  | while [[ $# -gt 0 ]]; do | ||||||
|  |   case "$1" in | ||||||
|  |     --aks-name ) | ||||||
|  |       aks_name="$2"; shift 2;; | ||||||
|  |     --aks-rg ) | ||||||
|  |       aks_rg="$2"; shift 2;; | ||||||
|  |     -b | --build-solution ) | ||||||
|  |       build_solution='yes'; shift ;; | ||||||
|  |     -d | --dns ) | ||||||
|  |       dns="$2"; shift 2;; | ||||||
|  |     -h | --help ) | ||||||
|  |       usage; exit 1 ;; | ||||||
|  |     -n | --app-name ) | ||||||
|  |       app_name="$2"; shift 2;; | ||||||
|  |     -p | --docker-password ) | ||||||
|  |       docker_password="$2"; shift;; | ||||||
|  |     -r | --registry ) | ||||||
|  |       container_registry="$2"; shift 2;; | ||||||
|  |     --skip-clean ) | ||||||
|  |       clean=''; shift ;; | ||||||
|  |     --skip-image-build ) | ||||||
|  |       build_images=''; shift ;; | ||||||
|  |     --skip-image-push ) | ||||||
|  |       push_images=''; shift ;; | ||||||
|  |     --skip-infrastructure ) | ||||||
|  |       skip_infrastructure='yes'; shift ;; | ||||||
|  |     -t | --tag ) | ||||||
|  |       image_tag="$2"; shift 2;;   | ||||||
|  |     -u | --docker-username ) | ||||||
|  |       docker_username="$2"; shift 2;; | ||||||
|  |     --use-local-k8s ) | ||||||
|  |       use_local_k8s='yes'; shift ;; | ||||||
|  |     *) | ||||||
|  |       echo "Unknown option $1" | ||||||
|  |       usage; exit 2 ;; | ||||||
|  |   esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | if [[ $build_solution ]]; then | ||||||
|  |   echo "#################### Building $app_name solution ####################" | ||||||
|  |   dotnet publish -o obj/Docker/publish ../../eShopOnContainers-ServicesAndWebApps.sln | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | export TAG=$image_tag | ||||||
|  | 
 | ||||||
|  | if [[ $build_images ]]; then | ||||||
|  |   echo "#################### Building the $app_name Docker images ####################" | ||||||
|  |   docker-compose -p ../.. -f ../../docker-compose.yml build | ||||||
|  | 
 | ||||||
|  |   # Remove temporary images | ||||||
|  |   docker rmi $(docker images -qf "dangling=true")  | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [[ $push_images ]]; then | ||||||
|  |   echo "#################### Pushing images to the container registry ####################" | ||||||
|  |   services=(basket.api catalog.api identity.api ordering.api marketing.api payment.api locations.api webmvc webspa webstatus) | ||||||
|  | 
 | ||||||
|  |   for service in "${services[@]}" | ||||||
|  |   do | ||||||
|  |     echo "Pushing image for service $service..." | ||||||
|  |     docker tag "eshop/$service:$image_tag" "$container_registry/$service:$image_tag" | ||||||
|  |     docker push "$container_registry/$service:$image_tag" | ||||||
|  |   done | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | ingress_values_file="ingress_values.yaml" | ||||||
|  | 
 | ||||||
|  | if [[ $use_local_k8s ]]; then | ||||||
|  |   ingress_values_file="ingress_values_dockerk8s.yaml" | ||||||
|  |   dns="localhost" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [[ $dns == "aks" ]]; then | ||||||
|  |   echo "#################### Begin AKS discovery based on the --dns aks setting. ####################" | ||||||
|  |   if [[ -z $aks_name ]] || [[ -z $aks_rg ]]; then | ||||||
|  |     echo "Error: When using -dns aks, MUST set -aksName and -aksRg too." | ||||||
|  |     echo '' | ||||||
|  |     usage | ||||||
|  |     exit 1 | ||||||
|  |   fi | ||||||
|  | 
 | ||||||
|  |   echo "Getting DNS of AKS of AKS $aks_name (in resource group $aks_rg)" | ||||||
|  |   dns="$(az aks show -n $aks_name -g $aks_rg --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName)" | ||||||
|  |   if [[ -z dns ]]; then | ||||||
|  |     echo "Error: when getting DNS of AKS $aks_name (in resource group $aks_rg). Please ensure AKS has httpRouting enabled AND Azure CLI is logged in and is of version 2.0.37 or higher." | ||||||
|  |     exit 1 | ||||||
|  |   fi | ||||||
|  |   $dns=${dns//[\"]/""} | ||||||
|  |   echo "DNS base found is $dns. Will use $aks_name.$dns for the app!" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Initialization & check commands | ||||||
|  | if [[ -z $dns ]]; then | ||||||
|  |   echo "No DNS specified. Ingress resources will be bound to public IP." | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [[ $clean ]]; then | ||||||
|  |   echo "Cleaning previous helm releases..." | ||||||
|  |   helm delete --purge $(helm ls -q)  | ||||||
|  |   echo "Previous releases deleted" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | use_custom_registry='' | ||||||
|  | 
 | ||||||
|  | if [[ -n $container_registry ]]; then  | ||||||
|  |   use_custom_registry='yes' | ||||||
|  |   if [[ -z $docker_user ]] || [[ -z $docker_password ]]; then | ||||||
|  |     echo "Error: Must use -u (--docker-username) AND -p (--docker-password) if specifying custom registry" | ||||||
|  |     exit 1 | ||||||
|  |   fi | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | echo "#################### Begin $app_name installation using Helm ####################" | ||||||
|  | infras=(sql-data nosql-data rabbitmq keystore-data basket-data) | ||||||
|  | charts=(eshop-common apigwmm apigwms apigwwm apigwws basket-api catalog-api identity-api locations-api marketing-api mobileshoppingagg ordering-api ordering-backgroundtasks ordering-signalrhub payment-api webmvc webshoppingagg webspa webstatus webhooks-api webhooks-web) | ||||||
|  | 
 | ||||||
|  | if [[ !$skip_infrastructure ]]; then | ||||||
|  |   for infra in "${infras[@]}" | ||||||
|  |   do | ||||||
|  |     echo "Installing infrastructure: $infra" | ||||||
|  |     helm install --values app.yaml --values inf.yaml --values $ingress_values_file --set app.name=$app_name --set inf.k8s.dns=$dns --name="$app_name-$infra" $infra      | ||||||
|  |   done   | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | for chart in "${charts[@]}" | ||||||
|  | do | ||||||
|  |     echo "Installing: $chart" | ||||||
|  |     if [[ $use_custom_registry ]]; then  | ||||||
|  |       helm install --set inf.registry.server=$container_registry --set inf.registry.login=$docker_username --set inf.registry.pwd=$docker_password --set inf.registry.secretName=eshop-docker-scret --values app.yaml --values inf.yaml --values $ingress_values_file --set app.name=$app_name --set inf.k8s.dns=$dns --set image.tag=$image_tag --set image.pullPolicy=Always --name="$app_name-$chart" $chart  | ||||||
|  |     elif [[ $chart != "eshop-common" ]]; then  # eshop-common is ignored when no secret must be deployed | ||||||
|  |       helm install --values app.yaml --values inf.yaml --values $ingress_values_file --set app.name=$app_name --set inf.k8s.dns=$dns --set image.tag=$image_tag --set image.pullPolicy=Always --name="$app_name-$chart" $chart  | ||||||
|  |     fi | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | echo "FINISHED: Helm charts installed." | ||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/ApiGateways/ApiGw-Base/ | WORKDIR /src/src/ApiGateways/ApiGw-Base/ | ||||||
|  | |||||||
| @ -5,8 +5,8 @@ | |||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.2" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" /> |     <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="2.2.0" /> |     <PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.HealthChecks" Version="1.0.0" /> |     <PackageReference Include="Microsoft.AspNetCore.HealthChecks" Version="1.0.0" /> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/ApiGateways/Mobile.Bff.Shopping/aggregator | WORKDIR /src/src/ApiGateways/Mobile.Bff.Shopping/aggregator | ||||||
|  | |||||||
| @ -12,8 +12,8 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.2" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.App" /> |     <PackageReference Include="Microsoft.AspNetCore.App" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="2.2.0" /> |     <PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="2.2.0" /> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/ApiGateways/Web.Bff.Shopping/aggregator | WORKDIR /src/src/ApiGateways/Web.Bff.Shopping/aggregator | ||||||
|  | |||||||
| @ -12,8 +12,8 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.2" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" /> |     <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="2.2.0" /> |     <PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|  | |||||||
| @ -3,14 +3,13 @@ using System.Collections.Generic; | |||||||
| using System.Linq; | using System.Linq; | ||||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Behaviors | namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions | ||||||
| { | { | ||||||
|     internal static class BehaviorsHelperExtensions |     public static class GenericTypeExtensions | ||||||
|     { |     { | ||||||
|         internal static string GetGenericTypeName(this object @object) |         public static string GetGenericTypeName(this Type type) | ||||||
|         { |         { | ||||||
|             var typeName = string.Empty; |             var typeName = string.Empty; | ||||||
|             var type = @object.GetType(); |  | ||||||
| 
 | 
 | ||||||
|             if (type.IsGenericType) |             if (type.IsGenericType) | ||||||
|             { |             { | ||||||
| @ -25,5 +24,9 @@ namespace Ordering.API.Application.Behaviors | |||||||
|             return typeName; |             return typeName; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         public static string GetGenericTypeName(this object @object) | ||||||
|  |         { | ||||||
|  |             return @object.GetType().GetGenericTypeName(); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -2,6 +2,7 @@ | |||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus; | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus; | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | ||||||
|  | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
| using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||||
| using Newtonsoft.Json; | using Newtonsoft.Json; | ||||||
| using Newtonsoft.Json.Linq; | using Newtonsoft.Json.Linq; | ||||||
| @ -97,7 +98,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | |||||||
| 
 | 
 | ||||||
|                     channel.BasicPublish(exchange: BROKER_NAME, |                     channel.BasicPublish(exchange: BROKER_NAME, | ||||||
|                                      routingKey: eventName, |                                      routingKey: eventName, | ||||||
|                                      mandatory:true, |                                      mandatory: true, | ||||||
|                                      basicProperties: properties, |                                      basicProperties: properties, | ||||||
|                                      body: body); |                                      body: body); | ||||||
|                 }); |                 }); | ||||||
| @ -107,8 +108,11 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | |||||||
|         public void SubscribeDynamic<TH>(string eventName) |         public void SubscribeDynamic<TH>(string eventName) | ||||||
|             where TH : IDynamicIntegrationEventHandler |             where TH : IDynamicIntegrationEventHandler | ||||||
|         { |         { | ||||||
|  |             _logger.LogInformation("Subscribing to dynamic event {EventName} with {EventHandler}", eventName, typeof(TH).GetGenericTypeName()); | ||||||
|  | 
 | ||||||
|             DoInternalSubscription(eventName); |             DoInternalSubscription(eventName); | ||||||
|             _subsManager.AddDynamicSubscription<TH>(eventName); |             _subsManager.AddDynamicSubscription<TH>(eventName); | ||||||
|  |             StartBasicConsume(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public void Subscribe<T, TH>() |         public void Subscribe<T, TH>() | ||||||
| @ -117,7 +121,11 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | |||||||
|         { |         { | ||||||
|             var eventName = _subsManager.GetEventKey<T>(); |             var eventName = _subsManager.GetEventKey<T>(); | ||||||
|             DoInternalSubscription(eventName); |             DoInternalSubscription(eventName); | ||||||
|  | 
 | ||||||
|  |             _logger.LogInformation("Subscribing to event {EventName} with {EventHandler}", eventName, typeof(TH).GetGenericTypeName()); | ||||||
|  | 
 | ||||||
|             _subsManager.AddSubscription<T, TH>(); |             _subsManager.AddSubscription<T, TH>(); | ||||||
|  |             StartBasicConsume(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         private void DoInternalSubscription(string eventName) |         private void DoInternalSubscription(string eventName) | ||||||
| @ -140,9 +148,13 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public void Unsubscribe<T, TH>() |         public void Unsubscribe<T, TH>() | ||||||
|             where TH : IIntegrationEventHandler<T> |  | ||||||
|             where T : IntegrationEvent |             where T : IntegrationEvent | ||||||
|  |             where TH : IIntegrationEventHandler<T> | ||||||
|         { |         { | ||||||
|  |             var eventName = _subsManager.GetEventKey<T>(); | ||||||
|  | 
 | ||||||
|  |             _logger.LogInformation("Unsubscribing from event {EventName}", eventName); | ||||||
|  | 
 | ||||||
|             _subsManager.RemoveSubscription<T, TH>(); |             _subsManager.RemoveSubscription<T, TH>(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -162,6 +174,31 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | |||||||
|             _subsManager.Clear(); |             _subsManager.Clear(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         private void StartBasicConsume() | ||||||
|  |         { | ||||||
|  |             if (_consumerChannel != null) | ||||||
|  |             { | ||||||
|  |                 var consumer = new EventingBasicConsumer(_consumerChannel); | ||||||
|  |                 consumer.Received += async (model, ea) => | ||||||
|  |                 { | ||||||
|  |                     var eventName = ea.RoutingKey; | ||||||
|  |                     var message = Encoding.UTF8.GetString(ea.Body); | ||||||
|  | 
 | ||||||
|  |                     await ProcessEvent(eventName, message); | ||||||
|  | 
 | ||||||
|  |                     _consumerChannel.BasicAck(ea.DeliveryTag, multiple: false); | ||||||
|  |                 }; | ||||||
|  | 
 | ||||||
|  |                 _consumerChannel.BasicConsume(queue: _queueName, | ||||||
|  |                                      autoAck: false, | ||||||
|  |                                      consumer: consumer); | ||||||
|  |             } | ||||||
|  |             else | ||||||
|  |             { | ||||||
|  |                 _logger.LogError("StartBasicConsume can not call on _consumerChannelCreated == false"); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         private IModel CreateConsumerChannel() |         private IModel CreateConsumerChannel() | ||||||
|         { |         { | ||||||
|             if (!_persistentConnection.IsConnected) |             if (!_persistentConnection.IsConnected) | ||||||
| @ -180,26 +217,11 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | |||||||
|                                  autoDelete: false, |                                  autoDelete: false, | ||||||
|                                  arguments: null); |                                  arguments: null); | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|             var consumer = new EventingBasicConsumer(channel); |  | ||||||
|             consumer.Received += async (model, ea) => |  | ||||||
|             { |  | ||||||
|                 var eventName = ea.RoutingKey; |  | ||||||
|                 var message = Encoding.UTF8.GetString(ea.Body); |  | ||||||
| 
 |  | ||||||
|                 await ProcessEvent(eventName, message); |  | ||||||
| 
 |  | ||||||
|                 channel.BasicAck(ea.DeliveryTag,multiple:false); |  | ||||||
|             }; |  | ||||||
| 
 |  | ||||||
|             channel.BasicConsume(queue: _queueName, |  | ||||||
|                                  autoAck: false, |  | ||||||
|                                  consumer: consumer); |  | ||||||
| 
 |  | ||||||
|             channel.CallbackException += (sender, ea) => |             channel.CallbackException += (sender, ea) => | ||||||
|             { |             { | ||||||
|                 _consumerChannel.Dispose(); |                 _consumerChannel.Dispose(); | ||||||
|                 _consumerChannel = CreateConsumerChannel(); |                 _consumerChannel = CreateConsumerChannel(); | ||||||
|  |                 StartBasicConsume(); | ||||||
|             }; |             }; | ||||||
| 
 | 
 | ||||||
|             return channel; |             return channel; | ||||||
| @ -215,7 +237,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | |||||||
|                     foreach (var subscription in subscriptions) |                     foreach (var subscription in subscriptions) | ||||||
|                     { |                     { | ||||||
|                         if (subscription.IsDynamic) |                         if (subscription.IsDynamic) | ||||||
|                         {  |                         { | ||||||
|                             var handler = scope.ResolveOptional(subscription.HandlerType) as IDynamicIntegrationEventHandler; |                             var handler = scope.ResolveOptional(subscription.HandlerType) as IDynamicIntegrationEventHandler; | ||||||
|                             if (handler == null) continue; |                             if (handler == null) continue; | ||||||
|                             dynamic eventData = JObject.Parse(message); |                             dynamic eventData = JObject.Parse(message); | ||||||
|  | |||||||
| @ -27,7 +27,7 @@ | |||||||
|             ILifetimeScope autofac) |             ILifetimeScope autofac) | ||||||
|         { |         { | ||||||
|             _serviceBusPersisterConnection = serviceBusPersisterConnection; |             _serviceBusPersisterConnection = serviceBusPersisterConnection; | ||||||
|             _logger = logger; |             _logger = logger ?? throw new ArgumentNullException(nameof(logger)); | ||||||
|             _subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager(); |             _subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager(); | ||||||
| 
 | 
 | ||||||
|             _subscriptionClient = new SubscriptionClient(serviceBusPersisterConnection.ServiceBusConnectionStringBuilder, |             _subscriptionClient = new SubscriptionClient(serviceBusPersisterConnection.ServiceBusConnectionStringBuilder, | ||||||
| @ -61,6 +61,8 @@ | |||||||
|         public void SubscribeDynamic<TH>(string eventName) |         public void SubscribeDynamic<TH>(string eventName) | ||||||
|             where TH : IDynamicIntegrationEventHandler |             where TH : IDynamicIntegrationEventHandler | ||||||
|         { |         { | ||||||
|  |             _logger.LogInformation("Subscribing to dynamic event {EventName} with {EventHandler}", eventName, nameof(TH)); | ||||||
|  | 
 | ||||||
|             _subsManager.AddDynamicSubscription<TH>(eventName); |             _subsManager.AddDynamicSubscription<TH>(eventName); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -87,6 +89,8 @@ | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |             _logger.LogInformation("Subscribing to event {EventName} with {EventHandler}", eventName, nameof(TH)); | ||||||
|  | 
 | ||||||
|             _subsManager.AddSubscription<T, TH>(); |             _subsManager.AddSubscription<T, TH>(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -108,12 +112,16 @@ | |||||||
|                 _logger.LogWarning("The messaging entity {eventName} Could not be found.", eventName); |                 _logger.LogWarning("The messaging entity {eventName} Could not be found.", eventName); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |             _logger.LogInformation("Unsubscribing from event {EventName}", eventName); | ||||||
|  | 
 | ||||||
|             _subsManager.RemoveSubscription<T, TH>(); |             _subsManager.RemoveSubscription<T, TH>(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public void UnsubscribeDynamic<TH>(string eventName) |         public void UnsubscribeDynamic<TH>(string eventName) | ||||||
|             where TH : IDynamicIntegrationEventHandler |             where TH : IDynamicIntegrationEventHandler | ||||||
|         { |         { | ||||||
|  |             _logger.LogInformation("Unsubscribing from dynamic event {EventName}", eventName); | ||||||
|  | 
 | ||||||
|             _subsManager.RemoveDynamicSubscription<TH>(eventName); |             _subsManager.RemoveDynamicSubscription<TH>(eventName); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -136,17 +144,16 @@ | |||||||
|                         await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken); |                         await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken); | ||||||
|                     } |                     } | ||||||
|                 }, |                 }, | ||||||
|                new MessageHandlerOptions(ExceptionReceivedHandler) { MaxConcurrentCalls = 10, AutoComplete = false }); |                 new MessageHandlerOptions(ExceptionReceivedHandler) { MaxConcurrentCalls = 10, AutoComplete = false }); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         private Task ExceptionReceivedHandler(ExceptionReceivedEventArgs exceptionReceivedEventArgs) |         private Task ExceptionReceivedHandler(ExceptionReceivedEventArgs exceptionReceivedEventArgs) | ||||||
|         { |         { | ||||||
|             Console.WriteLine($"Message handler encountered an exception {exceptionReceivedEventArgs.Exception}."); |             var ex = exceptionReceivedEventArgs.Exception; | ||||||
|             var context = exceptionReceivedEventArgs.ExceptionReceivedContext; |             var context = exceptionReceivedEventArgs.ExceptionReceivedContext; | ||||||
|             Console.WriteLine("Exception context for troubleshooting:"); | 
 | ||||||
|             Console.WriteLine($"- Endpoint: {context.Endpoint}"); |             _logger.LogError(ex, "ERROR handling message: {ExceptionMessage} - Context: {@ExceptionContext}", ex.Message, context); | ||||||
|             Console.WriteLine($"- Entity Path: {context.EntityPath}"); | 
 | ||||||
|             Console.WriteLine($"- Executing Action: {context.Action}"); |  | ||||||
|             return Task.CompletedTask; |             return Task.CompletedTask; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -172,7 +179,7 @@ | |||||||
|                             var handler = scope.ResolveOptional(subscription.HandlerType); |                             var handler = scope.ResolveOptional(subscription.HandlerType); | ||||||
|                             if (handler == null) continue; |                             if (handler == null) continue; | ||||||
|                             var eventType = _subsManager.GetEventTypeByName(eventName); |                             var eventType = _subsManager.GetEventTypeByName(eventName); | ||||||
|                             var integrationEvent = JsonConvert.DeserializeObject(message, eventType);                             |                             var integrationEvent = JsonConvert.DeserializeObject(message, eventType); | ||||||
|                             var concreteType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType); |                             var concreteType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType); | ||||||
|                             await (Task)concreteType.GetMethod("Handle").Invoke(handler, new object[] { integrationEvent }); |                             await (Task)concreteType.GetMethod("Handle").Invoke(handler, new object[] { integrationEvent }); | ||||||
|                         } |                         } | ||||||
|  | |||||||
| @ -1,175 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> |  | ||||||
| <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |  | ||||||
|   <PropertyGroup> |  | ||||||
|     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |  | ||||||
|     <Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform> |  | ||||||
|     <ProjectGuid>{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}</ProjectGuid> |  | ||||||
|     <ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> |  | ||||||
|     <OutputType>Exe</OutputType> |  | ||||||
|     <RootNamespace>eShopOnContainers.TestRunner.iOS</RootNamespace> |  | ||||||
|     <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix> |  | ||||||
|     <AssemblyName>eShopOnContainers.TestRunner.iOS</AssemblyName> |  | ||||||
|     <NuGetPackageImportStamp> |  | ||||||
|     </NuGetPackageImportStamp> |  | ||||||
|   </PropertyGroup> |  | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' "> |  | ||||||
|     <DebugSymbols>true</DebugSymbols> |  | ||||||
|     <DebugType>full</DebugType> |  | ||||||
|     <Optimize>false</Optimize> |  | ||||||
|     <OutputPath>bin\iPhoneSimulator\Debug</OutputPath> |  | ||||||
|     <DefineConstants>DEBUG</DefineConstants> |  | ||||||
|     <ErrorReport>prompt</ErrorReport> |  | ||||||
|     <WarningLevel>4</WarningLevel> |  | ||||||
|     <ConsolePause>false</ConsolePause> |  | ||||||
|     <MtouchArch>x86_64</MtouchArch> |  | ||||||
|     <MtouchLink>SdkOnly</MtouchLink> |  | ||||||
|     <MtouchDebug>True</MtouchDebug> |  | ||||||
|     <MtouchSdkVersion>10.1</MtouchSdkVersion> |  | ||||||
|     <MtouchProfiling>False</MtouchProfiling> |  | ||||||
|     <MtouchFastDev>False</MtouchFastDev> |  | ||||||
|     <MtouchUseLlvm>False</MtouchUseLlvm> |  | ||||||
|     <MtouchUseThumb>False</MtouchUseThumb> |  | ||||||
|     <MtouchEnableBitcode>False</MtouchEnableBitcode> |  | ||||||
|     <MtouchUseSGen>False</MtouchUseSGen> |  | ||||||
|     <MtouchUseRefCounting>False</MtouchUseRefCounting> |  | ||||||
|     <OptimizePNGs>True</OptimizePNGs> |  | ||||||
|     <MtouchTlsProvider>Default</MtouchTlsProvider> |  | ||||||
|     <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler> |  | ||||||
|     <MtouchFloat32>False</MtouchFloat32> |  | ||||||
|   </PropertyGroup> |  | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' "> |  | ||||||
|     <DebugType>none</DebugType> |  | ||||||
|     <Optimize>true</Optimize> |  | ||||||
|     <OutputPath>bin\iPhoneSimulator\Release</OutputPath> |  | ||||||
|     <ErrorReport>prompt</ErrorReport> |  | ||||||
|     <WarningLevel>4</WarningLevel> |  | ||||||
|     <MtouchLink>None</MtouchLink> |  | ||||||
|     <MtouchArch>x86_64</MtouchArch> |  | ||||||
|     <ConsolePause>false</ConsolePause> |  | ||||||
|   </PropertyGroup> |  | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' "> |  | ||||||
|     <DebugSymbols>true</DebugSymbols> |  | ||||||
|     <DebugType>full</DebugType> |  | ||||||
|     <Optimize>false</Optimize> |  | ||||||
|     <OutputPath>bin\iPhone\Debug</OutputPath> |  | ||||||
|     <DefineConstants>DEBUG</DefineConstants> |  | ||||||
|     <ErrorReport>prompt</ErrorReport> |  | ||||||
|     <WarningLevel>4</WarningLevel> |  | ||||||
|     <ConsolePause>false</ConsolePause> |  | ||||||
|     <MtouchArch>ARMv7, ARM64</MtouchArch> |  | ||||||
|     <CodesignEntitlements>Entitlements.plist</CodesignEntitlements> |  | ||||||
|     <CodesignKey>iPhone Developer</CodesignKey> |  | ||||||
|     <MtouchDebug>true</MtouchDebug> |  | ||||||
|   </PropertyGroup> |  | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' "> |  | ||||||
|     <DebugType>none</DebugType> |  | ||||||
|     <Optimize>true</Optimize> |  | ||||||
|     <OutputPath>bin\iPhone\Release</OutputPath> |  | ||||||
|     <ErrorReport>prompt</ErrorReport> |  | ||||||
|     <WarningLevel>4</WarningLevel> |  | ||||||
|     <CodesignEntitlements>Entitlements.plist</CodesignEntitlements> |  | ||||||
|     <MtouchArch>ARMv7, ARM64</MtouchArch> |  | ||||||
|     <ConsolePause>false</ConsolePause> |  | ||||||
|     <CodesignKey>iPhone Developer</CodesignKey> |  | ||||||
|   </PropertyGroup> |  | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' "> |  | ||||||
|     <DebugType>none</DebugType> |  | ||||||
|     <Optimize>True</Optimize> |  | ||||||
|     <OutputPath>bin\iPhone\Ad-Hoc</OutputPath> |  | ||||||
|     <ErrorReport>prompt</ErrorReport> |  | ||||||
|     <WarningLevel>4</WarningLevel> |  | ||||||
|     <ConsolePause>False</ConsolePause> |  | ||||||
|     <MtouchArch>ARMv7, ARM64</MtouchArch> |  | ||||||
|     <CodesignEntitlements>Entitlements.plist</CodesignEntitlements> |  | ||||||
|     <BuildIpa>True</BuildIpa> |  | ||||||
|     <CodesignProvision>Automatic:AdHoc</CodesignProvision> |  | ||||||
|     <CodesignKey>iPhone Distribution</CodesignKey> |  | ||||||
|   </PropertyGroup> |  | ||||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' "> |  | ||||||
|     <DebugType>none</DebugType> |  | ||||||
|     <Optimize>True</Optimize> |  | ||||||
|     <OutputPath>bin\iPhone\AppStore</OutputPath> |  | ||||||
|     <ErrorReport>prompt</ErrorReport> |  | ||||||
|     <WarningLevel>4</WarningLevel> |  | ||||||
|     <ConsolePause>False</ConsolePause> |  | ||||||
|     <MtouchArch>ARMv7, ARM64</MtouchArch> |  | ||||||
|     <CodesignEntitlements>Entitlements.plist</CodesignEntitlements> |  | ||||||
|     <CodesignProvision>Automatic:AppStore</CodesignProvision> |  | ||||||
|     <CodesignKey>iPhone Distribution</CodesignKey> |  | ||||||
|   </PropertyGroup> |  | ||||||
|   <ItemGroup> |  | ||||||
|     <Compile Include="Main.cs" /> |  | ||||||
|     <Compile Include="AppDelegate.cs" /> |  | ||||||
|     <None Include="app.config" /> |  | ||||||
|     <None Include="Info.plist" /> |  | ||||||
|     <Compile Include="Properties\AssemblyInfo.cs" /> |  | ||||||
|     <InterfaceDefinition Include="Resources\LaunchScreen.xib" /> |  | ||||||
|     <None Include="packages.config" /> |  | ||||||
|   </ItemGroup> |  | ||||||
|   <ItemGroup> |  | ||||||
|     <Reference Include="System" /> |  | ||||||
|     <Reference Include="System.Xml" /> |  | ||||||
|     <Reference Include="System.Core" /> |  | ||||||
|     <Reference Include="Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\Xamarin.Forms.2.3.3.166-pre4\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|     <Reference Include="Xamarin.Forms.Platform, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\Xamarin.Forms.2.3.3.166-pre4\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|     <Reference Include="Xamarin.Forms.Platform.iOS, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\Xamarin.Forms.2.3.3.166-pre4\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|     <Reference Include="Xamarin.Forms.Xaml, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\Xamarin.Forms.2.3.3.166-pre4\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|     <Reference Include="Xamarin.iOS" /> |  | ||||||
|     <Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\xunit.abstractions.2.0.1\lib\netstandard1.0\xunit.abstractions.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|     <Reference Include="xunit.assert, Version=2.2.0.3444, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\xunit.assert.2.2.0-beta4-build3444\lib\netstandard1.0\xunit.assert.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|     <Reference Include="xunit.core, Version=2.2.0.3444, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\xunit.extensibility.core.2.2.0-beta4-build3444\lib\netstandard1.0\xunit.core.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|     <Reference Include="xunit.execution.dotnet, Version=2.2.0.3444, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\xunit.extensibility.execution.2.2.0-beta4-build3444\lib\netstandard1.0\xunit.execution.dotnet.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|     <Reference Include="xunit.runner.devices, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\xunit.runner.devices.2.1.0\lib\Xamarin.iOS\xunit.runner.devices.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|     <Reference Include="xunit.runner.utility.dotnet, Version=2.2.0.3444, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL"> |  | ||||||
|       <HintPath>..\..\packages\xunit.runner.utility.2.2.0-beta4-build3444\lib\netstandard1.1\xunit.runner.utility.dotnet.dll</HintPath> |  | ||||||
|       <Private>True</Private> |  | ||||||
|     </Reference> |  | ||||||
|   </ItemGroup> |  | ||||||
|   <ItemGroup> |  | ||||||
|     <Content Include="AppDelegate.cs.txt" /> |  | ||||||
|     <Content Include="Entitlements.plist" /> |  | ||||||
|   </ItemGroup> |  | ||||||
|   <ItemGroup> |  | ||||||
|     <ProjectReference Include="..\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj"> |  | ||||||
|       <Project>{f7b6a162-bc4d-4924-b16a-713f9b0344e7}</Project> |  | ||||||
|       <Name>eShopOnContainers.UnitTests</Name> |  | ||||||
|     </ProjectReference> |  | ||||||
|   </ItemGroup> |  | ||||||
|   <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" /> |  | ||||||
|   <Import Project="..\..\packages\Xamarin.Forms.2.3.3.166-pre4\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.3.166-pre4\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" /> |  | ||||||
|   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> |  | ||||||
|     <PropertyGroup> |  | ||||||
|       <ErrorText>Este proyecto hace referencia a los paquetes NuGet que faltan en este equipo. Use la restauración de paquetes NuGet para descargarlos. Para obtener más información, consulte http://go.microsoft.com/fwlink/?LinkID=322105. El archivo que falta es {0}.</ErrorText> |  | ||||||
|     </PropertyGroup> |  | ||||||
|     <Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.3.3.166-pre4\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.3.3.166-pre4\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets'))" /> |  | ||||||
|     <Error Condition="!Exists('..\..\packages\xunit.runner.devices.2.1.0\build\Xamarin.iOS\xunit.runner.devices.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\xunit.runner.devices.2.1.0\build\Xamarin.iOS\xunit.runner.devices.targets'))" /> |  | ||||||
|   </Target> |  | ||||||
|   <Import Project="..\..\packages\xunit.runner.devices.2.1.0\build\Xamarin.iOS\xunit.runner.devices.targets" Condition="Exists('..\..\packages\xunit.runner.devices.2.1.0\build\Xamarin.iOS\xunit.runner.devices.targets')" /> |  | ||||||
| </Project> |  | ||||||
| @ -16,7 +16,7 @@ | |||||||
|     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Redis" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Redis" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> |     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> | ||||||
| @ -29,7 +29,7 @@ | |||||||
|     <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Services/Basket/Basket.API | WORKDIR /src/src/Services/Basket/Basket.API | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ using System; | |||||||
| using System.Net.Http; | using System.Net.Http; | ||||||
| using System.Text; | using System.Text; | ||||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||||
| using WebMVC.ServicesModelDTOs; | using WebMVC.Services.ModelDTOs; | ||||||
| using Xunit; | using Xunit; | ||||||
| 
 | 
 | ||||||
| namespace Basket.FunctionalTests | namespace Basket.FunctionalTests | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ | |||||||
|     <PackageReference Include="AspNetCore.HealthChecks.AzureStorage" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.AzureStorage" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> |     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> | ||||||
| @ -49,7 +49,7 @@ | |||||||
|     <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Services/Catalog/Catalog.API | WORKDIR /src/src/Services/Catalog/Catalog.API | ||||||
|  | |||||||
| @ -49,7 +49,7 @@ namespace Catalog.API.Infrastructure.Filters | |||||||
| 
 | 
 | ||||||
|                 if (env.IsDevelopment()) |                 if (env.IsDevelopment()) | ||||||
|                 { |                 { | ||||||
|                     json.DeveloperMeesage = context.Exception; |                     json.DeveloperMessage = context.Exception; | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 context.Result = new InternalServerErrorObjectResult(json); |                 context.Result = new InternalServerErrorObjectResult(json); | ||||||
| @ -62,7 +62,7 @@ namespace Catalog.API.Infrastructure.Filters | |||||||
|         { |         { | ||||||
|             public string[] Messages { get; set; } |             public string[] Messages { get; set; } | ||||||
| 
 | 
 | ||||||
|             public object DeveloperMeesage { get; set; } |             public object DeveloperMessage { get; set; } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Services/Identity/Identity.API | WORKDIR /src/src/Services/Identity/Identity.API | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ | |||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> |     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> | ||||||
|     <PackageReference Include="IdentityServer4.AspNetIdentity" Version="2.1.0" /> |     <PackageReference Include="IdentityServer4.AspNetIdentity" Version="2.1.0" /> | ||||||
|     <PackageReference Include="IdentityServer4.EntityFramework" Version="2.1.1" /> |     <PackageReference Include="IdentityServer4.EntityFramework" Version="2.1.1" /> | ||||||
| @ -30,7 +30,7 @@ | |||||||
|     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="1.0.172" /> |     <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="1.0.172" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Services/Location/Locations.API | WORKDIR /src/src/Services/Location/Locations.API | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ | |||||||
|     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.MongoDb" Version="2.2.0" />    |     <PackageReference Include="AspNetCore.HealthChecks.MongoDb" Version="2.2.0" />    | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> |     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> | ||||||
| @ -25,7 +25,7 @@ | |||||||
|     <PackageReference Include="MongoDB.Driver" Version="2.5.0" /> |     <PackageReference Include="MongoDB.Driver" Version="2.5.0" /> | ||||||
|     <PackageReference Include="MongoDB.Driver.Core" Version="2.5.0" /> |     <PackageReference Include="MongoDB.Driver.Core" Version="2.5.0" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Services/Marketing/Marketing.API | WORKDIR /src/src/Services/Marketing/Marketing.API | ||||||
|  | |||||||
| @ -25,7 +25,7 @@ | |||||||
|     <PackageReference Include="AspNetCore.HealthChecks.MongoDb" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.MongoDb" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> |     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> | ||||||
| @ -41,7 +41,7 @@ | |||||||
|     <PackageReference Include="MongoDB.Driver" Version="2.5.0" /> |     <PackageReference Include="MongoDB.Driver" Version="2.5.0" /> | ||||||
|     <PackageReference Include="MongoDB.Driver.Core" Version="2.5.0" /> |     <PackageReference Include="MongoDB.Driver.Core" Version="2.5.0" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ using Microsoft.Extensions.Logging; | |||||||
| using System.Linq; | using System.Linq; | ||||||
| using System.Threading; | using System.Threading; | ||||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||||
|  | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Behaviors | namespace Ordering.API.Application.Behaviors | ||||||
| { | { | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| using MediatR; | using MediatR; | ||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure; | using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure; | ||||||
| using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||||
| using Ordering.API.Application.IntegrationEvents; | using Ordering.API.Application.IntegrationEvents; | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ using Ordering.Domain.Exceptions; | |||||||
| using System.Linq; | using System.Linq; | ||||||
| using System.Threading; | using System.Threading; | ||||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||||
|  | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Behaviors | namespace Ordering.API.Application.Behaviors | ||||||
| { | { | ||||||
|  | |||||||
| @ -1,4 +1,5 @@ | |||||||
| using MediatR; | using MediatR; | ||||||
|  | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; | using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; | ||||||
| using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||||
| using Ordering.API.Application.Behaviors; | using Ordering.API.Application.Behaviors; | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| using MediatR; | using MediatR; | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | ||||||
|  | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API; | using Microsoft.eShopOnContainers.Services.Ordering.API; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; | using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; | ||||||
| using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ | |||||||
| { | { | ||||||
|     using MediatR; |     using MediatR; | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | ||||||
|  |     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.API; |     using Microsoft.eShopOnContainers.Services.Ordering.API; | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; | ||||||
|     using Microsoft.Extensions.Logging; |     using Microsoft.Extensions.Logging; | ||||||
| @ -9,8 +10,8 @@ | |||||||
|     using Ordering.API.Application.Commands; |     using Ordering.API.Application.Commands; | ||||||
|     using Ordering.API.Application.IntegrationEvents.Events; |     using Ordering.API.Application.IntegrationEvents.Events; | ||||||
|     using Serilog.Context; |     using Serilog.Context; | ||||||
|     using System; |  | ||||||
|     using System.Threading.Tasks; |     using System.Threading.Tasks; | ||||||
|  |     using System; | ||||||
| 
 | 
 | ||||||
|     public class OrderPaymentFailedIntegrationEventHandler :  |     public class OrderPaymentFailedIntegrationEventHandler :  | ||||||
|         IIntegrationEventHandler<OrderPaymentFailedIntegrationEvent> |         IIntegrationEventHandler<OrderPaymentFailedIntegrationEvent> | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ | |||||||
| { | { | ||||||
|     using MediatR; |     using MediatR; | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | ||||||
|  |     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.API; |     using Microsoft.eShopOnContainers.Services.Ordering.API; | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; | ||||||
|     using Microsoft.Extensions.Logging; |     using Microsoft.Extensions.Logging; | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.EventHandling | namespace Ordering.API.Application.IntegrationEvents.EventHandling | ||||||
| { | { | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | ||||||
|  |     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
|     using System.Threading.Tasks; |     using System.Threading.Tasks; | ||||||
|     using Events; |     using Events; | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.EventHandling | namespace Ordering.API.Application.IntegrationEvents.EventHandling | ||||||
| { | { | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | ||||||
|  |     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
|     using System.Threading.Tasks; |     using System.Threading.Tasks; | ||||||
|     using Events; |     using Events; | ||||||
|     using System.Linq; |     using System.Linq; | ||||||
|  | |||||||
| @ -1,13 +1,14 @@ | |||||||
| using System; | using MediatR; | ||||||
| using MediatR; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | ||||||
| using System.Threading.Tasks; | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
|  | using Microsoft.eShopOnContainers.Services.Ordering.API; | ||||||
| using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||||
|  | using Ordering.API.Application.Behaviors; | ||||||
| using Ordering.API.Application.IntegrationEvents.Events; | using Ordering.API.Application.IntegrationEvents.Events; | ||||||
| using Serilog.Context; | using Serilog.Context; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API; | using System.Threading.Tasks; | ||||||
| using Ordering.API.Application.Behaviors; | using System; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents.EventHandling | namespace Ordering.API.Application.IntegrationEvents.EventHandling | ||||||
| { | { | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| using MediatR; | using MediatR; | ||||||
| using Microsoft.AspNetCore.Authorization; | using Microsoft.AspNetCore.Authorization; | ||||||
| using Microsoft.AspNetCore.Mvc; | using Microsoft.AspNetCore.Mvc; | ||||||
|  | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; | using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; | using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Services/Ordering/Ordering.API | WORKDIR /src/src/Services/Ordering/Ordering.API | ||||||
|  | |||||||
| @ -31,7 +31,7 @@ | |||||||
|     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> |     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> | ||||||
|     <PackageReference Include="Dapper" Version="1.50.7" /> |     <PackageReference Include="Dapper" Version="1.50.7" /> | ||||||
|     <PackageReference Include="FluentValidation.AspNetCore" Version="7.5.0" /> |     <PackageReference Include="FluentValidation.AspNetCore" Version="7.5.0" /> | ||||||
| @ -48,7 +48,7 @@ | |||||||
|     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Polly" Version="6.0.1" /> |     <PackageReference Include="Polly" Version="6.0.1" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Services/Ordering/Ordering.BackgroundTasks | WORKDIR /src/src/Services/Ordering/Ordering.BackgroundTasks | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> |     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> | ||||||
| @ -24,7 +24,7 @@ | |||||||
|     <PackageReference Include="Microsoft.AspNetCore.HealthChecks" Version="1.0.0" /> |     <PackageReference Include="Microsoft.AspNetCore.HealthChecks" Version="1.0.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -32,8 +32,8 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.B | |||||||
|             int cardTypeId, string alias, string cardNumber,  |             int cardTypeId, string alias, string cardNumber,  | ||||||
|             string securityNumber, string cardHolderName, DateTime expiration, int orderId) |             string securityNumber, string cardHolderName, DateTime expiration, int orderId) | ||||||
|         { |         { | ||||||
|             var existingPayment = _paymentMethods.Where(p => p.IsEqualTo(cardTypeId, cardNumber, expiration)) |             var existingPayment = _paymentMethods | ||||||
|                 .SingleOrDefault(); |                 .SingleOrDefault(p => p.IsEqualTo(cardTypeId, cardNumber, expiration)); | ||||||
| 
 | 
 | ||||||
|             if (existingPayment != null) |             if (existingPayment != null) | ||||||
|             { |             { | ||||||
| @ -41,16 +41,14 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.B | |||||||
| 
 | 
 | ||||||
|                 return existingPayment; |                 return existingPayment; | ||||||
|             } |             } | ||||||
|             else |  | ||||||
|             { |  | ||||||
|                 var payment = new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration); |  | ||||||
| 
 | 
 | ||||||
|                 _paymentMethods.Add(payment); |             var payment = new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration); | ||||||
| 
 | 
 | ||||||
|                 AddDomainEvent(new BuyerAndPaymentMethodVerifiedDomainEvent(this, payment, orderId)); |             _paymentMethods.Add(payment); | ||||||
| 
 | 
 | ||||||
|                 return payment; |             AddDomainEvent(new BuyerAndPaymentMethodVerifiedDomainEvent(this, payment, orderId)); | ||||||
|             } | 
 | ||||||
|  |             return payment; | ||||||
|         }        |         }        | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ using System.Net; | |||||||
| using System.Net.Http; | using System.Net.Http; | ||||||
| using System.Text; | using System.Text; | ||||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||||
| using WebMVC.ServicesModelDTOs; | using WebMVC.Services.ModelDTOs; | ||||||
| using Xunit; | using Xunit; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.FunctionalTests | namespace Ordering.FunctionalTests | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Services/Ordering/Ordering.SignalrHub | WORKDIR /src/src/Services/Ordering/Ordering.SignalrHub | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ namespace Ordering.SignalrHub | |||||||
| 
 | 
 | ||||||
|         public override async Task OnDisconnectedAsync(Exception ex) |         public override async Task OnDisconnectedAsync(Exception ex) | ||||||
|         { |         { | ||||||
|             await Groups.AddToGroupAsync(Context.ConnectionId, Context.User.Identity.Name); |             await Groups.RemoveFromGroupAsync(Context.ConnectionId, Context.User.Identity.Name); | ||||||
|             await base.OnDisconnectedAsync(ex); |             await base.OnDisconnectedAsync(ex); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -12,7 +12,7 @@ | |||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> |     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> | ||||||
| @ -26,7 +26,7 @@ | |||||||
|     <PackageReference Include="Microsoft.AspNetCore.SignalR.Redis" Version="1.1.0" /> |     <PackageReference Include="Microsoft.AspNetCore.SignalR.Redis" Version="1.1.0" /> | ||||||
|     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Services/Payment/Payment.API | WORKDIR /src/src/Services/Payment/Payment.API | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ | |||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> |     <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> | ||||||
| @ -20,7 +20,7 @@ | |||||||
|     <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY ["src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj", "src/Services/Webhooks/Webhooks.API/"] | COPY ["src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj", "src/Services/Webhooks/Webhooks.API/"] | ||||||
| RUN dotnet restore "src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj" | RUN dotnet restore "src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj" | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ | |||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.2.2" /> |     <PackageReference Include="Microsoft.ApplicationInsights.ServiceFabric" Version="2.2.2" /> | ||||||
|     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.HealthChecks" Version="1.0.0" /> |     <PackageReference Include="Microsoft.AspNetCore.HealthChecks" Version="1.0.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="3.0.0" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="3.0.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="2.2.0" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Web/WebMVC | WORKDIR /src/src/Web/WebMVC | ||||||
|  | |||||||
| @ -17,7 +17,10 @@ namespace WebMVC.Infrastructure | |||||||
|         { |         { | ||||||
|             if (request.Method == HttpMethod.Post || request.Method == HttpMethod.Put) |             if (request.Method == HttpMethod.Post || request.Method == HttpMethod.Put) | ||||||
|             { |             { | ||||||
|                 request.Headers.Add("x-requestid", Guid.NewGuid().ToString()); |                 if (!request.Headers.Contains("x-requestid")) | ||||||
|  |                 { | ||||||
|  |                     request.Headers.Add("x-requestid", Guid.NewGuid().ToString()); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|              |              | ||||||
|             return await base.SendAsync(request, cancellationToken); |             return await base.SendAsync(request, cancellationToken); | ||||||
|  | |||||||
| @ -20,8 +20,8 @@ | |||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.0" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.2" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="BuildBundlerMinifier" Version="2.6.375" /> |     <PackageReference Include="BuildBundlerMinifier" Version="2.6.375" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> | ||||||
| @ -37,7 +37,7 @@ | |||||||
|     <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="1.0.172" /> |     <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="1.0.172" /> | ||||||
|     <PackageReference Include="Microsoft.Build.Utilities.Core" Version="15.9.20" /> |     <PackageReference Include="Microsoft.Build.Utilities.Core" Version="15.9.20" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "provider": "unpkg", |       "provider": "unpkg", | ||||||
|       "library": "bootstrap@4.1.3", |       "library": "bootstrap@4.3.1", | ||||||
|       "files": [ |       "files": [ | ||||||
|         "dist/css/bootstrap.css", |         "dist/css/bootstrap.css", | ||||||
|         "dist/css/bootstrap.css.map", |         "dist/css/bootstrap.css.map", | ||||||
| @ -20,11 +20,11 @@ | |||||||
|       "destination": "wwwroot/lib/bootstrap/" |       "destination": "wwwroot/lib/bootstrap/" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "library": "jquery-validation-unobtrusive@3.2.10", |       "library": "jquery-validation-unobtrusive@3.2.11", | ||||||
|       "destination": "wwwroot/lib/jquery-validation-unobtrusive/" |       "destination": "wwwroot/lib/jquery-validation-unobtrusive/" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "library": "jquery-validate@1.17.0", |       "library": "jquery-validate@1.19.0", | ||||||
|       "destination": "wwwroot/lib/jquery-validate/", |       "destination": "wwwroot/lib/jquery-validate/", | ||||||
|       "files": [ |       "files": [ | ||||||
|         "jquery.validate.min.js", |         "jquery.validate.min.js", | ||||||
| @ -37,7 +37,7 @@ | |||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "provider": "unpkg", |       "provider": "unpkg", | ||||||
|       "library": "@aspnet/signalr@1.0.3", |       "library": "@aspnet/signalr@1.1.2", | ||||||
|       "files": [     |       "files": [     | ||||||
|         "dist/browser/signalr.js", |         "dist/browser/signalr.js", | ||||||
|         "dist/browser/signalr.min.js" |         "dist/browser/signalr.min.js" | ||||||
|  | |||||||
| @ -62,14 +62,14 @@ export class BasketService { | |||||||
|     setBasket(basket): Observable<boolean> { |     setBasket(basket): Observable<boolean> { | ||||||
|         let url = this.purchaseUrl + '/api/v1/basket/'; |         let url = this.purchaseUrl + '/api/v1/basket/'; | ||||||
|         this.basket = basket; |         this.basket = basket; | ||||||
|         return this.service.post(url, basket).pipe(map((response: Response) => { |         return this.service.post(url, basket).pipe(map((response: any) => { | ||||||
|             return true; |             return true; | ||||||
|         })); |         })); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     setBasketCheckout(basketCheckout): Observable<boolean> { |     setBasketCheckout(basketCheckout): Observable<boolean> { | ||||||
|         let url = this.basketUrl + '/api/v1/b/basket/checkout'; |         let url = this.basketUrl + '/api/v1/b/basket/checkout'; | ||||||
|         return this.service.postWithId(url, basketCheckout).pipe(map((response: Response) => { |         return this.service.postWithId(url, basketCheckout).pipe(map((response: any) => { | ||||||
|             this.basketEvents.orderCreated(); |             this.basketEvents.orderCreated(); | ||||||
|             return true; |             return true; | ||||||
|         })); |         })); | ||||||
| @ -77,7 +77,7 @@ export class BasketService { | |||||||
| 
 | 
 | ||||||
|     getBasket(): Observable<IBasket> { |     getBasket(): Observable<IBasket> { | ||||||
|         let url = this.basketUrl + '/api/v1/b/basket/' + this.basket.buyerId; |         let url = this.basketUrl + '/api/v1/b/basket/' + this.basket.buyerId; | ||||||
|         return this.service.get(url).pipe(map((response: Response) => { |         return this.service.get(url).pipe(map((response: any) => { | ||||||
|             if (response.status === 204) { |             if (response.status === 204) { | ||||||
|                 return null; |                 return null; | ||||||
|             } |             } | ||||||
|  | |||||||
| @ -32,7 +32,7 @@ export class CampaignsService { | |||||||
|         let url = this.marketingUrl + '/api/v1/m/campaigns/user'; |         let url = this.marketingUrl + '/api/v1/m/campaigns/user'; | ||||||
|         url = url + '?pageIndex=' + pageIndex + '&pageSize=' + pageSize; |         url = url + '?pageIndex=' + pageIndex + '&pageSize=' + pageSize; | ||||||
| 
 | 
 | ||||||
|         return this.service.get(url).pipe(map((response: Response) => { |         return this.service.get(url).pipe(map((response: any) => { | ||||||
|             return response; |             return response; | ||||||
|         })); |         })); | ||||||
|     } |     } | ||||||
| @ -40,7 +40,7 @@ export class CampaignsService { | |||||||
|     getCampaign(id: number): Observable<ICampaignItem> { |     getCampaign(id: number): Observable<ICampaignItem> { | ||||||
|         let url = this.marketingUrl + '/api/v1/m/campaigns/' + id; |         let url = this.marketingUrl + '/api/v1/m/campaigns/' + id; | ||||||
| 
 | 
 | ||||||
|         return this.service.get(url).pipe(map((response: Response) => { |         return this.service.get(url).pipe(map((response: any) => { | ||||||
|             return response; |             return response; | ||||||
|         })); |         })); | ||||||
|     }     |     }     | ||||||
|  | |||||||
| @ -40,7 +40,7 @@ | |||||||
|                     <span>{{item.name}}</span> |                     <span>{{item.name}}</span> | ||||||
|                 </div> |                 </div> | ||||||
|                 <div class="esh-catalog-price"> |                 <div class="esh-catalog-price"> | ||||||
|                     <span>{{item.price | number:'.2-2'}}</span> |                     <span>{{item.price | number:'3.2-2'}}</span> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|  | |||||||
| @ -1,13 +1,13 @@ | |||||||
| import { NgModule }             from '@angular/core'; | import { NgModule }             from '@angular/core'; | ||||||
| import { BrowserModule  }       from '@angular/platform-browser'; | import { BrowserModule  }       from '@angular/platform-browser'; | ||||||
| 
 | import { CommonModule }         from '@angular/common' | ||||||
| import { SharedModule }         from '../shared/shared.module'; | import { SharedModule }         from '../shared/shared.module'; | ||||||
| import { CatalogComponent }     from './catalog.component'; | import { CatalogComponent }     from './catalog.component'; | ||||||
| import { CatalogService }       from './catalog.service'; | import { CatalogService }       from './catalog.service'; | ||||||
| import { Pager }                from '../shared/components/pager/pager'; | import { Pager }                from '../shared/components/pager/pager'; | ||||||
| 
 | 
 | ||||||
| @NgModule({ | @NgModule({ | ||||||
|     imports: [BrowserModule, SharedModule], |     imports: [BrowserModule, SharedModule, CommonModule], | ||||||
|     declarations: [CatalogComponent], |     declarations: [CatalogComponent], | ||||||
|     providers: [CatalogService] |     providers: [CatalogService] | ||||||
| }) | }) | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ export class CatalogService { | |||||||
| 
 | 
 | ||||||
|         return this.service.get(url) |         return this.service.get(url) | ||||||
|             .pipe( |             .pipe( | ||||||
|                 map((response: Response) => { |                 map((response: any) => { | ||||||
|                     return response; |                     return response; | ||||||
|                 }) |                 }) | ||||||
|             ); |             ); | ||||||
| @ -47,7 +47,7 @@ export class CatalogService { | |||||||
|     getBrands(): Observable<ICatalogBrand[]> { |     getBrands(): Observable<ICatalogBrand[]> { | ||||||
|         return this.service.get(this.brandUrl) |         return this.service.get(this.brandUrl) | ||||||
|             .pipe( |             .pipe( | ||||||
|                 map((response: Response) => { |                 map((response: any) => { | ||||||
|                     return response; |                     return response; | ||||||
|                 }) |                 }) | ||||||
|             ); |             ); | ||||||
| @ -56,7 +56,7 @@ export class CatalogService { | |||||||
|     getTypes(): Observable<ICatalogType[]> { |     getTypes(): Observable<ICatalogType[]> { | ||||||
|         return this.service.get(this.typesUrl) |         return this.service.get(this.typesUrl) | ||||||
|             .pipe( |             .pipe( | ||||||
|                 map((response: Response) => { |                 map((response: any) => { | ||||||
|                     return response; |                     return response; | ||||||
|                 }) |                 }) | ||||||
|             ); |             ); | ||||||
|  | |||||||
| @ -27,7 +27,7 @@ export class OrdersService { | |||||||
|     getOrders(): Observable<IOrder[]> { |     getOrders(): Observable<IOrder[]> { | ||||||
|         let url = this.ordersUrl + '/api/v1/o/orders'; |         let url = this.ordersUrl + '/api/v1/o/orders'; | ||||||
| 
 | 
 | ||||||
|         return this.service.get(url).pipe(map((response: Response) => { |         return this.service.get(url).pipe(map((response: any) => { | ||||||
|             return response; |             return response; | ||||||
|         })); |         })); | ||||||
|     } |     } | ||||||
| @ -35,7 +35,7 @@ export class OrdersService { | |||||||
|     getOrder(id: number): Observable<IOrderDetail> { |     getOrder(id: number): Observable<IOrderDetail> { | ||||||
|         let url = this.ordersUrl + '/api/v1/o/orders/' + id; |         let url = this.ordersUrl + '/api/v1/o/orders/' + id; | ||||||
| 
 | 
 | ||||||
|         return this.service.get(url).pipe(map((response: Response) => { |         return this.service.get(url).pipe(map((response: any) => { | ||||||
|             return response; |             return response; | ||||||
|         })); |         })); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1,9 +1,9 @@ | |||||||
| ARG NODE_IMAGE=node:8.11 | ARG NODE_IMAGE=node:8.11 | ||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS dotnet-build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS dotnet-build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| 
 | 
 | ||||||
| FROM ${NODE_IMAGE} as node-build | FROM ${NODE_IMAGE} as node-build | ||||||
|  | |||||||
| @ -85,8 +85,8 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.2" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.2" /> |     <PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.2" /> | ||||||
|  | |||||||
| @ -3,6 +3,9 @@ | |||||||
|   "MarketingUrl": "http://localhost:5110", |   "MarketingUrl": "http://localhost:5110", | ||||||
|   "CallBackUrl": "http://localhost:5104/", |   "CallBackUrl": "http://localhost:5104/", | ||||||
|   "PurchaseUrl": "http://localhost:5200", |   "PurchaseUrl": "http://localhost:5200", | ||||||
|  |   "PurchaseUrlHC": "http://localhost:5202/hc", | ||||||
|  |   "MarketingUrlHC": "http://localhost:5203/hc", | ||||||
|  |   "IdentityUrlHC": "http://localhost:5105/hc", | ||||||
|   "UseCustomizationData": true, |   "UseCustomizationData": true, | ||||||
|   "IsClusterEnv": "False", |   "IsClusterEnv": "False", | ||||||
|   "ActivateCampaignDetailFunction": false, |   "ActivateCampaignDetailFunction": false, | ||||||
|  | |||||||
							
								
								
									
										7238
									
								
								src/Web/WebSPA/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7238
									
								
								src/Web/WebSPA/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -27,19 +27,20 @@ | |||||||
|     "lint:ts": "tslint -c tslint.json Client/**/*.ts" |     "lint:ts": "tslint -c tslint.json Client/**/*.ts" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@angular/animations": "^6.1.4", |     "@angular/animations": "^7.2.10", | ||||||
|     "@angular/common": "6.1.4", |     "@angular/common": "^7.2.10", | ||||||
|     "@angular/compiler": "6.1.4", |     "@angular/compiler": "^7.2.10", | ||||||
|     "@angular/core": "6.1.4", |     "@angular/core": "^7.2.10", | ||||||
|     "@angular/forms": "6.1.4", |     "@angular/forms": "^7.2.10", | ||||||
|     "@angular/http": "6.1.4", |     "@angular/http": "^7.2.10", | ||||||
|     "@angular/platform-browser": "6.1.4", |     "@angular/platform-browser": "^7.2.10", | ||||||
|     "@angular/platform-browser-dynamic": "6.1.4", |     "@angular/platform-browser-dynamic": "^7.2.10", | ||||||
|     "@angular/router": "6.1.4", |     "@angular/platform-server": "^7.2.10", | ||||||
|  |     "@angular/router": "^7.2.10", | ||||||
|     "@aspnet/signalr": "1.0.3", |     "@aspnet/signalr": "1.0.3", | ||||||
|     "@ng-bootstrap/ng-bootstrap": "3.1.0", |     "@ng-bootstrap/ng-bootstrap": "3.3.0", | ||||||
|     "bootstrap": "4.1.3", |     "bootstrap": "4.3.1", | ||||||
|     "core-js": "^2.5.7", |     "core-js": "^2.5.0", | ||||||
|     "file-loader": "2.0.0", |     "file-loader": "2.0.0", | ||||||
|     "font-awesome": "4.7.0", |     "font-awesome": "4.7.0", | ||||||
|     "isomorphic-fetch": "2.2.1", |     "isomorphic-fetch": "2.2.1", | ||||||
| @ -48,28 +49,43 @@ | |||||||
|     "normalize.css": "8.0.0", |     "normalize.css": "8.0.0", | ||||||
|     "popper.js": "^1.14.4", |     "popper.js": "^1.14.4", | ||||||
|     "preboot": "6.0.0-beta.5", |     "preboot": "6.0.0-beta.5", | ||||||
|     "rxjs": "6.2.2", |     "rxjs": "~6.3.3", | ||||||
|     "webpack": "^4.17.1", |     "rxjs-compat": "~6.3.3", | ||||||
|     "zone.js": "^0.8.26" |     "webpack-dev-server": "3.1.14", | ||||||
|  |     "zone.js": "^0.8.29" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@angular-devkit/build-angular": "~0.7.0", |     "@angular-devkit/build-angular": "^0.13.6", | ||||||
|     "@angular/cli": "^6.1.5", |     "@angular/cli": "^7.3.6", | ||||||
|     "@angular/compiler-cli": "6.1.4", |     "@angular/compiler-cli": "^7.2.10", | ||||||
|  |     "@angular/language-service": "^7.2.10", | ||||||
|     "@types/core-js": "2.5.0", |     "@types/core-js": "2.5.0", | ||||||
|     "@types/hammerjs": "2.0.35", |     "@types/hammerjs": "2.0.35", | ||||||
|     "@types/jasmine": "2.8.8", |     "@types/jasmine": "^3.3.12", | ||||||
|     "@types/node": "~10.9.2", |     "@types/node": "^11.11.4", | ||||||
|     "@types/protractor": "4.0.0", |     "@types/protractor": "4.0.0", | ||||||
|     "@types/selenium-webdriver": "3.0.10", |     "@types/selenium-webdriver": "3.0.10", | ||||||
|     "codelyzer": "~4.4.4", |     "codelyzer": "^5.0.0-beta.1", | ||||||
|  |     "handlebars": "~4.0.13", | ||||||
|  |     "jasmine-core": "^3.3.0", | ||||||
|  |     "jasmine-spec-reporter": "^4.2.1", | ||||||
|  |     "karma": "^4.0.1", | ||||||
|  |     "karma-chrome-launcher": "^2.2.0", | ||||||
|  |     "karma-cli": "^2.0.0", | ||||||
|  |     "karma-jasmine": "^2.0.1", | ||||||
|  |     "karma-jasmine-html-reporter": "^1.4.0", | ||||||
|  |     "lodash": "4.17.11", | ||||||
|  |     "merge": "1.2.1", | ||||||
|  |     "npm-watch": "0.5.0", | ||||||
|  |     "protractor": "^5.4.2", | ||||||
|  |     "rxjs-tslint": "^0.1.7", | ||||||
|     "sass-lint": "1.12.1", |     "sass-lint": "1.12.1", | ||||||
|     "ts-helpers": "1.1.2", |     "ts-helpers": "1.1.2", | ||||||
|     "ts-node": "~7.0.1", |     "ts-node": "~7.0.1", | ||||||
|     "tslint": "~5.11.0", |     "tslint": "^5.14.0", | ||||||
|     "typedoc": "0.12.0", |     "typedoc": "0.12.0", | ||||||
|     "typescript": "2.9.2", |     "typescript": "^3.2.4", | ||||||
|     "url-loader": "1.1.1", |     "url-loader": "1.1.1", | ||||||
|     "npm-watch": "0.5.0" |     "webpack": "^4.29.6" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -17,5 +17,8 @@ | |||||||
|       "dom" |       "dom" | ||||||
|     ], |     ], | ||||||
|     "module": "es2015" |     "module": "es2015" | ||||||
|   } |   }, | ||||||
|  |   "angularCompilerOptions": { | ||||||
|  |     "enableIvy": false | ||||||
|  |   }  | ||||||
| } | } | ||||||
| @ -1,14 +1,14 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <configuration> | <configuration> | ||||||
| 
 |  | ||||||
|   <!-- |   <!-- | ||||||
|     Configure your application settings in appsettings.json. Learn more at https://go.microsoft.com/fwlink/?LinkId=786380 |     Configure your application settings in appsettings.json. Learn more at https://go.microsoft.com/fwlink/?LinkId=786380 | ||||||
|   --> |   --> | ||||||
| 
 |  | ||||||
|   <system.webServer> |   <system.webServer> | ||||||
|     <handlers> |     <handlers> | ||||||
|       <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/> |       <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> | ||||||
|     </handlers> |     </handlers> | ||||||
|     <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/> |     <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"> | ||||||
|  |       <environmentVariables /> | ||||||
|  |     </aspNetCore> | ||||||
|   </system.webServer> |   </system.webServer> | ||||||
| </configuration> | </configuration> | ||||||
| @ -1,8 +1,8 @@ | |||||||
| FROM microsoft/dotnet:2.2.0-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2.100-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY . . | COPY . . | ||||||
| WORKDIR /src/src/Web/WebStatus | WORKDIR /src/src/Web/WebStatus | ||||||
|  | |||||||
| @ -1,10 +1,12 @@ | |||||||
| using Microsoft.AspNetCore; | using Microsoft.AspNetCore; | ||||||
| using Microsoft.AspNetCore.Hosting; | using Microsoft.AspNetCore.Hosting; | ||||||
| using Microsoft.Extensions.Configuration; | using Microsoft.Extensions.Configuration; | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Serilog; | using Serilog; | ||||||
| using System; | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
| using System.IO; | using System.IO; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Reflection; | ||||||
| 
 | 
 | ||||||
| namespace WebStatus | namespace WebStatus | ||||||
| { | { | ||||||
| @ -24,6 +26,8 @@ namespace WebStatus | |||||||
|                 Log.Information("Configuring web host ({ApplicationContext})...", AppName); |                 Log.Information("Configuring web host ({ApplicationContext})...", AppName); | ||||||
|                 var host = BuildWebHost(configuration, args); |                 var host = BuildWebHost(configuration, args); | ||||||
| 
 | 
 | ||||||
|  |                 LogPackagesVersionInfo(); | ||||||
|  | 
 | ||||||
|                 Log.Information("Starting web host ({ApplicationContext})...", AppName); |                 Log.Information("Starting web host ({ApplicationContext})...", AppName); | ||||||
|                 host.Run(); |                 host.Run(); | ||||||
| 
 | 
 | ||||||
| @ -83,5 +87,39 @@ namespace WebStatus | |||||||
| 
 | 
 | ||||||
|             return builder.Build(); |             return builder.Build(); | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         private static string GetVersion(Assembly assembly) | ||||||
|  |         { | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 return $"{assembly.GetCustomAttribute<AssemblyFileVersionAttribute>()?.Version} ({assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion.Split()[0]})"; | ||||||
|  |             } | ||||||
|  |             catch | ||||||
|  |             { | ||||||
|  |                 return string.Empty; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         private static void LogPackagesVersionInfo() | ||||||
|  |         { | ||||||
|  |             var assemblies = new List<Assembly>(); | ||||||
|  | 
 | ||||||
|  |             foreach (var dependencyName in typeof(Program).Assembly.GetReferencedAssemblies()) | ||||||
|  |             { | ||||||
|  |                 try | ||||||
|  |                 { | ||||||
|  |                     // Try to load the referenced assembly... | ||||||
|  |                     assemblies.Add(Assembly.Load(dependencyName)); | ||||||
|  |                 } | ||||||
|  |                 catch | ||||||
|  |                 { | ||||||
|  |                     // Failed to load assembly. Skip it. | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             var versionList = assemblies.Select(a => $"-{a.GetName().Name} - {GetVersion(a)}").OrderBy(value => value); | ||||||
|  | 
 | ||||||
|  |             Log.Logger.ForContext("PackageVersions", string.Join("\n", versionList)).Information("Package versions ({ApplicationContext})", AppName); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -11,9 +11,9 @@ | |||||||
|     <None Remove="Views\**" /> |     <None Remove="Views\**" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI" Version="2.2.8" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI" Version="2.2.22" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.2" /> |     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||||
|     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.0" /> |     <PackageReference Include="AspNetCore.HealthChecks.Uris" Version="2.2.2" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.2.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> |     <PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.6.1" /> | ||||||
|     <PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.2" /> |     <PackageReference Include="Microsoft.ApplicationInsights.Kubernetes" Version="1.0.2" /> | ||||||
| @ -24,10 +24,18 @@ | |||||||
|     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="1.0.172" /> |     <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="1.0.172" /> | ||||||
|     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |     <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" /> |     <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" /> | ||||||
|     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> |     <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> |     <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" /> | ||||||
|     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> |     <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <Content Update="appsettings.Development.json"> | ||||||
|  |       <CopyToOutputDirectory>Always</CopyToOutputDirectory> | ||||||
|  |     </Content> | ||||||
|  |     <Content Update="appsettings.json"> | ||||||
|  |       <CopyToOutputDirectory>Always</CopyToOutputDirectory> | ||||||
|  |     </Content> | ||||||
|  |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
| </Project> | </Project> | ||||||
|  | |||||||
| @ -1,10 +1,87 @@ | |||||||
| { | { | ||||||
|   "Logging": { |   "HealthChecks-UI": { | ||||||
|     "IncludeScopes": false, |     "HealthChecks": [ | ||||||
|     "LogLevel": { |       { | ||||||
|       "Default": "Debug", |         "Name": "Ordering HTTP Check", | ||||||
|       "System": "Information", |         "Uri": "http://localhost:5102/hc" | ||||||
|       "Microsoft": "Information" |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Ordering HTTP Background Check", | ||||||
|  |         "Uri": "http://localhost:5111/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Basket HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5103/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Catalog HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5101/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Identity HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5105/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Marketing HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5110/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Locations HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5109/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Payments HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5108/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "WebMVC HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5100/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "WebSPA HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5104/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "SignalR HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5112/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Mobile Shopping API GW HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5200/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Mobile Marketing API GW HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5201/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Web Shopping API GW HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5202/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Web Marketing API GW HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5203/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Mobile Shopping Aggregator HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5120/hc" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "Name": "Web Shopping Aggregator HTTP Check", | ||||||
|  |         "Uri": "http://localhost:5121/hc" | ||||||
|  |       } | ||||||
|  |     ], | ||||||
|  |     "EvaluationTimeOnSeconds": 10, | ||||||
|  |     "MinimumSecondsBetweenFailureNotifications": 60 | ||||||
|  |   }, | ||||||
|  |   "Serilog": { | ||||||
|  |     "SeqServerUrl": "http://localhost:5341/", | ||||||
|  |     "MinimumLevel": { | ||||||
|  |       "Default": "Information", | ||||||
|  |       "Override": { | ||||||
|  |         "Microsoft": "Warning", | ||||||
|  |         "Microsoft.eShopOnContainers": "Information", | ||||||
|  |         "System": "Warning" | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,75 +1,8 @@ | |||||||
| { | { | ||||||
|   "HealthChecks-UI": { |   "HealthChecks-UI": { | ||||||
|     "HealthChecks": [ |     "EvaluationTimeOnSeconds": 10, | ||||||
|       { |     "MinimumSecondsBetweenFailureNotifications": 60 | ||||||
|         "Name": "Ordering HTTP Check", |   }, | ||||||
|         "Uri": "http://localhost:5102/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Ordering HTTP Background Check", |  | ||||||
|         "Uri": "http://localhost:5111/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Basket HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5103/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Catalog HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5101/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Identity HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5105/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Marketing HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5110/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Locations HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5109/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Payments HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5108/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "WebMVC HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5100/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "WebSPA HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5104/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "SignalR HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5112/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Mobile Shopping API GW HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5200/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Mobile Marketing API GW HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5201/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Web Shopping API GW HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5202/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Web Marketing API GW HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5203/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Mobile Shopping Aggregator HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5120/hc" |  | ||||||
|       }, |  | ||||||
|       { |  | ||||||
|         "Name": "Web Shopping Aggregator HTTP Check", |  | ||||||
|         "Uri": "http://localhost:5121/hc" |  | ||||||
|       } |  | ||||||
|     ], |  | ||||||
|   "Serilog": { |   "Serilog": { | ||||||
|     "SeqServerUrl": null, |     "SeqServerUrl": null, | ||||||
|     "MinimumLevel": { |     "MinimumLevel": { | ||||||
| @ -80,15 +13,5 @@ | |||||||
|         "System": "Warning" |         "System": "Warning" | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     "Webhooks": [ |  | ||||||
|       { |  | ||||||
|         "Name": "", |  | ||||||
|         "Uri": "", |  | ||||||
|         "Payload": "", |  | ||||||
|         "RestoredPayload": "" |  | ||||||
|       } |  | ||||||
|     ], |  | ||||||
|     "EvaluationTimeOnSeconds": 10, |  | ||||||
|     "MinimumSecondsBetweenFailureNotifications": 60 |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,9 +1,9 @@ | |||||||
| FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 80 | EXPOSE 80 | ||||||
| EXPOSE 443 | EXPOSE 443 | ||||||
| 
 | 
 | ||||||
| FROM microsoft/dotnet:2.2-sdk AS build | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||||
| WORKDIR /src | WORKDIR /src | ||||||
| COPY ["src/Web/WebhookClient/WebhookClient.csproj", "src/Web/WebhookClient/"] | COPY ["src/Web/WebhookClient/WebhookClient.csproj", "src/Web/WebhookClient/"] | ||||||
| RUN dotnet restore "src/Web/WebhookClient/WebhookClient.csproj" | RUN dotnet restore "src/Web/WebhookClient/WebhookClient.csproj" | ||||||
|  | |||||||
| @ -4,9 +4,17 @@ | |||||||
|     ViewData["Title"] = "Home page"; |     ViewData["Title"] = "Home page"; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | <section class="esh-catalog-hero"> | ||||||
|  | </section> | ||||||
|  | 
 | ||||||
| <div class="text-center"> | <div class="text-center"> | ||||||
|     <h1 class="display-4">Welcome</h1> |     <p> </p> | ||||||
|     <p>eShopOnContainers - Webhook client</p> |     <img class="esh-app-footer-brand" src="~/images/brand.png" /> | ||||||
|  |     <h2>eShopOnContainers - Order Management</h2> | ||||||
|  |     <p> | ||||||
|  |         This is a <bold>sample</bold> web client that uses the Webhooks API to show you all orders that reached the "paid" status. This is accomplished by creating a Webhook | ||||||
|  |         that will be called by eShopOnContainers core when the order reached this "paid" status. If not created you can create this webhook going to <a asp-page="RegisterWebhook">webhook registration</a>. | ||||||
|  |     </p> | ||||||
|     @if (!User.Identity.IsAuthenticated) |     @if (!User.Identity.IsAuthenticated) | ||||||
|     { |     { | ||||||
|         <a class="btn-primary btn" href="@Url.Action("SignIn", "Account")">Login</a> |         <a class="btn-primary btn" href="@Url.Action("SignIn", "Account")">Login</a> | ||||||
| @ -15,8 +23,8 @@ | |||||||
| </div> | </div> | ||||||
| 
 | 
 | ||||||
| <div class="table"> | <div class="table"> | ||||||
|     <h3>Current webhooks received</h3> |     <h3>Current webhooks received (orders paid)</h3> | ||||||
|     <p>(Data since last time web started up)<p> |     <p>(Data since last time web started up). <strong>Note: </strong>Must manually refresh this page.<p> | ||||||
|     <table class="table"> |     <table class="table"> | ||||||
|         @foreach (var webhook in Model.WebHooksReceived) |         @foreach (var webhook in Model.WebHooksReceived) | ||||||
|         { |         { | ||||||
|  | |||||||
| @ -4,9 +4,9 @@ | |||||||
|     ViewData["Title"] = "RegisterWebhook"; |     ViewData["Title"] = "RegisterWebhook"; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| <h3>Register webhook</h3> | <h3>Register a new webhook</h3> | ||||||
| 
 | 
 | ||||||
| <p>This page registers the "OrderPaid" Webhook by sending a POST to webhooks.</p> | <p>This page registers the "OrderPaid" Webhook by sending a POST to the WebHooks API. Once the Webhook is set, you will be able to see new paid orders from the <a asp-page="Index">Index</a> page.</p> | ||||||
| 
 | 
 | ||||||
| <form method="post"> | <form method="post"> | ||||||
|     <p>Token: <input type="text" asp-for="Token" /></p> |     <p>Token: <input type="text" asp-for="Token" /></p> | ||||||
| @ -15,5 +15,6 @@ | |||||||
| 
 | 
 | ||||||
| @if (Model.ResponseCode != (int)System.Net.HttpStatusCode.OK) | @if (Model.ResponseCode != (int)System.Net.HttpStatusCode.OK) | ||||||
| { | { | ||||||
|     <p>Error @Model.ResponseCode (@Model.ResponseMessage) when calling the Webhooks API (@Model.RequestUrl) with GrantUrl: @Model.GrantUrl):(</p> |     <p>Error @Model.ResponseCode (@Model.ResponseMessage) when calling the Webhooks API (@Model.RequestUrl) with GrantUrl: @Model.GrantUrl)</p> | ||||||
|  |     <p>Data sent to the webhooks API was <raw>@Model.RequestBodyJson</raw></p> | ||||||
| } | } | ||||||
| @ -10,6 +10,7 @@ using Microsoft.AspNetCore.Hosting; | |||||||
| using Microsoft.AspNetCore.Mvc; | using Microsoft.AspNetCore.Mvc; | ||||||
| using Microsoft.AspNetCore.Mvc.RazorPages; | using Microsoft.AspNetCore.Mvc.RazorPages; | ||||||
| using Microsoft.Extensions.Options; | using Microsoft.Extensions.Options; | ||||||
|  | using Newtonsoft.Json; | ||||||
| using WebhookClient.Models; | using WebhookClient.Models; | ||||||
| 
 | 
 | ||||||
| namespace WebhookClient.Pages | namespace WebhookClient.Pages | ||||||
| @ -27,7 +28,7 @@ namespace WebhookClient.Pages | |||||||
|         public string RequestUrl { get; set; } |         public string RequestUrl { get; set; } | ||||||
|         public string GrantUrl { get; set; } |         public string GrantUrl { get; set; } | ||||||
|         public string ResponseMessage { get; set; } |         public string ResponseMessage { get; set; } | ||||||
| 
 |         public string RequestBodyJson { get; set; } | ||||||
| 
 | 
 | ||||||
|         public RegisterWebhookModel(IOptions<Settings> settings, IHttpClientFactory httpClientFactory) |         public RegisterWebhookModel(IOptions<Settings> settings, IHttpClientFactory httpClientFactory) | ||||||
|         { |         { | ||||||
| @ -69,6 +70,7 @@ namespace WebhookClient.Pages | |||||||
|             } |             } | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|  |                 RequestBodyJson = JsonConvert.SerializeObject(payload); | ||||||
|                 ResponseCode = (int)response.StatusCode; |                 ResponseCode = (int)response.StatusCode; | ||||||
|                 ResponseMessage = response.ReasonPhrase; |                 ResponseMessage = response.ReasonPhrase; | ||||||
|                 GrantUrl = granturl; |                 GrantUrl = granturl; | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| <head> | <head> | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||||
|     <title>@ViewData["Title"] - WebhookClient</title> |     <title>@ViewData["Title"] - Order Management</title> | ||||||
| 
 | 
 | ||||||
|     <environment include="Development"> |     <environment include="Development"> | ||||||
|         <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" /> |         <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" /> | ||||||
| @ -21,7 +21,7 @@ | |||||||
|     <header> |     <header> | ||||||
|         <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"> |         <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"> | ||||||
|             <div class="container"> |             <div class="container"> | ||||||
|                 <a class="navbar-brand" asp-area="" asp-page="/Index">WebhookClient</a> |                 <a class="navbar-brand" asp-area="" asp-page="/Index">Order Management</a> | ||||||
|                 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent" |                 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent" | ||||||
|                         aria-expanded="false" aria-label="Toggle navigation"> |                         aria-expanded="false" aria-label="Toggle navigation"> | ||||||
|                     <span class="navbar-toggler-icon"></span> |                     <span class="navbar-toggler-icon"></span> | ||||||
| @ -50,7 +50,7 @@ | |||||||
| 
 | 
 | ||||||
|     <footer class="border-top footer text-muted"> |     <footer class="border-top footer text-muted"> | ||||||
|         <div class="container"> |         <div class="container"> | ||||||
|             © 2019 - WebhookClient - <a asp-area="" asp-page="/RegisterWebhook">Register Webhook</a> | <a asp-area="" asp-page="/WebhooksList">Webhooks registered in API</a> |             © 2019 - Order Management - <a asp-area="" asp-page="/RegisterWebhook">Register Webhook</a> | <a asp-area="" asp-page="/WebhooksList">Webhooks registered in API</a> | ||||||
|         </div> |         </div> | ||||||
|     </footer> |     </footer> | ||||||
| 
 | 
 | ||||||
|  | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user