/// <summary> /// Initializes a new instance of the <see cref="IdxClient"/> class using the specified <see cref="HttpClient"/>. /// </summary> /// <param name="apiClientConfiguration"> /// The client configuration. If <c>null</c>, the library will attempt to load /// configuration from an <c>okta.yaml</c> file or environment variables. /// </param> /// <param name="httpClient">The HTTP client to use for requests to the Okta API.</param> /// <param name="logger">The logging interface to use, if any.</param> public IdxClient( IdxConfiguration configuration = null, HttpClient httpClient = null, ILogger logger = null) { Configuration = GetConfigurationOrDefault(configuration); IdxConfigurationValidator.Validate(Configuration); GenerateStateCodeVerifierAndChallenge(); _logger = logger ?? NullLogger.Instance; var userAgentBuilder = new UserAgentBuilder("okta-idx-dotnet", typeof(IdxClient).GetTypeInfo().Assembly.GetName().Version); // TODO: Allow proxy configuration httpClient = httpClient ?? DefaultHttpClient.Create( connectionTimeout: null, proxyConfiguration: null, logger: _logger); var oktaBaseConfiguration = OktaConfigurationConverter.Convert(Configuration); var resourceTypeResolverFactory = new AbstractResourceTypeResolverFactory(ResourceTypeHelper.GetAllDefinedTypes(typeof(Resource))); var requestExecutor = new DefaultRequestExecutor(oktaBaseConfiguration, httpClient, _logger); var resourceFactory = new ResourceFactory(this, _logger, resourceTypeResolverFactory); _dataStore = new DefaultDataStore( requestExecutor, new DefaultSerializer(), resourceFactory, _logger, userAgentBuilder); }
private static IDataStore PrepareIDataStore(OktaClientConfiguration apiClientConfiguration) { OktaClientConfiguration oktaClientConfiguration = PrepareOktaClientConfiguration(apiClientConfiguration); Microsoft.Extensions.Logging.ILogger logger = Microsoft.Extensions.Logging.Abstractions.NullLogger.Instance; HttpClient httpClient = DefaultHttpClient.Create( oktaClientConfiguration.ConnectionTimeout, oktaClientConfiguration.Proxy, logger); AbstractResourceTypeResolverFactory resourceTypeResolverFactory = null; BaseOktaClient baseOktaClient = new BaseOktaClient(); dynamic resourceFactory = new ResourceFactory(baseOktaClient, logger, resourceTypeResolverFactory); var requestExecutor = new DefaultRequestExecutor(oktaClientConfiguration, httpClient, logger); UserAgentBuilder userAgentBuilder = new UserAgentBuilder( "custom", typeof(CustomAuthnClient).GetTypeInfo().Assembly.GetName().Version); IDataStore dataStore = new DefaultDataStore( requestExecutor, new DefaultSerializer(), resourceFactory, logger, userAgentBuilder); return(dataStore); }