Example #1
0
        public void Test_Set_Same_Key_Twice()
        {
            var value = new SimpleVocValue()
            {
                Data = "Test Data",
                Key = "TestKey"
            };

            var result  = _simpleVoc.Set(value);
            var result2 = _simpleVoc.Set(value);
        }
Example #2
0
        public void Test_Set_With_Empty_Key()
        {
            var value = new SimpleVocValue();

            _simpleVoc.Set(value);
        }
Example #3
0
        public void Test_Set_And_Get()
        {
            var expires = DateTime.Now.AddDays(1);

            var testData = new SimpleVocValue()
            {
                Key = "TestGetKey",
                Data = "♥ Some random Data ♥",
                Flags = 123,
                Expires = expires
            };

            _simpleVoc.Set(testData);

            var result = _simpleVoc.Get(testData.Key);

            Assert.AreEqual(testData.Key, result.Key);
            Assert.AreEqual(testData.Data, result.Data);
            Assert.AreEqual(testData.Flags, result.Flags);
            Assert.AreEqual(testData.Expires.ToString(), result.Expires.ToString());
        }
Example #4
0
        public void Test_SetAsync_And_GetAsync()
        {
            var expires = DateTime.Now.AddDays(1);

            var testData = new SimpleVocValue()
            {
                Key = "TestGetKey",
                Data = "♥ Some random Data ♥",
                Flags = 123,
                Expires = expires
            };

            // Calling wait here to wait on finishing the Task
            _simpleVoc.SetAsync(testData).Wait();

            var result = _simpleVoc.GetAsync(testData.Key);

            Assert.AreEqual(testData.Key, result.Result.Key);
            Assert.AreEqual(testData.Data, result.Result.Data);
            Assert.AreEqual(testData.Flags, result.Result.Flags);
            Assert.AreEqual(testData.Expires.ToString(), result.Result.Expires.ToString());
        }
Example #5
0
        public void Test_Set()
        {
            var value = new SimpleVocValue()
            {
                Data = "Test Data",
                Key = "TestKey"
            };

            var result = _simpleVoc.Set(value);

            Assert.IsTrue(result, "Result for setting a value should be true.");
        }
Example #6
0
        /// <summary>
        /// Create a HttpWebRequest for a SET (POST) operation with given value.
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        private HttpWebRequest CreateRequestForSet(SimpleVocValue value)
        {
            if (string.IsNullOrWhiteSpace(value.Key))
            {
                throw new ArgumentException("Key can't be empty!");
            }

            var req = CreateRequest("value/" + value.Key);
                req.Method = "POST"; // Set uses "POST"
                req.Headers.Add("x-voc-flags", value.Flags.ToString());
            
            if (value.Extended != null) {
                req.Headers.Add("x-voc-extended", _serializer.Serialize(value.Extended));
            }

            // Set expires header if given
            if (value.Expires != DateTime.MinValue)
            {
                // Convert to ISO 8601
                req.Headers.Add("x-voc-expires", value.Expires.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"));
            }

            return req;
        }
Example #7
0
        /// <summary>
        /// Asynchronously save a SimpleVoc value on a SimpleVoc server.
        /// </summary>
        /// <param name="value">The SimpleVoc value to save.</param>
        /// <returns>true on success</returns>
        public async Task<bool> SetAsync(SimpleVocValue value)
        {
            var req = CreateRequestForSet(value);

            try
            {
                using (var reqStream = await req.GetRequestStreamAsync())
                {
                    // Convert string to bytes
                    if (value.Data != null)
                    {
                        byte[] dataToWrite = Encoding.UTF8.GetBytes(value.Data);
                        await reqStream.WriteAsync(dataToWrite, 0, dataToWrite.Length);
                    }

                    // If an error occurs a WebException is thrown
                    var res = (HttpWebResponse) await req.GetResponseAsync();
                        res.Close();
                }
            }
            catch (WebException ex)
            {
                throw ConvertToSimpleVocException(ex);
            }

            return true;
        }