Update README with project details and setup instructions; add data directories to .gitignore
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using TheLivingWorld.Osm.Import;
|
||||
using TheLivingWorld.Osm.Overpass;
|
||||
|
||||
namespace TheLivingWorld.Osm;
|
||||
|
||||
public static class OsmServiceCollectionExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Registers the OpenStreetMap import pipeline. The returned builder is the Overpass HTTP client, which
|
||||
/// callers usually need to adjust: Overpass queries run for minutes and do not fit default HTTP policies.
|
||||
/// </summary>
|
||||
public static IHttpClientBuilder AddOsmImport(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
services.AddOptions<OsmOptions>()
|
||||
.Bind(configuration.GetSection(OsmOptions.SectionName));
|
||||
|
||||
services.AddSingleton<OsmWorldBuilder>();
|
||||
services.AddSingleton<OsmWorldGenerator>();
|
||||
|
||||
return services.AddHttpClient<OverpassClient>(OverpassClient.HttpClientName, static (provider, client) =>
|
||||
{
|
||||
var options = provider.GetRequiredService<Microsoft.Extensions.Options.IOptions<OsmOptions>>().Value;
|
||||
client.Timeout = TimeSpan.FromSeconds(options.RequestTimeoutSeconds);
|
||||
client.DefaultRequestHeaders.UserAgent.ParseAdd(options.UserAgent);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user