コード例 #1
0
        public async Task <ActionResult> QueryRadius(RadiusQuery query)
        {
            if (!ModelState.IsValid)
            {
                return(Json("Bad Request", JsonRequestBehavior.AllowGet));
            }

            var centerPoint = new GeoPoint(query.Lat, query.Lng);
            var radius      = query.RadiusInMeters;

            var attributesToGet = new List <string>
            {
                _config.RangeKeyAttributeName,
                _config.GeoJsonAttributeName,
                "schoolName"
            };

            var radReq = new QueryRadiusRequest(centerPoint, radius);

            radReq.QueryRequest.AttributesToGet = attributesToGet;

            var result = await _geoDataManager.QueryRadiusAsync(radReq);

            var dtos = GetResultsFromQuery(result);


            return(Json(dtos, JsonRequestBehavior.AllowGet));
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: marcelbuesing/IS24RestApi
        private static async Task TestAsync(Config config)
        {
            var connection = new IS24Connection
            {
                ConsumerKey       = config.ConsumerKey,
                ConsumerSecret    = config.ConsumerSecret,
                AccessToken       = config.AccessToken,
                AccessTokenSecret = config.AccessSecret,
                BaseUrlPrefix     = @"https://rest.sandbox-immobilienscout24.de/restapi/api"
            };

            var searchResource = new SearchResource(connection);
            var query          = new RadiusQuery
            {
                Latitude       = 52.49023,
                Longitude      = 13.35939,
                Radius         = 1,
                RealEstateType = RealEstateType.APARTMENT_RENT,
                Parameters     = new
                {
                    Price = new DecimalRange {
                        Max = 1000
                    },
                    LivingSpace = new DecimalRange {
                        Min = 100
                    },
                    NumberOfRooms = new DecimalRange {
                        Min = 4
                    },
                    Equipment = "balcony"
                },
                Channel = new HomepageChannel("me")
            };
            var results = await searchResource.Search(query);

            var api = new ImportExportClient(connection);
            RealtorContactDetails contact = null;

            try
            {
                contact = await api.Contacts.GetAsync("Hans Meiser", isExternal : true);
            }
            catch (IS24Exception ex)
            {
                if (ex.Messages.Message.First().MessageCode != MessageCode.ERROR_RESOURCE_NOT_FOUND)
                {
                    throw;
                }
            }

            if (contact == null)
            {
                contact = new RealtorContactDetails
                {
                    Lastname  = "Meiser",
                    Firstname = "Hans",
                    Address   = new Address
                    {
                        Street      = "Hauptstraße",
                        HouseNumber = "1",
                        Postcode    = "10827",
                        City        = "Berlin",
                        InternationalCountryRegion = new CountryRegion {
                            Country = CountryCode.DEU, Region = "Berlin"
                        }
                    },
                    Email      = "*****@*****.**",
                    ExternalId = "Hans Meiser"
                };

                await api.Contacts.CreateAsync(contact);

                contact.Address.HouseNumber = "1a";
                await api.Contacts.UpdateAsync(contact);
            }

            IRealEstate realEstate = null;

            try
            {
                realEstate = await api.RealEstates.GetAsync("Hauptstraße 1", isExternal : true);
            }
            catch (IS24Exception ex)
            {
                if (ex.Messages.Message.First().MessageCode != MessageCode.ERROR_RESOURCE_NOT_FOUND)
                {
                    throw;
                }
            }

            if (realEstate == null)
            {
                var re = new ApartmentRent
                {
                    Contact = new RealEstateContact {
                        Id = contact.Id
                    },
                    ExternalId = "Hauptstraße 1",
                    Title      = "IS24RestApi Test",
                    Address    = new Wgs84Address {
                        Street = "Hauptstraße", HouseNumber = "1", City = "Berlin", Postcode = "10827"
                    },
                    BaseRent      = 500.0,
                    LivingSpace   = 100.0,
                    NumberOfRooms = 4.0,
                    ShowAddress   = true,
                    Courtage      = new CourtageInfo {
                        HasCourtage = YesNoNotApplicableType.NO
                    }
                };

                await api.RealEstates.CreateAsync(re);

                re.BaseRent += 100.0;
                await api.RealEstates.UpdateAsync(re);

                realEstate = new RealEstateItem(re, connection);
            }
            else
            {
                var re = (ApartmentRent)realEstate.RealEstate;
                re.BaseRent += 100.0;
                await api.RealEstates.UpdateAsync(re);

                re.BaseRent -= 100.0;
                await api.RealEstates.UpdateAsync(re);
            }

            var projects = await api.RealEstateProjects.GetAllAsync();

            if (projects.RealEstateProject.Any())
            {
                var project = projects.RealEstateProject.First();
                var entries = await api.RealEstateProjects.GetAllAsync(project.Id.Value);

                if (!entries.RealEstateProjectEntry.Any(e => e.RealEstateId.Value == realEstate.RealEstate.Id.Value))
                {
                    await api.RealEstateProjects.AddAsync(project.Id.Value, realEstate.RealEstate);
                }
            }

            var placement = await realEstate.PremiumPlacements.GetAsync();

            var a1 = new KeyValuePair <Attachment, string>(new Picture {
                Title = "Zimmer 1", Floorplan = false, TitlePicture = true
            }, @"..\..\..\test.jpg");
            var a2 = new KeyValuePair <Attachment, string>(new Picture {
                Title = "Zimmer 2"
            }, @"..\..\..\test.jpg");
            var a3 = new KeyValuePair <Attachment, string>(new Picture {
                Title = "Zimmer 3"
            }, @"..\..\..\test.jpg");
            var pdf = new KeyValuePair <Attachment, string>(new PDFDocument {
                Title = "Test"
            }, @"..\..\..\test.pdf");
            var video = new KeyValuePair <Attachment, string>(new StreamingVideo {
                Title = "Video"
            }, @"..\..\..\test.avi");
            var link = new KeyValuePair <Attachment, string>(new Link {
                Title = "Test", Url = "http://www.example.com/"
            }, null);

            var atts = new[] { video, a1, pdf, a2, link, a3 };

            await realEstate.Attachments.UpdateAsync(atts);

            var res = new List <RealEstate>();
            await api.RealEstates.GetAsync().ForEachAsync(x => res.Add(x.RealEstate));
        }
コード例 #3
0
        public async Task Search_Get_RequestsCorrectResource()
        {
            RestClient.RespondWith(r =>
            {
                Assert.Equal(Method.GET, r.Method);
                var url = "https://rest.sandbox-immobilienscout24.de/restapi/api/search/v1.0/search/radius";
                Assert.Equal(url, RestClient.BuildUri(r).GetLeftPart(UriPartial.Path));
                var parms = RestClient.BuildUri(r).ParseQueryString();
                Assert.Equal("apartmentrent", parms["realestatetype"]);
                Assert.Equal("1.00;2.00;10", parms["geocoordinates"]);
                Assert.Equal("full text", parms["fulltext"]);
                Assert.Equal("2000-01-02T00:00:00", parms["lastmodification"]);
                Assert.Equal("2001-03-04T00:00:00", parms["publishedafter"]);
                Assert.Equal("2002-05-06T00:00:00", parms["firstactivation"]);
                Assert.Equal("1", parms["apisearchfield1"]);
                Assert.Equal("2", parms["apisearchfield2"]);
                Assert.Equal("3", parms["apisearchfield3"]);
                Assert.Equal("-1000.00", parms["price"]);
                Assert.Equal("rentpermonth", parms["pricetype"]);
                Assert.Equal("true", parms["freeofcourtageonly"]);
                Assert.Equal("-distance", parms["sort"]);
                Assert.Equal("hp", parms["channel"]);
                Assert.Equal("user", parms["username"]);
                return(new IS24RestApi.Search.ResultList.Resultlist
                {
                    ResultlistEntries =
                    {
                        new ResultlistEntries
                        {
                            ResultlistEntry =
                            {
                                new ResultlistEntry {
                                    RealEstate = new ApartmentRent{
                                        Id = 4711
                                    }
                                },
                                new ResultlistEntry {
                                    RealEstate = new ApartmentRent{
                                        Id = 4712
                                    }
                                },
                            }
                        }
                    }
                });
            });

            var query = new RadiusQuery
            {
                RealEstateType   = Common.RealEstateType.APARTMENT_RENT,
                Latitude         = 1.0,
                Longitude        = 2.0,
                Radius           = 10,
                FullText         = "full text",
                LastModification = new DateTime(2000, 1, 2),
                PublishedAfter   = new DateTime(2001, 3, 4),
                FirstActivation  = new DateTime(2002, 5, 6),
                ApiSearchField1  = "1",
                ApiSearchField2  = "2",
                ApiSearchField3  = "3",
                Channel          = new HomepageChannel("user"),
                Parameters       = new
                {
                    Price = new DecimalRange {
                        Max = 1000
                    },
                    PriceType          = "rentpermonth",
                    FreeOfCourtageOnly = true,
                },
                Sort          = Sorting.Distance,
                SortDirection = ListSortDirection.Descending
            };

            var res = await Client.Search(query);

            Assert.Equal(2, res.ResultlistEntries[0].ResultlistEntry.Count);
            Assert.Equal(4711, res.ResultlistEntries[0].ResultlistEntry[0].RealEstate.Id);
            Assert.Equal(4712, res.ResultlistEntries[0].ResultlistEntry[1].RealEstate.Id);
        }