public FirebaseRemarksRepository(IOptions <FirebaseConfig> options, IApiClient apiClient, IApiRequestProvider requestProvider, IHttpContextAccessor contextAccessor)
        {
            _config          = options.Value ?? throw new InvalidOperationException("Missing config.");
            _apiClient       = apiClient;
            _requestProvider = requestProvider;

            _endpoint = $"{_config.DbEndPoint.TrimEnd('/')}/projects/{_config.ProjectId}/databases/(default)/documents";

            // TODO: REFACTOR
            //   This repository reuses the authorisation header from the original request which is a bad design.
            //   This service should manage its own authorisation with the external API being called.
            contextAccessor.HttpContext.Request.Headers.TryGetValue("Authorization", out var authorisation);
            var auth = authorisation.ToString();

            // HACK:
            // Firebase is finicky with the OAuth header so we need to fix the header to the casing it accepts.
            if (auth.StartsWith("bearer ", StringComparison.OrdinalIgnoreCase))
            {
                auth = $"Bearer{auth.Substring(6)}";
            }

            _defaultHeader = new Dictionary <string, string>
            {
                { "Authorization", auth }
            };

            _defaultQuery = new Dictionary <string, string>
            {
                { "key", _config.ApiKey }
            };
        }
 public NoOpsApiClient(IOptionsSnapshot <NoOpsChallengeOptions> options, IApiRequestProvider requestProvider, IApiClient client, ILogger <NoOpsApiClient> logger)
 {
     _apiUrl          = options?.Value?.NoOpsChallengeApiUrl ?? throw new ArgumentNullException(nameof(options));
     _requestProvider = requestProvider;
     _client          = client;
     _logger          = logger;
 }
Example #3
0
        public static IApiRequestProvider Load()
        {
            IApiRequestProvider provider = null;

            switch (eXtensibleWebApiConfig.LogTo)
            {
            case XF.Common.LoggingStrategyOption.Datastore:
                provider = new SqlServerApiRequestProvider();
                break;

            case XF.Common.LoggingStrategyOption.Plugin:
                provider = PluginLoader.LoadReferencedAssembly <IApiRequestProvider>().FirstOrDefault() as IApiRequestProvider;
                break;

            case XF.Common.LoggingStrategyOption.WindowsEventLog:
            case XF.Common.LoggingStrategyOption.None:
            case XF.Common.LoggingStrategyOption.Output:
            case XF.Common.LoggingStrategyOption.Silent:
            case XF.Common.LoggingStrategyOption.XFTool:
            case XF.Common.LoggingStrategyOption.CommonServices:
            default:
                break;
            }

            return(provider);
        }
Example #4
0
        public WebImageClientTests()
        {
            _requestProvider = Substitute.For <IApiRequestProvider>();

            _apiClient = Substitute.For <IApiClient>();

            _client = new WebImageClient(_requestProvider, _apiClient, Substitute.For <ILogger <WebImageClient> >());
        }
Example #5
0
 public eXtensibleMessageHandler(IApiRequestProvider provider)
 {
     if (provider == null)
     {
         RequestProvider = new SqlServerApiRequestProvider();
     }
     else
     {
         RequestProvider = provider;
     }
 }
        public FirebaseAuthenticationProvider(IOptions <FirebaseConfig> options, IApiClient apiClient, IApiRequestProvider requestProvider)
        {
            _config          = options.Value ?? throw new InvalidOperationException("Missing config.");
            _apiClient       = apiClient;
            _requestProvider = requestProvider;
            _endpoint        = $"{_config.AuthEndpoint.TrimEnd('/')}/accounts";

            _defaultQuery = new Dictionary <string, string>
            {
                { "key", _config.ApiKey }
            };
        }
Example #7
0
        public NoOpsApiClientTests()
        {
            _noopsUrl = "noopsUrl";
            var options = Substitute.For <IOptionsSnapshot <NoOpsChallengeOptions> >();

            options.Value.Returns(new NoOpsChallengeOptions {
                NoOpsChallengeApiUrl = _noopsUrl
            });

            _requestProvider = Substitute.For <IApiRequestProvider>();

            _apiClient = Substitute.For <IApiClient>();

            _client = new NoOpsApiClient(options, _requestProvider, _apiClient, Substitute.For <ILogger <NoOpsApiClient> >());
        }
Example #8
0
        public AzureRepositoryTests()
        {
            _database = "databaseUrl";

            var options = Substitute.For <IOptions <HospitalConfig> >();

            options.Value.Returns(new HospitalConfig {
                Database = _database
            });

            _apiClient       = Substitute.For <IApiClient>();
            _requestProvider = Substitute.For <IApiRequestProvider>();

            _repository = new Repository(options, _apiClient, _requestProvider);
        }
        public FirebaseAuthenticationProviderTests()
        {
            _firebaseAuthEndpoint = "firebaseAuthEndpoint";
            _firebaseApiKey       = "firebaseApiKey";

            var options = Substitute.For <IOptions <FirebaseConfig> >();

            options.Value.Returns(new FirebaseConfig {
                AuthEndpoint = _firebaseAuthEndpoint, ApiKey = _firebaseApiKey
            });

            _apiClient       = Substitute.For <IApiClient>();
            _requestProvider = Substitute.For <IApiRequestProvider>();

            _provider = new FirebaseAuthenticationProvider(options, _apiClient, _requestProvider);
        }
        public FirebaseDatabaseRepositoryTests()
        {
            _firebaseProjectId    = "firebaseProjectId";
            _firebaseDatabase     = "firebaseDatabaseUrl";
            _firebaseApiKey       = "firebaseApiKey";
            _requestAuthorisation = "Bearer token";

            var options = Substitute.For <IOptions <FirebaseConfig> >();

            options.Value.Returns(new FirebaseConfig {
                ProjectId = _firebaseProjectId, DbEndPoint = _firebaseDatabase, ApiKey = _firebaseApiKey
            });

            _apiClient       = Substitute.For <IApiClient>();
            _requestProvider = Substitute.For <IApiRequestProvider>();

            var context = new DefaultHttpContext();

            context.Request.Headers.Add("Authorization", _requestAuthorisation);
            _accessor = Substitute.For <IHttpContextAccessor>();
            _accessor.HttpContext.Returns(context);

            _repository = new FirebaseRemarksRepository(options, _apiClient, _requestProvider, _accessor);
        }
Example #11
0
 public WebImageClient(IApiRequestProvider requestProvider, IApiClient client, ILogger <WebImageClient> logger)
 {
     _requestProvider = requestProvider;
     _client          = client;
     _logger          = logger;
 }
Example #12
0
 public AzureRepository(IOptions <HospitalConfig> options, IApiClient apiClient, IApiRequestProvider requestProvider)
 {
     _config          = options.Value ?? throw new InvalidOperationException("Missing config.");
     _apiClient       = apiClient;
     _requestProvider = requestProvider;
 }
 public ApiRequestProviderTests()
 {
     _provider = new ApiRequestProvider();
 }