Пример #1
0
        public async Task <byte[]> GetImage(NtreisRETsOptions options)
        {
            StringBuilder urlBuilder = new StringBuilder(options.BaseUrl);

            HttpResponseMessage response = _client.GetAsync(urlBuilder.ToString()).Result;
            HttpContent         content  = response.Content;

            var results = await content.ReadAsByteArrayAsync();

            return(results);
        }
Пример #2
0
        public async Task <int> TotalProps(NtreisRETsOptions options)
        {
            string results;

            StringBuilder urlBuilder = new StringBuilder(options.BaseUrl);

            urlBuilder.Append("search.ashx?");
            urlBuilder.Append(options.ClassString);
            urlBuilder.Append(options.Class);
            urlBuilder.Append(options.SearchTypeString);
            urlBuilder.Append(options.SearchType);
            urlBuilder.Append(options.QueryTypeString);
            urlBuilder.Append(options.QueryType);
            urlBuilder.Append(options.QueryString);
            urlBuilder.Append(options.Query);
            if (options.QueryActive)
            {
                urlBuilder.Append(",(status=A,P)");
            }
            else
            {
                urlBuilder.Append(",(status=S)");
            }

            urlBuilder.Append(options.StandardNames);
            urlBuilder.Append(options.LimitString);
            urlBuilder.Append(options.Limit);
            urlBuilder.Append(options.IncludeTotals);

            HttpResponseMessage response = _client.GetAsync(urlBuilder.ToString()).Result;
            HttpContent         content  = response.Content;

            results = await content.ReadAsStringAsync();

            XPathDocument              xml    = new XPathDocument(new StringReader(results));
            XPathNavigator             xmlNav = xml.CreateNavigator();
            List <ResidentialProperty> rProps = new List <ResidentialProperty>();


            XPathNodeIterator xmlNavNode = xmlNav.Select("//COUNT");
            int recordsFound             = 0;

            if (xmlNavNode.MoveNext())
            {
                recordsFound = int.Parse(xmlNavNode.Current.GetAttribute("Records", ""));
            }

            return(recordsFound);
        }
