public CompleteResponse Complete(Lang lang, string q, int limit = 1) { RestRequest request = new RestRequest("complete"); request.AddParameter("key", _key); request.AddParameter("lang", lang.ToString().ToLowerInvariant()); request.AddParameter("q", q); request.AddParameter("limit", limit); RestResponse response = (RestResponse)_client.Execute(request); XmlAttributeDeserializer deserializer = new XmlAttributeDeserializer(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { var completeResponse = deserializer.Deserialize<CompleteResponse>(response); return completeResponse; } else { if (response.StatusCode != 0) { var error = deserializer.Deserialize<YandexError>(response); throw new YandexLinguisticsException(error); } else { throw new YandexLinguisticsException(0, response.ErrorMessage); } } }
public void Can_Deserialize_To_Standalone_List_Without_Matching_Class_Case() { string xmlpath = this.PathFor("InlineListSample.xml"); XDocument doc = XDocument.Load(xmlpath); XmlAttributeDeserializer xml = new XmlAttributeDeserializer(); List<Image> output = xml.Deserialize<List<Image>>(new RestResponse { Content = doc.ToString() }); Assert.IsNotEmpty(output); Assert.AreEqual(4, output.Count); }
public void Can_Deserialize_To_Standalone_List_With_Matching_Class_Case() { var xmlpath = PathFor("InlineListSample.xml"); var doc = XDocument.Load(xmlpath); var xml = new XmlAttributeDeserializer(); var output = xml.Deserialize<List<image>>(new RestResponse { Content = doc.ToString() }); Assert.NotEmpty(output); Assert.Equal(4, output.Count); }
public void Can_Deserialize_To_List_Inheritor_From_Custom_Root_With_Attributes() { string xmlpath = this.PathFor("ListWithAttributes.xml"); XDocument doc = XDocument.Load(xmlpath); XmlAttributeDeserializer xml = new XmlAttributeDeserializer { RootElement = "Calls" }; TwilioCallList output = xml.Deserialize<TwilioCallList>(new RestResponse { Content = doc.ToString() }); Assert.AreEqual(3, output.NumPages); Assert.IsNotEmpty(output); Assert.AreEqual(2, output.Count); }
public void Can_Deserialize_artistGetPastEvents() { var xmlpath = Environment.CurrentDirectory + @"\..\..\..\Lastfm.Tests\Responses\Artist\artistGetPastEvents.xml"; var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<LastfmResponse<EventsList>>(response); Assert.AreEqual("Blur", output.Value.Events[2].Headliner); }
public void Can_Deserialize_Boolean_From_Number() { var xmlpath = PathFor("boolean_from_number.xml"); var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<SampleClasses.BooleanTest>(response); Assert.True(output.Value); }
public void Can_Deserialize_POI() { var xmlpath = Environment.CurrentDirectory + @"\..\..\..\LonelySharp.Tests\Responses\POI_Details.xml"; var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<POI>(response); Assert.AreEqual(output.Name, "Alhambra Lounge"); Assert.AreEqual(output.Urls[0].Value, "www.alhambralounge.com"); }
public void Can_Deserialize_Place_Listing() { var xmlpath = Environment.CurrentDirectory + @"\..\..\..\LonelySharp.Tests\Responses\Places_List.xml"; var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<PlaceCollection>(response); Assert.AreEqual(output[0].Fullname, "Australia & Pacific -> Australia -> Queensland -> Brisbane"); Assert.AreEqual(output[0].Northlatitude, -27.434999); }
public void Can_Deserialize_Lists_of_Simple_Types() { var xmlpath = PathFor("xmllists.xml"); var doc = XDocument.Load(xmlpath); var xml = new XmlAttributeDeserializer(); var output = xml.Deserialize<SimpleTypesListSample>(new RestResponse() { Content = doc.ToString() }); Assert.NotEmpty(output.Names); Assert.NotEmpty(output.Numbers); Assert.False(output.Names[0].Length == 0); Assert.False(output.Numbers.Sum() == 0); }
public void Can_Deserialize_artistGetImages() { var xmlpath = Environment.CurrentDirectory + @"\..\..\..\Lastfm.Tests\Responses\Artist\artistGetImages.xml"; var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<LastfmResponse<ImageList>>(response); Assert.AreEqual(50, output.Value.images.Count); Assert.AreEqual("VanderWaals", output.Value.images[1].owner.name); Assert.AreEqual(6, output.Value.images[1].sizes.Count); }
public void Can_Deserialize_artistGetInfo() { var xmlpath = Environment.CurrentDirectory + @"\..\..\..\Lastfm.Tests\Responses\Artist\artistGetInfo.xml"; var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<LastfmResponse<Artist>>(response); Assert.AreEqual("Blur", output.Value.Name); Assert.AreEqual(5, output.Value.similar.Count); Assert.AreEqual("http://www.last.fm/music/Blur", output.Value.Url); Assert.AreEqual("ba853904-ae25-4ebb-89d6-c44cfbd71bd2", output.Value.MusicBrainzID); }
public Lang[] GetLangs() { RestRequest request = new RestRequest("getLangs"); request.AddParameter("key", _key); RestResponse response = (RestResponse)_client.Execute(request); XmlAttributeDeserializer deserializer = new XmlAttributeDeserializer(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { var strs = deserializer.Deserialize<List<string>>(response); var allLangs = (Lang[])Enum.GetValues(typeof(Lang)); Lang[] result = allLangs.Where(lang => strs.Contains(lang.ToString().ToLowerInvariant())).ToArray(); return result; } else { var error = deserializer.Deserialize<YandexError>(response); throw new YandexLinguisticsException(error); } }
public void Can_Deserialize_Attributes_On_Default_Root() { var doc = CreateAttributesXml(); var response = new RestResponse { Content = doc }; var d = new XmlAttributeDeserializer(); var p = d.Deserialize<PersonForXml>(response); Assert.Equal("John Sheehan", p.Name); Assert.Equal(new DateTime(2009, 9, 25, 0, 6, 1), p.StartDate); Assert.Equal(28, p.Age); Assert.Equal(long.MaxValue, p.BigNumber); Assert.Equal(99.9999m, p.Percent); Assert.Equal(false, p.IsCool); Assert.Equal(new Guid(GuidString), p.UniqueId); Assert.Equal(new Uri("http://example.com", UriKind.RelativeOrAbsolute), p.Url); Assert.Equal(new Uri("/foo/bar", UriKind.RelativeOrAbsolute), p.UrlPath); Assert.NotNull(p.BestFriend); Assert.Equal("The Fonz", p.BestFriend.Name); Assert.Equal(1952, p.BestFriend.Since); }
public void Can_Deserialize_TimeSpan() { var culture = CultureInfo.InvariantCulture; var doc = new XDocument(culture); TimeSpan? nullTimespan = null; TimeSpan? nullValueTimeSpan = new TimeSpan(21, 30, 7); var root = new XElement("Person"); root.Add(new XElement("Tick", new TimeSpan(468006))); root.Add(new XElement("Millisecond", new TimeSpan(0, 0, 0, 0, 125))); root.Add(new XElement("Second", new TimeSpan(0, 0, 8))); root.Add(new XElement("Minute", new TimeSpan(0, 55, 2))); root.Add(new XElement("Hour", new TimeSpan(21, 30, 7))); root.Add(new XElement("NullableWithoutValue", nullTimespan)); root.Add(new XElement("NullableWithValue", nullValueTimeSpan)); doc.Add(root); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer() { Culture = culture, }; var payload = d.Deserialize<TimeSpanTestStructure>(response); Assert.Equal(new TimeSpan(468006), payload.Tick); Assert.Equal(new TimeSpan(0, 0, 0, 0, 125), payload.Millisecond); Assert.Equal(new TimeSpan(0, 0, 8), payload.Second); Assert.Equal(new TimeSpan(0, 55, 2), payload.Minute); Assert.Equal(new TimeSpan(21, 30, 7), payload.Hour); Assert.Null(payload.NullableWithoutValue); Assert.NotNull(payload.NullableWithValue); Assert.Equal(new TimeSpan(21, 30, 7), payload.NullableWithValue.Value); }
public void Can_Deserialize_Root_Elements_Without_Matching_Case_And_Dashes() { var doc = CreateLowerCasedRootElementWithDashesXml(); var response = new RestResponse { Content = doc }; var d = new XmlAttributeDeserializer(); var p = d.Deserialize<List<IncomingInvoice>>(response); Assert.NotNull(p); Assert.Equal(1, p.Count); Assert.Equal(45, p[0].ConceptId); }
public void Can_Deserialize_Nested_List_Without_Elements_To_Empty_List() { var doc = CreateXmlWithEmptyNestedList(); var xml = new XmlAttributeDeserializer(); var output = xml.Deserialize<EmptyListSample>(new RestResponse { Content = doc }); Assert.NotNull(output.images); Assert.NotNull(output.Images); Assert.Empty(output.images); Assert.Empty(output.Images); }
public void Can_Deserialize_Mixture_Of_Empty_Elements_With_Attributes_And_Populated_Elements() { var doc = CreateXmlWithAttributesAndNullValuesAndPopulatedValues(); var xml = new XmlAttributeDeserializer(); var output = xml.Deserialize<NullableValues>(new RestResponse {Content = doc}); Assert.Null(output.Id); Assert.Null(output.StartDate); Assert.Equal(new Guid(GuidString), output.UniqueId); }
public void Can_Deserialize_Lastfm_Xml() { var xmlpath = PathFor("Lastfm.xml"); var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<SampleClasses.Lastfm.Event>(response); //Assert.NotEmpty(output.artists); Assert.Equal("http://www.last.fm/event/328799+Philip+Glass+at+Barbican+Centre+on+12+June+2008", output.url); Assert.Equal("http://www.last.fm/venue/8777860+Barbican+Centre", output.venue.url); }
public void Can_Deserialize_POI_List() { var xmlpath = Environment.CurrentDirectory + @"\..\..\..\LonelySharp.Tests\Responses\POI_List.xml"; var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<POICollection>(response); Assert.AreEqual(output[0].ID, 1077533); Assert.AreEqual(output[0].POIType.ToString(), "Eat"); Assert.AreEqual(output.Count, 222); }
public void Can_Deserialize_Google_Weather_Xml() { var xmlpath = PathFor("GoogleWeather.xml"); var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<SampleClasses.xml_api_reply>(response); Assert.NotEmpty(output.weather); Assert.Equal(4, output.weather.Count); Assert.Equal("Sunny", output.weather[0].condition.data); }
public void Can_Deserialize_Eventful_Xml() { var xmlpath = PathFor("eventful.xml"); var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<SampleClasses.VenueSearch>(response); Assert.NotEmpty(output.venues); Assert.Equal(3, output.venues.Count); Assert.Equal("Tivoli", output.venues[0].name); Assert.Equal("http://eventful.com/brisbane/venues/tivoli-/V0-001-002169294-8", output.venues[1].url); Assert.Equal("V0-001-000266914-3", output.venues[2].id); }
public void Can_Deserialize_Empty_Elements_With_Attributes_to_Nullable_Values() { var doc = CreateXmlWithAttributesAndNullValues(); var xml = new XmlAttributeDeserializer(); var output = xml.Deserialize<NullableValues>(new RestResponse {Content = doc}); Assert.Null(output.Id); Assert.Null(output.StartDate); Assert.Null(output.UniqueId); }
public void Can_Deserialize_Custom_Formatted_Date() { var culture = CultureInfo.InvariantCulture; var format = "dd yyyy MMM, hh:mm ss tt zzz"; var date = new DateTime(2010, 2, 8, 11, 11, 11); var doc = new XDocument(); var root = new XElement("Person"); root.Add(new XElement("StartDate", date.ToString(format, culture))); doc.Add(root); var xml = new XmlAttributeDeserializer { DateFormat = format, Culture = culture }; var response = new RestResponse { Content = doc.ToString() }; var output = xml.Deserialize<PersonForXml>(response); Assert.Equal(date, output.StartDate); }
public void Can_Deserialize_DateTimeOffset() { var culture = CultureInfo.InvariantCulture; var doc = new XDocument(culture); DateTimeOffset DateTimeOffset = new DateTimeOffset(2013, 02, 08, 9, 18, 22, TimeSpan.FromHours(10)); DateTimeOffset? NullableDateTimeOffsetWithValue = new DateTimeOffset(2013, 02, 08, 9, 18, 23, TimeSpan.FromHours(10)); var root = new XElement("Dates"); root.Add(new XElement("DateTimeOffset", DateTimeOffset)); root.Add(new XElement("NullableDateTimeOffsetWithNull", string.Empty)); root.Add(new XElement("NullableDateTimeOffsetWithValue", NullableDateTimeOffsetWithValue)); doc.Add(root); var xml = new XmlAttributeDeserializer { Culture = culture, }; var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer() { Culture = culture, }; var payload = d.Deserialize<DateTimeTestStructure>(response); Assert.Equal(DateTimeOffset, payload.DateTimeOffset); Assert.Null(payload.NullableDateTimeOffsetWithNull); Assert.True(payload.NullableDateTimeOffsetWithValue.HasValue); Assert.Equal(NullableDateTimeOffsetWithValue, payload.NullableDateTimeOffsetWithValue); }
public void Ignore_ReadOnly_Property_That_Exists_In_Data() { var doc = CreateElementsXml(); var response = new RestResponse { Content = doc }; var d = new XmlAttributeDeserializer(); var p = d.Deserialize<PersonForXml>(response); Assert.Null(p.ReadOnlyProxy); }
public void Can_Deserialize_Google_Weather_Xml_WithDeserializeAs() { var xmlpath = PathFor("GoogleWeather.xml"); var doc = XDocument.Load(xmlpath); var response = new RestResponse { Content = doc.ToString() }; var d = new XmlAttributeDeserializer(); var output = d.Deserialize<GoogleWeatherApi>(response); Assert.NotEmpty(output.Weather); Assert.Equal(4, output.Weather.Count); Assert.Equal("Sunny", output.Weather[0].Condition.Data); }
public void Can_Deserialize_Directly_To_Lists_Off_Root_Element() { var xmlpath = PathFor("directlists.xml"); var doc = XDocument.Load(xmlpath); var xml = new XmlAttributeDeserializer(); var output = xml.Deserialize<List<Database>>(new RestResponse { Content = doc.ToString() }); Assert.NotEmpty(output); Assert.Equal(2, output.Count); }
public void Can_Deserialize_Nested_Class() { var doc = CreateElementsXml(); var response = new RestResponse { Content = doc }; var d = new XmlAttributeDeserializer(); var p = d.Deserialize<PersonForXml>(response); Assert.NotNull(p.FavoriteBand); Assert.Equal("Goldfinger", p.FavoriteBand.Name); }
public void Can_Deserialize_Parentless_aka_Inline_List_Items_With_Matching_Class_Name_Using_XmlAttributeDeserializer() { var xmlpath = PathFor("InlineListSample.xml"); var doc = XDocument.Load(xmlpath); var xml = new XmlAttributeDeserializer(); var output = xml.Deserialize<InlineListSample>(new RestResponse { Content = doc.ToString() }); Assert.NotEmpty(output.images); Assert.Equal(4, output.images.Count); }
public void Can_Deserialize_Elements_to_Nullable_Values() { var culture = CultureInfo.InvariantCulture; var doc = CreateXmlWithoutEmptyValues(culture); var xml = new XmlAttributeDeserializer() {Culture = culture}; var output = xml.Deserialize<NullableValues>(new RestResponse { Content = doc }); Assert.NotNull(output.Id); Assert.NotNull(output.StartDate); Assert.NotNull(output.UniqueId); Assert.Equal(123, output.Id); Assert.Equal(new DateTime(2010, 2, 21, 9, 35, 00), output.StartDate); Assert.Equal(new Guid(GuidString), output.UniqueId); }