Exemplo n.º 1
0
        public async Task <ApiHostForwardingSettings> GetHost(Uri requestUri)
        {
            var host = requestUri.Host;

            if (_apiKeyLookup.TryGetValue(host, out var cacheKey))
            {
                if (_memoryCache.Contains(cacheKey))
                {
                    return((ApiHostForwardingSettings)_memoryCache.Get(cacheKey));
                }
            }

            var apiHostDetails = await _apiSettingsData.GetByHostAsync(host);

            if (apiHostDetails == null)
            {
                return(null);
            }

            cacheKey = $"host-settings:{apiHostDetails.ApiKey}";

            _apiKeyLookup.TryAdd(host, cacheKey);
            _memoryCache.Add(cacheKey, apiHostDetails, DateTimeOffset.UtcNow.AddSeconds(30));

            return(apiHostDetails);
        }
Exemplo n.º 2
0
        public async Task <IHttpActionResult> Post(CreateHostMappingRequest createHostMappingRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var chaosUrl = _apiSettings.GenerateChaosUrl(createHostMappingRequest.ChaosSubdomainName);

            if (await _apiSettings.GetByHostAsync(chaosUrl) != null)
            {
                return(Conflict());
            }

            var result =
                await _apiSettings.AddAsync(createHostMappingRequest.ChaosSubdomainName,
                                            createHostMappingRequest.ForwardHostName, createHostMappingRequest.Scheme,
                                            createHostMappingRequest.Port);

            return(Created(createHostMappingRequest.ChaosSubdomainName, result));
        }