Exemplo n.º 1
0
        /// <summary>
        /// Given a latitude and a longitude, searches for up to 20 places that can be used as
        /// a placeId when updating a status.
        /// </summary>
        /// <param name="latitude"></param>
        /// <param name="longitude"></param>
        /// <param name="accuracy"></param>
        /// <param name="granularity"></param>
        /// <param name="maxResults"></param>
        /// <returns></returns>
        public TwitterPlace[] ReverseGeoCode(double latitude, double longitude, string accuracy = null,
                                             TwitterPlaceType granularity = TwitterPlaceType.Neighborhood,
                                             int?maxResults = null)
        {
            var queryBuilder = new StringBuilder();

            queryBuilder.AppendFormat("?lat={0}&long={1}&granularity={2}&",
                                      latitude, longitude, granularity.ToString().ToLowerInvariant());

            if (!String.IsNullOrEmpty(accuracy))
            {
                queryBuilder.AppendFormat("accuracy={0}&", accuracy);
            }
            if (maxResults.HasValue)
            {
                queryBuilder.AppendFormat("max_results={0}", maxResults);
            }

            var uri = new Uri(this.CommandBaseUri + "/reverse_geocode.json" + queryBuilder.ToString().TrimEnd('&'));

            TwitterPlace[] places = null;
            try
            {
                var response = this.TwitterApi.ExecuteUnauthenticatedRequest(uri);

                var jsonObj = JObject.Parse(response);
                places = JsonConvert.DeserializeObject <TwitterPlace[]>(jsonObj["result"]["places"].ToString());
            }
            catch (TwitterException e)
            {
                if (e.StatusCode != HttpStatusCode.NotFound)
                {
                    throw;
                }
            }

            return(places);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Search for places that can be attached to a statuses/update.
        /// </summary>
        /// <param name="latitude"></param>
        /// <param name="longitude"></param>
        /// <param name="query"></param>
        /// <param name="ipAddress"></param>
        /// <param name="granularity"></param>
        /// <param name="accuracy"></param>
        /// <param name="maxResults"></param>
        /// <param name="containedWithin"></param>
        /// <param name="streetAddress"></param>
        /// <returns></returns>
        public TwitterGeoSimilarPlaces Search(double?latitude, double?longitude, string query, IPAddress ipAddress,
                                              TwitterPlaceType granularity = TwitterPlaceType.Neighborhood,
                                              string accuracy      = null, int?maxResults = null, string containedWithin = null,
                                              string streetAddress = null)
        {
            if (!latitude.HasValue && !longitude.HasValue &&
                String.IsNullOrEmpty(query) && ipAddress == null)
            {
                throw new ArgumentException("At least one of the following parameters must be provided to " +
                                            "this resource: lat, long, ip, or query.");
            }

            var queryBuilder = new StringBuilder();

            queryBuilder.AppendFormat("?granularity={0}&", granularity.ToString().ToLowerInvariant());

            if (latitude.HasValue)
            {
                queryBuilder.AppendFormat("lat={0}&", latitude);
            }
            if (longitude.HasValue)
            {
                queryBuilder.AppendFormat("long={0}&", longitude);
            }
            if (!String.IsNullOrEmpty(query))
            {
                queryBuilder.AppendFormat("query={0}&", query);
            }
            if (ipAddress != null)
            {
                queryBuilder.AppendFormat("ip={0}&", ipAddress.ToString());
            }
            if (!String.IsNullOrEmpty(accuracy))
            {
                queryBuilder.AppendFormat("accuracy={0}&", accuracy);
            }
            if (maxResults.HasValue)
            {
                queryBuilder.AppendFormat("max_results={0}&", maxResults);
            }
            if (!String.IsNullOrEmpty(containedWithin))
            {
                queryBuilder.AppendFormat("contained_within=(0}&", containedWithin);
            }
            if (!String.IsNullOrEmpty(streetAddress))
            {
                queryBuilder.AppendFormat("attribute:street_address={0}", streetAddress);
            }

            var uri = new Uri(this.CommandBaseUri + "/search.json" + queryBuilder.ToString().TrimEnd('&'));

            TwitterGeoSimilarPlaces places = null;

            try
            {
                var response = this.TwitterApi.ExecuteUnauthenticatedRequest(uri);

                var jsonObj = JObject.Parse(response);
                places = TwitterObject.Parse <TwitterGeoSimilarPlaces>(jsonObj["result"].ToString());
            }
            catch (TwitterException e)
            {
                if (e.StatusCode != HttpStatusCode.NotFound)
                {
                    throw;
                }
            }

            return(places);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Search for places that can be attached to a statuses/update. 
        /// </summary>
        /// <param name="latitude"></param>
        /// <param name="longitude"></param>
        /// <param name="query"></param>
        /// <param name="ipAddress"></param>
        /// <param name="granularity"></param>
        /// <param name="accuracy"></param>
        /// <param name="maxResults"></param>
        /// <param name="containedWithin"></param>
        /// <param name="streetAddress"></param>
        /// <returns></returns>
        public TwitterGeoSimilarPlaces Search(double? latitude, double? longitude, string query, IPAddress ipAddress,
                                              TwitterPlaceType granularity = TwitterPlaceType.Neighborhood,
                                              string accuracy = null, int? maxResults = null, string containedWithin = null,
                                              string streetAddress = null)
        {
            if (!latitude.HasValue && !longitude.HasValue &&
                String.IsNullOrEmpty(query) && ipAddress == null)
                throw new ArgumentException("At least one of the following parameters must be provided to " +
                                            "this resource: lat, long, ip, or query.");

            var queryBuilder = new StringBuilder();
            queryBuilder.AppendFormat("?granularity={0}&", granularity.ToString().ToLowerInvariant());

            if (latitude.HasValue)
                queryBuilder.AppendFormat("lat={0}&", latitude);
            if (longitude.HasValue)
                queryBuilder.AppendFormat("long={0}&", longitude);
            if (!String.IsNullOrEmpty(query))
                queryBuilder.AppendFormat("query={0}&", query);
            if (ipAddress != null)
                queryBuilder.AppendFormat("ip={0}&", ipAddress.ToString());
            if (!String.IsNullOrEmpty(accuracy))
                queryBuilder.AppendFormat("accuracy={0}&", accuracy);
            if (maxResults.HasValue)
                queryBuilder.AppendFormat("max_results={0}&", maxResults);
            if (!String.IsNullOrEmpty(containedWithin))
                queryBuilder.AppendFormat("contained_within=(0}&", containedWithin);
            if (!String.IsNullOrEmpty(streetAddress))
                queryBuilder.AppendFormat("attribute:street_address={0}", streetAddress);

            var uri = new Uri(this.CommandBaseUri + "/search.json" + queryBuilder.ToString().TrimEnd('&'));

            TwitterGeoSimilarPlaces places = null;
            try
            {
                var response = this.TwitterApi.ExecuteUnauthenticatedRequest(uri);

                var jsonObj  = JObject.Parse(response);
                places       = TwitterObject.Parse<TwitterGeoSimilarPlaces>(jsonObj["result"].ToString());
            }
            catch (TwitterException e)
            {
                if (e.StatusCode != HttpStatusCode.NotFound)
                    throw;
            }

            return places;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Given a latitude and a longitude, searches for up to 20 places that can be used as 
        /// a placeId when updating a status.
        /// </summary>
        /// <param name="latitude"></param>
        /// <param name="longitude"></param>
        /// <param name="accuracy"></param>
        /// <param name="granularity"></param>
        /// <param name="maxResults"></param>
        /// <returns></returns>
        public TwitterPlace[] ReverseGeoCode(double latitude, double longitude, string accuracy = null,
                                             TwitterPlaceType granularity = TwitterPlaceType.Neighborhood,
                                             int? maxResults = null)
        {
            var queryBuilder = new StringBuilder();
            queryBuilder.AppendFormat("?lat={0}&long={1}&granularity={2}&", 
                                      latitude, longitude, granularity.ToString().ToLowerInvariant());

            if (!String.IsNullOrEmpty(accuracy))
                queryBuilder.AppendFormat("accuracy={0}&", accuracy);
            if (maxResults.HasValue)
                queryBuilder.AppendFormat("max_results={0}", maxResults);

            var uri = new Uri(this.CommandBaseUri + "/reverse_geocode.json" + queryBuilder.ToString().TrimEnd('&'));

            TwitterPlace[] places = null;
            try
            {
                var response    = this.TwitterApi.ExecuteUnauthenticatedRequest(uri);

                var jsonObj     = JObject.Parse(response);
                places          = JsonConvert.DeserializeObject<TwitterPlace[]>(jsonObj["result"]["places"].ToString());
                                   
            }
            catch (TwitterException e)
            {
                if (e.StatusCode != HttpStatusCode.NotFound)
                    throw;
            }

            return places;
        }