Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

namespace OltivaFlix.Domain.DI
{
public static class DomainRequestHandlers
public static class IServiceCollectionExtensions
{
public static IServiceCollection RegisterDomainRequestHandler(this IServiceCollection services)
{
services.AddDomainRequestHandlers(typeof(DomainRequestHandlers).Assembly);
services.AddDomainRequestHandlers(typeof(IServiceCollectionExtensions).Assembly);

return services;
}
Expand Down
13 changes: 11 additions & 2 deletions OltivaFlix.Domain/Handler/GetMovieCommandHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Liquid.Core.Telemetry;
using Liquid.Domain;
using MediatR;
using Microsoft.Extensions.Configuration;
using OltivaFlix.Domain.Model;
using OltivaFlix.Domain.Queries;
using OltivaFlix.Domain.Service;
Expand All @@ -17,19 +18,27 @@ public class GetMovieCommandHandler : RequestHandlerBase, IRequestHandler<GetMov
private readonly IMovieServiceClient _movieService;
private readonly ILightCache _cache;

private readonly IConfiguration _configuration;

private readonly int _cacheMinutes;

public GetMovieCommandHandler(IMediator mediatorService,
ILightContext contextService,
ILightTelemetry telemetryService,
IMapper mapperService,
IMovieServiceClient movieService,
ILightCache cache)
ILightCache cache,
IConfiguration configuration)
: base(mediatorService,
contextService,
telemetryService,
mapperService)
{
_movieService = movieService;
_cache = cache;
_configuration = configuration;

_cacheMinutes = _configuration.GetValue<int>("OltivaCache:CacheTimeMinutes", defaultValue: 10);
}

public async Task<Movie> Handle(GetMovieQuery request, CancellationToken cancellationToken)
Expand All @@ -40,7 +49,7 @@ public async Task<Movie> Handle(GetMovieQuery request, CancellationToken cancell
{
return _movieService.GetMovie(request.ImdbId).Result;
},
expirationDuration: System.TimeSpan.FromMinutes(10));
expirationDuration: System.TimeSpan.FromMinutes(_cacheMinutes));
}
}
}
1 change: 1 addition & 0 deletions OltivaFlix.Domain/OltivaFlix.Domain.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<PackageReference Include="Liquid.Cache" Version="2.0.1-alpha" />
<PackageReference Include="Liquid.Core" Version="2.0.0-alpha" />
<PackageReference Include="Liquid.Domain" Version="2.0.0-alpha" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="5.0.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@

namespace OltivaFlix.Infrastructure.DI
{
public static class RegisterHttpServices
public static class IServiceCollectionExtensions
{
public static IServiceCollection RegisterHttpService(this IServiceCollection services)
{
services.AddHttpServices(typeof(RegisterHttpServices).Assembly);
services.AddHttpServices(typeof(IServiceCollectionExtensions).Assembly);

return services;
}


}
}
27 changes: 24 additions & 3 deletions OltivaFlix.Webapi/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using OltivaFlix.Domain.DI;
using OltivaFlix.Domain.Queries;
using OltivaFlix.Domain.Service;
Expand All @@ -20,7 +21,7 @@ namespace OltivaFlix.Webapi
{
public class Startup
{
public IConfiguration _configuration { get; }
private readonly IConfiguration _configuration;

public Startup(IConfiguration configuration)
{
Expand All @@ -30,6 +31,8 @@ public Startup(IConfiguration configuration)
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
ConfigureCache(services);

services
.AddControllers()
.AddJsonOptions(options =>
Expand All @@ -53,10 +56,28 @@ public void ConfigureServices(IServiceCollection services)

services.ConfigureLiquidHttp();
services.AddLiquidSwagger();
//services.AddLightRedisCache();
services.AddLightMemoryCache();


//

services.RegisterDomainRequestHandler();
services.RegisterHttpService();

}

private void ConfigureCache(IServiceCollection services)
{
string cacheType = _configuration["OltivaCache:CacheType"];

switch (cacheType.ToUpper())
{
case "REDIS":
services.AddLightRedisCache();
break;
default:
services.AddLightMemoryCache();
break;
}
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
Expand Down
4 changes: 4 additions & 0 deletions OltivaFlix.Webapi/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@
"redis": {
"connectionString": "127.0.0.1:6379"
},
"OltivaCache": {
"CacheTimeMinutes": 10,
"CacheType": "Memory"
},
"services": [
{
"id": "MovieServiceHttpClient",
Expand Down