public static IRestOptionsBuilder Contract <TContract>(this IRestOptionsBuilder builder, Action <IRestOptionsBuilder <TContract> > subBuilder) where TContract : class { var sub = new RestOptionsBuilder <TContract>(builder.Services); subBuilder(sub); return(builder); }
public static IRestOptionsBuilder AddRestClient(this IServiceCollection services, string baseUrl = null) { IRestOptionsBuilder builder = new RestOptionsBuilder(services); builder.Services.AddScoped(typeof(RestOptions <>), typeof(DefaultRestOptions <>)); builder.Services.AddScoped(typeof(RestClient <>)); builder.Services.AddScoped <RestOptions>(); builder.Services.AddSingleton <IContentFormatter, JsonContentFormatter>(sp => new JsonContentFormatter(CreateDefaultJsonSettings())); builder.Services.AddScoped <DefaultFormatterSelector>(sp => () => "application/json"); if (!string.IsNullOrWhiteSpace(baseUrl)) { builder = builder.WithBaseUrl(baseUrl); } return(builder); }
public void CheckIfRegistryEntryIsUpdated() { Mock <IRestRegistry> registryMock = new Mock <IRestRegistry>(); registryMock.Setup(r => r.Entries) .Returns(new RestRegistryEntry[] { new RestRegistryEntry( typeof(ClassForRestOptionsBuilderTest), RestAllowedOperations.All) }); registryMock.Setup(r => r.Register(It.IsAny <RestRegistryEntry>())); IRestRegistry registry = registryMock.Object; RestOptionsBuilder options = new RestOptionsBuilder(registry) .WithModelOptions <ClassForRestOptionsBuilderTest>(modelOptions => { modelOptions.WithDisabledAdd(); }); registryMock.Verify(r => r.Register(It.IsAny <RestRegistryEntry>()), Times.Once); }
private static RestOptionsBuilder RegisterRestModelTypes(this IServiceCollection services, IEnumerable <Type> modelTypes) { IRestRegistry restRegistry = new RestRegistry(); Type iDataRepositoryType = typeof(IDataRepository <>); Type dataRepositoryType = typeof(DataRepository <>); foreach (Type modelType in modelTypes) { RestAllowedOperations modelAllowedOperations = modelType.GetRestAllowedOperations(); RestRegistryEntry modelTypeEntry = new RestRegistryEntry(modelType, modelAllowedOperations); restRegistry.Register(modelTypeEntry); services.AddScoped( iDataRepositoryType.MakeGenericType(modelType), dataRepositoryType.MakeGenericType(modelType) ); } services.AddSingleton(typeof(IRestRegistry), restRegistry); services.AddSingleton <IRestRouter, RestRouter>(); services.AddRouting(); RestOptionsBuilder options = new RestOptionsBuilder(restRegistry); return(options); }