Пример #3
0
        public async Task <PagedResult <ResidentialProperty> > Search(NtreisRETsOptions options)
        {
            string        results;
            StringBuilder columnBuilder = new StringBuilder();
            StringBuilder dataBuilder   = new StringBuilder();

            String[] columns = null;
            String[] data    = null;

            long recordsFound = 0;
            int  tabSpaces    = 0;

            StringBuilder urlBuilder = new StringBuilder(options.BaseUrl);

            urlBuilder.Append("search.ashx?");
            urlBuilder.Append(options.ClassString);
            urlBuilder.Append(options.Class);
            urlBuilder.Append(options.SearchTypeString);
            urlBuilder.Append(options.SearchType);
            urlBuilder.Append(options.QueryTypeString);
            urlBuilder.Append(options.QueryType);
            urlBuilder.Append(options.QueryString);
            urlBuilder.Append(options.Query);
            if (options.QueryActive)
            {
                urlBuilder.Append(",(status=A,P,AC,AOC,AKO,T,WS,W)");
            }
            else
            {
                urlBuilder.Append(",(status=S)");
            }

            urlBuilder.Append(options.StandardNames);
            urlBuilder.Append(options.LimitString);
            urlBuilder.Append(options.Limit);

            urlBuilder.Append(options.OffsetString);
            urlBuilder.Append(options.Offset);

            HttpResponseMessage response = _client.GetAsync(urlBuilder.ToString()).Result;
            HttpContent         content  = response.Content;

            results = await content.ReadAsStringAsync();

            XPathDocument  xml    = new XPathDocument(new StringReader(results));
            XPathNavigator xmlNav = xml.CreateNavigator();

            List <ResidentialProperty> rProps = new List <ResidentialProperty>();


            XPathNodeIterator xmlNavNode = xmlNav.Select("//RETS/COUNT");

            if (xmlNavNode.MoveNext())
            {
                recordsFound = int.Parse(xmlNavNode.Current.GetAttribute("Records", ""));
            }

            xmlNavNode = xmlNav.Select("//RETS/DELIMITER");
            if (xmlNavNode.MoveNext())
            {
                tabSpaces = int.Parse(xmlNavNode.Current.GetAttribute("value", ""));
            }

            xmlNavNode = xmlNav.Select("//RETS/COLUMNS");
            if (xmlNavNode.MoveNext())
            {
                //columnBuilder.Append(xmlNavNode.Current.Value);
                columns = xmlNavNode.Current.Value.Split('\t');
            }

            xmlNavNode = xmlNav.Select("//RETS/DATA");
            int x = 0;

            while (xmlNavNode.MoveNext())
            {
                dataBuilder.Clear();
                //dataBuilder.Append(xmlNavNode.Current.Value);
                data = xmlNavNode.Current.Value.Split('\t');
                //data = dataBuilder.ToString().Split(new string(' ', tabSpaces));

                if (data.Length > 0)
                {
                    rProps.Add(new ResidentialProperty());

                    for (int z = 0; z < data.Length; z++)
                    {
                        switch (columns[z])
                        {
                        case "NumberOfStories":
                            rProps[x].STORIES = data[z];
                            break;

                        case "PropertyType":
                            rProps[x].PROPERTY_TYPE = data[z];
                            break;

                        case "MLSNumber":
                            rProps[x].MLS_ID = data[z];
                            break;

                        case "Matrix_Unique_ID":
                            rProps[x].MATRIX_ID = data[z];
                            break;

                        case "StreetDirPrefix":
                            rProps[x].STREET_DIR_PREFIX = data[z];
                            break;

                        case "StreetDirSuffix":
                            rProps[x].STREET_SUFFIX = data[z];
                            break;

                        case "StreetName":
                            rProps[x].STREET_NAME = data[z];
                            break;

                        case "StreetNumber":
                            rProps[x].STREET_NUMBER = data[z];
                            break;

                        case "City":
                            rProps[x].CITY = data[z];
                            break;

                        case "StateOrProvince":
                            rProps[x].STATE = data[z];
                            break;

                        case "PostalCode":
                            rProps[x].ZIPCODE = data[z];
                            break;

                        case "PoolFeatures":
                            rProps[x].POOL_FEATURES = data[z];
                            break;

                        case "PublicRemarks":
                            rProps[x].PUBLIC_REMARKS = data[z];
                            break;

                        case "Status":
                            rProps[x].STATUS = data[z];
                            break;

                        case "ListPrice":
                            rProps[x].ZIPCODE = data[z];
                            break;

                        case "ListOfficeName":
                            rProps[x].LISTING_OFFICE = data[z];
                            break;

                        case "ListOfficeMLSID":
                            rProps[x].LISTING_OFFICE_MLS = data[z];
                            break;

                        case "ParkingSpacesGarage":
                            rProps[x].GARAGE_PARK_SPACES = data[z];
                            break;

                        case "LotSizeAreaSQFT":
                            rProps[x].LOTSIZE = data[z];
                            break;

                        case "SqFtTotal":
                            rProps[x].SQFT = data[z];
                            break;

                        case "BedsTotal":
                            rProps[x].BEDS_TOTAL = data[z];
                            break;

                        case "BathsFull":
                            rProps[x].BATHS_FULL = data[z];
                            break;

                        case "BathsHalf":
                            rProps[x].BATHS_HALF = data[z];
                            break;

                        case "BathsTotal":
                            rProps[x].BATHS_TOTAL = data[z];
                            break;

                        case "PhotoCount":
                            rProps[x].PHOTO_COUNT = data[z];
                            break;

                        case "ListOfficePhone":
                            rProps[x].LISTING_OFFICE_PHONE = data[z];
                            break;

                        case "SubdivisionName":
                            rProps[x].SUBDIVISION = data[z];
                            break;

                        case "CountyOrParish":
                            rProps[x].COUNTY = data[z];
                            break;

                        case "InternetExposure":
                            rProps[x].HIDE_PROPERTY = data[z];
                            break;

                        case "Latitude":
                            rProps[x].LATITUDE = data[z];
                            break;

                        case "Longitude":
                            rProps[x].LONGITUDE = data[z];
                            break;
                        }
                    }

                    x++;
                }
            }

            return(new PagedResult <ResidentialProperty>(rProps, options.Offset, options.Limit, recordsFound));
        }