public OrderService(IHttpContextAccessor httpContextAccessor, Basket.API.Grpc.Basket.BasketClient basketClient, OrderDbContext orderDbContext, ICapPublisher capBus) { _httpContextAccessor = httpContextAccessor; _basketClient = basketClient; _orderDbContext = orderDbContext; _capBus = capBus; }
public void ConfigureServices(IServiceCollection services) { //services.AddDbContext<OrderDbContext>(options => // options.UseSqlServer( // Configuration.GetConnectionString("OrderConnectionString"))); services.AddDbContext <OrderDbContext>(); JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Remove("sub"); var identityUrl = Configuration.GetValue <string>("IdentityUrl"); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(options => { options.Authority = identityUrl; options.RequireHttpsMetadata = false; options.Audience = "order"; }); services.AddCors(options => { options.AddPolicy("CorsPolicy", builder => builder .SetIsOriginAllowed((host) => true) .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials()); }); services.AddAuthorization(); services.AddGrpc(); services.AddResponseCompression(opts => { opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( new[] { "application/octet-stream" }); }); services.AddCap(x => { x.UseEntityFramework <OrderDbContext>(); x.UseRabbitMQ("localhost"); x.FailedRetryCount = 5; x.FailedThresholdCallback = failed => { var aaa = $@"A message of type {failed.MessageType} failed after executing {x.FailedRetryCount} several times, requiring manual troubleshooting. Message name: {failed.Message.GetName()}"; }; }); services.AddHttpContextAccessor(); var basketUrl = Configuration.GetValue <string>("BasketUrl"); var channel = GrpcChannel.ForAddress(basketUrl); var client = new CleanArchitecture.Services.Basket.API.Grpc.Basket.BasketClient(channel); services.AddSingleton(client); }