public object FromEntry (DynamoDBEntry entry)
		{
			PrimitiveList pList = entry as PrimitiveList;

			if (pList != null) {
				double lat = 0, lon = 0, accuracy = 0;
				for (int i = 0; i < pList.Entries.Count; i++) {
					switch (i) {
					case 0:
						lat = pList [i].AsDouble ();
						break;
					case 1:
						lon = pList [i].AsDouble ();
						break;
					case 2:
						accuracy = pList [i].AsDouble ();
						break;
					default:
						break;
					}
				}
				return new Coordinate (lat, lon, accuracy);
			} else {
				return null;
			}
		}
 /// <summary>
 /// Converts the <c>entry</c> to <see cref="DateTime"/>.
 /// </summary>
 /// <param name="entry">The entry to convert.</param>
 /// <returns>The date time of the entry.</returns>
 public object FromEntry(DynamoDBEntry entry)
 {
     var entryString = entry.AsString();
     if (string.IsNullOrEmpty(entryString))
         return null;
     else
         return DateTime.ParseExact(entryString, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
 }
		public object FromEntry (DynamoDBEntry entry)
		{
			PrimitiveList pList = entry as PrimitiveList;
			if (pList == null)
				throw new ArgumentOutOfRangeException ();

			var sList = pList.AsListOfString ();
			var hashSet = new HashSet<string> ();
			foreach (var item in sList) {
				hashSet.Add (item);
			}
			return hashSet;
		}
// ReSharper disable UnusedParameter.Local
        private CacheDynamoDbEntryWrapper(SerializationInfo info, StreamingContext context)
// ReSharper restore UnusedParameter.Local
        {
            var primitiveList = new List<Primitive>();

            var en = info.GetEnumerator();
            while (en.MoveNext())
            {
                if (en.Name == "Primitive")
                {
                    this.Entry = ((CachePrimitiveWrapper)en.Value).Primitive;
                    return;
                }

                primitiveList.Add(((CachePrimitiveWrapper)en.Value).Primitive);
            }

            this.Entry = primitiveList;
        }
예제 #5
0
		public object FromEntry (DynamoDBEntry entry)
		{
			Primitive p = entry as Primitive;
			return p != null;
		}
예제 #6
0
			public object FromEntry(DynamoDBEntry entry)
			{
				return Enum.Parse(typeof(Stars), entry.AsString());
			}
예제 #7
0
			public object FromEntry(DynamoDBEntry entry)
			{
                if (entry == null)
                {
                    return null;
                }

				var list = entry.AsListOfString();
				var dictionary = new Dictionary<string, TimeSpan>();
				foreach (var record in list)
				{
					var split = record.Split('@');

					var key = split[0];
					var value = TimeSpan.Parse(split[1]);

					dictionary.Add(key, value);
				}

				return dictionary;
			}
		public object FromEntry (DynamoDBEntry entry)
		{
			return entry == null ? 0 : entry.AsInt();
		}
예제 #9
0
        // Attempts to decode a particular DynamoDBEntry.
        // May throw exceptions, in particular if the data is not base64 encoded
        private static bool TryDecodeBase64(DynamoDBEntry entry, out DynamoDBEntry decodedEntry)
        {
            decodedEntry = null;

            // Convert string primitive (S) to binary primitive (B)
            var primitive = entry as Primitive;

            if (primitive != null && primitive.Type == DynamoDBEntryType.String)
            {
                // Decode the contents
                var    base64 = primitive.Value as string;
                byte[] bytes;
                if (!TryDecodeBase64(base64, out bytes))
                {
                    return(false);
                }

                // Store as binary primitive (B)
                decodedEntry = new Primitive(bytes);
                return(true);
            }

            // Convert string set (SS) to binary set (BS)
            var primitiveList = entry as PrimitiveList;

            if (primitiveList != null && primitiveList.Type == DynamoDBEntryType.String)
            {
                var decodedList = new PrimitiveList(DynamoDBEntryType.Binary);
                foreach (var item in primitiveList.Entries)
                {
                    // Attempt to decode
                    DynamoDBEntry decodedItem;
                    if (!TryDecodeBase64(item, out decodedItem))
                    {
                        return(false);
                    }

                    // The decoded item must be a Primitive
                    Primitive decodedPrimitive = decodedItem as Primitive;
                    if (decodedPrimitive == null)
                    {
                        return(false);
                    }

                    decodedList.Add(decodedPrimitive);
                }

                decodedEntry = decodedList;
                return(true);
            }

            // In a given list (L), convert every string primitive (S) to binary primitive (B)
            // Non-strings and strings that cannot be converted will be left as-is
            var dynamoDBList = entry as DynamoDBList;

            if (dynamoDBList != null)
            {
                var decodedList = new DynamoDBList();
                foreach (var item in dynamoDBList.Entries)
                {
                    DynamoDBEntry decodedItem;
                    if (!TryDecodeBase64(item, out decodedItem))
                    {
                        // if decoding could not succeed, store same item
                        decodedItem = item;
                    }

                    decodedList.Add(decodedItem);
                }

                decodedEntry = decodedList;
                return(true);
            }

            return(false);
        }
        public object FromEntry(DynamoDBEntry entry)
        {
            Primitive primitive = entry as Primitive;
            if (primitive == null) return null;

            if (primitive.Type != DynamoDBEntryType.String) throw new InvalidCastException();
            string xml = primitive.AsString();
            using (StringReader reader = new StringReader(xml))
            {
                return _serializer.Deserialize(reader);
            }
        }
 public CacheDynamoDbEntryWrapper(DynamoDBEntry entry)
 {
     this.Entry = entry;
 }
 /// <summary>
 /// Converts the <c>entry</c> to <see cref="DateTime"/>.
 /// </summary>
 /// <param name="entry">The entry to convert.</param>
 /// <returns>The date time of the entry.</returns>
 public object FromEntry(DynamoDBEntry entry)
 {
     return DateTime.ParseExact(entry.AsString(), "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
 }
		public object FromEntry (DynamoDBEntry entry)
		{
			Primitive p = entry as Primitive;
			return new TimeSpan (p.AsLong ());
		}
		public object FromEntry (DynamoDBEntry entry)
		{
			var str = entry.AsString();
			var list = string.IsNullOrWhiteSpace(str) ? new List<int>() : str.Split(',').Select(int.Parse).ToList();
			return list;
		}
예제 #15
0
        // Attempts to decode a particular DynamoDBEntry.
        // May throw exceptions, in particular if the data is not base64 encoded
        private static bool TryDecodeBase64(DynamoDBEntry entry, out DynamoDBEntry decodedEntry)
        {
            decodedEntry = null;

            // Convert string primitive (S) to binary primitive (B)
            var primitive = entry as Primitive;
            if (primitive != null && primitive.Type == DynamoDBEntryType.String)
            {
                // Decode the contents
                var base64 = primitive.Value as string;
                byte[] bytes;
                if (!TryDecodeBase64(base64, out bytes))
                    return false;

                // Store as binary primitive (B)
                decodedEntry = new Primitive(bytes);
                return true;
            }

            // Convert string set (SS) to binary set (BS)
            var primitiveList = entry as PrimitiveList;
            if (primitiveList != null && primitiveList.Type == DynamoDBEntryType.String)
            {
                var decodedList = new PrimitiveList(DynamoDBEntryType.Binary);
                foreach(var item in primitiveList.Entries)
                {
                    // Attempt to decode
                    DynamoDBEntry decodedItem;
                    if (!TryDecodeBase64(item, out decodedItem))
                        return false;

                    // The decoded item must be a Primitive
                    Primitive decodedPrimitive = decodedItem as Primitive;
                    if (decodedPrimitive == null)
                        return false;

                    decodedList.Add(decodedPrimitive);
                }

                decodedEntry = decodedList;
                return true;
            }

            // In a given list (L), convert every string primitive (S) to binary primitive (B)
            // Non-strings and strings that cannot be converted will be left as-is
            var dynamoDBList = entry as DynamoDBList;
            if (dynamoDBList != null)
            {
                var decodedList = new DynamoDBList();
                foreach(var item in dynamoDBList.Entries)
                {
                    DynamoDBEntry decodedItem;
                    if (!TryDecodeBase64(item, out decodedItem))
                    {
                        // if decoding could not succeed, store same item
                        decodedItem = item;
                    }

                    decodedList.Add(decodedItem);
                }

                decodedEntry = decodedList;
                return true;
            }

            return false;
        }
예제 #16
0
        // Writes a JSON representation of the given DynamoDBEntry
        private static void WriteJson(DynamoDBEntry entry, JsonWriter writer, DynamoDBEntryConversion conversion)
        {
            entry = entry.ToConvertedEntry(conversion);

            var document = entry as Document;
            if (document != null)
            {
                writer.WriteObjectStart();

                // Both item attributes and entries in M type are unordered, so sorting by key
                // http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes
                foreach (var kvp in document)
                {
                    var name = kvp.Key;
                    var value = kvp.Value;

                    writer.WritePropertyName(name);
                    WriteJson(value, writer, conversion);
                }
                writer.WriteObjectEnd();
                return;
            }

            var primitive = entry as Primitive;
            if (primitive != null)
            {
                var type = primitive.Type;
                var value = primitive.Value;
                WritePrimitive(writer, type, value);
                return;
            }

            var primitiveList = entry as PrimitiveList;
            if (primitiveList != null)
            {
                var itemType = primitiveList.Type;

                writer.WriteArrayStart();
                foreach (var item in primitiveList.Entries)
                {
                    var itemValue = item.Value;
                    WritePrimitive(writer, itemType, itemValue);
                }
                writer.WriteArrayEnd();
                return;
            }

            var ddbList = entry as DynamoDBList;
            if (ddbList != null)
            {
                writer.WriteArrayStart();
                foreach(var item in ddbList.Entries)
                {
                    WriteJson(item, writer, conversion);
                }
                writer.WriteArrayEnd();
                return;
            }

            var ddbBool = entry as DynamoDBBool;
            if (ddbBool != null)
            {
                writer.Write(ddbBool.Value);
                return;
            }

            var ddbNull = entry as DynamoDBNull;
            if (ddbNull != null)
            {
                writer.Write(null);
                return;
            }

            throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture,
                "Unable to convert entry of type {0} to JSON", entry.GetType().FullName));
        }
