示例#1
0
        public void Should_Not_Filter_Api_Key_With_Invalid_Key()
        {
            var id     = Convert.ToString(Guid.NewGuid());
            var apiLog = Utility.GetApiLog();

            apiLog.Id = id;
            apiLog.SetValue("ApiKey", Utility.CreateMapWithValue("-apikey", "7867YIUUI"));
            var filter      = new ApiKeyFilter();
            var filteredLog = filter.Apply(apiLog);

            var formatter     = JsonLogFormatter.Instance;
            var firehoseSink  = Utility.GetFirehoseSink();
            var redisSink     = Utility.GetRedisSink();
            var compositeSink = Utility.GetCompositeSink(formatter, redisSink, firehoseSink);

            var logWriter = new LogWriter(formatter, compositeSink);

            logWriter.WriteAsync(filteredLog).GetAwaiter().GetResult();
            //Thread.Sleep(60000);

            var logData = Utility.GetEsLogDataById(id);
            var esLogId = string.Empty;

            var    expected = "-apikey=7867YIUUI";
            string actual;

            logData.TryGetValue("ApiKey", out actual);
            Assert.AreEqual(expected, actual);
        }
示例#2
0
        public static HttpApiFactory <IOsuApiClient> CreateFactory(IEnumerable <string> apiKeys, Action <HttpApiConfig> options = null)
        {
            var keyFilter = new ApiKeyFilter(apiKeys);
            HttpApiFactory <IOsuApiClient> httpApiFactory = CreateFactory(keyFilter, options);

            return(httpApiFactory);
        }
示例#3
0
        public static HttpApiFactory <IOsuApiClient> CreateFactory(params string[] apiKeys)
        {
            var keyFilter = new ApiKeyFilter(apiKeys);
            HttpApiFactory <IOsuApiClient> httpApiFactory = CreateFactory(keyFilter);

            return(httpApiFactory);
        }
示例#4
0
        public void WhenApiKeyLengthGreaterThanFive_MaskingShouldHappen(string apiKey, string expected)
        {
            var filter      = new ApiKeyFilter();
            var filteredLog = filter.Apply(new ApiLog {
                RequestHeaders = { { "header1", "value1" }, { "oski-apikey", apiKey } }
            });

            Assert.NotNull(filteredLog);
            var headers = filteredLog.GetFields().FirstOrDefault(x => x.Key == "rq_headers").Value as Map;

            Assert.NotNull(headers);
            Assert.Equal(expected, headers.Value["oski-apikey"]);
        }
示例#5
0
        private static HttpApiFactory <IOsuApiClient> CreateFactory(ApiKeyFilter keyFilter, Action <HttpApiConfig> options = null)
        {
            return(new HttpApiFactory <IOsuApiClient>()
                   .ConfigureHttpApiConfig(c =>
            {
                var formatter = new JsonFormatter();
                formatter.Settings = s =>
                {
                    s.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
                    s.NullValueHandling = NullValueHandling.Ignore;
                };
                c.JsonFormatter = formatter;

                c.GlobalFilters.Add(keyFilter);

                options?.Invoke(c);
            }));
        }
        public async Task <IActionResult> Filter([FromBody] ApiKeyFilter filter)
        {
            PaginationResult <SensateApiKey> keys;

            filter ??= new ApiKeyFilter()
            {
                Limit          = 0,
                Skip           = 0,
                IncludeRevoked = false
            };

            filter.Limit ??= 0;
            filter.Skip ??= 0;

            if (filter.Types == null || filter.Types.Count <= 0)
            {
                filter.Types = new List <ApiKeyType> {
                    ApiKeyType.ApiKey,
                    ApiKeyType.SystemKey
                };
            }

            try {
                keys = await this._keys.FilterAsync(this.CurrentUser, filter.Types, filter.Query, filter.IncludeRevoked,
                                                    filter.Skip.Value, filter.Limit.Value).AwaitBackground();
            } catch (Exception ex) {
                this.m_logger.LogInformation(ex, "Failed to fetch keys!");

                return(this.BadRequest(new Status {
                    Message = "Unable to fetch API keys",
                    ErrorCode = ReplyCode.UnknownError
                }));
            }

            return(this.Ok(keys));
        }