예제 #1
0
        public IActionResult Store(string key, [FromBody] StoreCacheItem item)
        {
            if (item == null)
            {
                return(this.NullValueErrorResult(key, _logger));
            }

            if (!item.Cas.HasValue || item.Cas.Value == 0)
            {
                bool result = true;
                if (item.ValidFor.HasValue)
                {
                    result = _memcachedClient.Store(GetMode(item), key, item.Value, item.ValidFor.Value);
                }
                else if (item.ExpireAt.HasValue)
                {
                    result = _memcachedClient.Store(GetMode(item), key, item.Value, item.ExpireAt.Value);
                }
                else
                {
                    result = _memcachedClient.Store(GetMode(item), key, item.Value);
                }

                if (!result)
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, result));
                }

                return(StatusCode(StatusCodes.Status201Created));
            }
            else
            {
                CasResult <bool> result = new CasResult <bool>();

                if (item.ValidFor.HasValue)
                {
                    result = _memcachedClient.Cas(GetMode(item), key, item.Value, item.ValidFor.Value, item.Cas.Value);
                }
                else if (item.ExpireAt.HasValue)
                {
                    result = _memcachedClient.Cas(GetMode(item), key, item.Value, item.ExpireAt.Value, item.Cas.Value);
                }
                else
                {
                    result = _memcachedClient.Cas(GetMode(item), key, item.Value, item.Cas.Value);
                }

                if (!result.Result)
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, result));
                }

                return(StatusCode(StatusCodes.Status201Created, result));
            }
        }
예제 #2
0
        private StoreMode GetMode(StoreCacheItem item)
        {
            if (item == null || string.IsNullOrEmpty(item.Mode))
            {
                return(StoreMode.Set);
            }

            switch (item.Mode.ToLower())
            {
            case "add": return(StoreMode.Add);

            case "set": return(StoreMode.Set);

            case "replace": return(StoreMode.Replace);

            default: return(StoreMode.Set);
            }
        }