예제 #17
0
 public object FromEntry(DynamoDBEntry entry)
 {
     var ticks = entry.AsLong();
     return new DateTimeOffset(ticks, DateTimeOffset.UtcNow.Offset);
 }
예제 #18
0
 /// <summary>
 /// Adds a DynamoDB to the end of the list.
 /// </summary>
 /// <param name="value">DynamoDB to add.</param>
 public void Add(DynamoDBEntry value)
 {
     this.Entries.Add(value);
 }
예제 #19
0
 public object FromEntry(DynamoDBEntry entry)
 {
     return new Guid(entry.AsString());
 }
예제 #20
0
        // Writes a JSON representation of the given DynamoDBEntry
        private static void WriteJson(DynamoDBEntry entry, JsonWriter writer, DynamoDBEntryConversion conversion)
        {
            entry = entry.ToConvertedEntry(conversion);

            var document = entry as Document;

            if (document != null)
            {
                writer.WriteObjectStart();

                // Both item attributes and entries in M type are unordered, so sorting by key
                // http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes
                foreach (var kvp in document)
                {
                    var name  = kvp.Key;
                    var value = kvp.Value;

                    writer.WritePropertyName(name);
                    WriteJson(value, writer, conversion);
                }
                writer.WriteObjectEnd();
                return;
            }

            var primitive = entry as Primitive;

            if (primitive != null)
            {
                var type  = primitive.Type;
                var value = primitive.Value;
                WritePrimitive(writer, type, value);
                return;
            }

            var primitiveList = entry as PrimitiveList;

            if (primitiveList != null)
            {
                var itemType = primitiveList.Type;

                writer.WriteArrayStart();
                foreach (var item in primitiveList.Entries)
                {
                    var itemValue = item.Value;
                    WritePrimitive(writer, itemType, itemValue);
                }
                writer.WriteArrayEnd();
                return;
            }

            var ddbList = entry as DynamoDBList;

            if (ddbList != null)
            {
                writer.WriteArrayStart();
                foreach (var item in ddbList.Entries)
                {
                    WriteJson(item, writer, conversion);
                }
                writer.WriteArrayEnd();
                return;
            }

            var ddbBool = entry as DynamoDBBool;

            if (ddbBool != null)
            {
                writer.Write(ddbBool.Value);
                return;
            }

            var ddbNull = entry as DynamoDBNull;

            if (ddbNull != null)
            {
                writer.Write(null);
                return;
            }

            throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture,
                                                              "Unable to convert entry of type {0} to JSON", entry.GetType().FullName));
        }
		public object FromEntry (DynamoDBEntry entry)
		{
			Primitive p = entry as Primitive;
			return StringToDateTime (p.AsString ());
		}