Ejemplo n.º 1
0
        /// <summary>
        /// Format a search URL using the configured base url, a path format template, and the search parameters.  This method should not
        /// typically be called directly.  Instead call the methods on each of the client modules which will in turn use this method to create
        /// the appropriate URL.
        /// </summary>
        /// <param name="pathFormat">The format string for the RIDB API function being called.</param>
        /// <param name="pathParams">The parameters which should be applied to the format string.</param>
        /// <param name="searchParams">The RIDB search parameters object.</param>
        /// <returns>A well formed RIDB API URL</returns>
        public string FormatSearchUrl(string pathFormat, string[] pathParams, RIDBSearchParameters searchParams)
        {
            var qp = new Dictionary <string, string>();

            if (searchParams != null)
            {
                if (searchParams.Query != null && searchParams.Query.Length > 0)
                {
                    qp["query"] = searchParams.Query;
                }
                if (searchParams.Limit.HasValue)
                {
                    qp["limit"] = searchParams.Limit.Value.ToString();
                }
                if (searchParams.Offset.HasValue)
                {
                    qp["offset"] = searchParams.Offset.Value.ToString();
                }
                if (searchParams.Latitude.HasValue)
                {
                    qp["latitude"] = searchParams.Latitude.Value.ToString();
                }
                if (searchParams.Longitude.HasValue)
                {
                    qp["longitude"] = searchParams.Longitude.Value.ToString();
                }
                if (searchParams.Radius.HasValue)
                {
                    qp["radius"] = searchParams.Radius.Value.ToString();
                }
                if (searchParams.StateList != null && searchParams.StateList.Length > 0)
                {
                    qp["state"] = searchParams.StateList;
                }
                if (searchParams.ActivityList != null && searchParams.ActivityList.Length > 0)
                {
                    qp["activity"] = searchParams.ActivityList;
                }
                if (searchParams.LastUpdated.HasValue)
                {
                    qp["lastupdated"] = searchParams.LastUpdated.Value.ToString("yyyy-MM-dd");
                }
            }
            return(FormatUrl(pathFormat, pathParams, qp));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Returns all results from a call.  When searching RIDB, pages of results are generated.  This method
        /// will call a method repeatedly to aggregate all of the results from all pages of results.  This method should not
        /// typically be called directly.  Instead call the methods on each of the client modules which will in turn use this method if
        /// the module function requires retrieval of all results.
        /// </summary>
        /// <typeparam name="T">The type of RIDB object included in the results.</typeparam>
        /// <param name="searchParams">Any search parameters</param>
        /// <param name="pager">A delegate that is expected to return a single page of results.</param>
        /// <returns>An array of all of the results from all result pages.</returns>
        public T[] GetAll <T>(RIDBSearchParameters searchParams, GetPageDelegate <T> pager)
        {
            if (searchParams == null)
            {
                searchParams = new RIDBSearchParameters();
            }
            searchParams.Offset = 0;
            searchParams.Limit  = 50;

            var  results = new List <T>();
            bool atEnd   = false;

            while (!atEnd)
            {
                var page = pager(searchParams);
                results.AddRange(page.Data);
                atEnd = (results.Count >= page.Metadata.Results.TotalCount) || (page.Metadata.Results.CurrentCount == 0);
                searchParams.Offset += page.Metadata.Results.CurrentCount;
            }

            return(results.ToArray());
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Search all of the campsites within RIDB and return matches.  The Query, Limit, and Offset search
        /// parameters are supported.  The Query parameter is applied to the campsite name, type, loop, type of use
        /// (Overnight/Day), and campsite accessible (Yes/No) fields.
        /// </summary>
        /// <param name="searchParams">Search parameters to use in the search.</param>
        /// <returns>A single page of RIDB search results.</returns>
        public RIDBList <RIDBCampsite> Search(RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/campsites", new string[0], searchParams);

            return(Client.MakeRequest <RIDBList <RIDBCampsite> >(url));
        }
        /// <summary>
        /// Search for a specific set of activities.  Search parameters used by the search are
        /// Query, Limit, and Offset.  Query searches are executed against the activity name.
        /// </summary>
        /// <param name="searchParams">Search parameters to use in the search.</param>
        /// <returns>A single page of RIDB search results.</returns>
        public RIDBList <RIDBActivity> Search(RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/activities", new string[0], searchParams);

            return(Client.MakeRequest <RIDBList <RIDBActivity> >(url));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Search the facilities associated with a specific organization and return matches.  All search
        /// parameters are supported.  The Query parameter is applied to the facility name, description, keywords, and stay limit fields.
        /// </summary>
        /// <param name="orgId">The id for the organization.</param>
        /// <param name="searchParams">Search parameters to use in the search.</param>
        /// <returns>A single page of RIDB search results.</returns>
        public RIDBList <RIDBFacility> SearchFacilities(int orgId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/organizations/{0}/facilities", new string[] { orgId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBFacility> >(url));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Search all of the recreation areas within RIDB and return matches.  All search parameters are supported.  The
        /// Query parameter is applied to the recreation area name, description, keywords, and stay limit fields.
        /// </summary>
        /// <param name="searchParams">Search parameters to use in the search.</param>
        /// <returns>A single page of RIDB search results.</returns>
        public RIDBList <RIDBRecArea> Search(RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/recareas", new string[0], searchParams);

            return(Client.MakeRequest <RIDBList <RIDBRecArea> >(url));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Search the media associated with a recreation area.  The Query, Offset, and Limit search parameters are supported.
        /// Query is applied to the title, subtitle, description, credits, and media type fields.
        /// </summary>
        /// <param name="recAreaId">The id of the recreation area.</param>
        /// <param name="searchParams">The search parameters for the search.</param>
        /// <returns>A page of RIDB search results.</returns>
        public RIDBList <RIDBEntityMedia> SearchMedia(int recAreaId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/recareas/{0}/media", new string[] { recAreaId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBEntityMedia> >(url));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Search the attributes associated with a specific permit entrance. The search utilizes the following search parameters:
        /// Query, Limit, and Offset.  Query is performed on the attribute name field.
        /// </summary>
        /// <param name="permitEntranceId">The id of the permit entrance.</param>
        /// <param name="searchParams">The search parameters to apply to the search.</param>
        /// <returns>A page of RIDB search results.</returns>
        public RIDBList <RIDBAttribute> SearchAttributes(int permitEntranceId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/permitentrances/{0}/attributes", new string[] { permitEntranceId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBAttribute> >(url));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Search the permit entrances associated with a facility.  The Query, Offset, and Limit search parameters are supported.
        /// Query is applied to the permit name, type (Campground, Cabin, etc.), description, accessible (Yes/No), district, and town fields.
        /// </summary>
        /// <param name="facilityId">The id of the facility.</param>
        /// <param name="searchParams">The search parameters for the search.</param>
        /// <returns>A page of RIDB search results.</returns>
        public RIDBList <RIDBPermitEntrance> SearchPermitEntrances(int facilityId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/facilities/{0}/permitentrances", new string[] { facilityId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBPermitEntrance> >(url));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Search the tours associated with a facility.  The Query, Offset, and Limit search parameters are supported.
        /// Query is applied to the tour name, type, description, and accessible (Yes/No) fields.
        /// </summary>
        /// <param name="facilityId">The id of the facility.</param>
        /// <param name="searchParams">The search parameters for the search.</param>
        /// <returns>A page of RIDB search results.</returns>
        public RIDBList <RIDBTour> SearchTours(int facilityId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/facilities/{0}/tours", new string[] { facilityId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBTour> >(url));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Search the addresses for a specific facility.  The search utilizes the following search parameters:
        /// Query, Limit, and Offset.  The Query parameter is applied to the city, state, postal code, country code,
        /// and street address fields.
        /// </summary>
        /// <param name="facilityId">The id for the campsite.</param>
        /// <param name="searchParams">Search parameters to apply to the search.</param>
        /// <returns>A page of RIDB search results.</returns>
        public RIDBList <RIDBFacilityAddress> SearchAddresses(int facilityId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/facilities/{0}/facilityaddresses", new string[] { facilityId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBFacilityAddress> >(url));
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Search facility addresses for all facilities and return matches. The Query, Limit, and Offset search
        /// parameters are supported.  The Query parameter is applied to the city, state, postal code, country code,
        /// and street address fields.
        /// </summary>
        /// <param name="searchParams">Search parameters to use in the search.</param>
        /// <returns>A single page of RIDB search results.</returns>
        public RIDBList <RIDBFacilityAddress> SearchAddresses(RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/facilityaddresses", new string[0], searchParams);

            return(Client.MakeRequest <RIDBList <RIDBFacilityAddress> >(url));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Search all of the organizations within RIDB and return matches.  The Query, Limit, and Offset search
        /// parameters are supported.  The Query parameter is applied to the organization name and organization abbreviated name fields.
        /// </summary>
        /// <param name="searchParams">Search parameters to use in the search.</param>
        /// <returns>A single page of RIDB search results.</returns>
        public RIDBList <RIDBOrganization> Search(RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/organizations/", new string[0], searchParams);

            return(Client.MakeRequest <RIDBList <RIDBOrganization> >(url));
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Search the permitted equipment for a specific campsite.  The search utilizes the following search parameters:
        /// Query, Limit, and Offset.  Query is performed on the equipment name and max length (in feet) fields.
        /// </summary>
        /// <param name="campsiteId">The id for the campsite.</param>
        /// <param name="searchParams">Search parameters to apply to the search.</param>
        /// <returns>A page of RIDB search results.</returns>
        public RIDBList <RIDBPermittedEquipment> SearchPermittedEquipment(int campsiteId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/campsites/{0}/permittedequipment", new string[] { campsiteId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBPermittedEquipment> >(url));
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Search the events associated with a recreation area.  The Query, Offset, and Limit search parameters are supported.
        /// Query is applied to the  event name, start/end date, description, age group, ADA access, fee description, scope
        /// description, and type description fields.
        /// </summary>
        /// <param name="recAreaId">The id of the recreation area.</param>
        /// <param name="searchParams">The search parameters for the search.</param>
        /// <returns>A page of RIDB search results.</returns>
        public RIDBList <RIDBEvent> SearchEvents(int recAreaId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/recareas/{0}/events", new string[] { recAreaId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBEvent> >(url));
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Search all of the permit entrances within RIDB and return matches.  The Query, Limit, and Offset search
        /// parameters are supported.  The Query parameter is applied to the permit name, type (Campground, Cabin, etc.),
        /// description, accessible (Yes/No), district, and town fields.
        /// </summary>
        /// <param name="searchParams">Search parameters to use in the search.</param>
        /// <returns>A single page of RIDB search results.</returns>
        public RIDBList <RIDBPermitEntrance> Search(RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/permitentrances", new string[0], searchParams);

            return(Client.MakeRequest <RIDBList <RIDBPermitEntrance> >(url));
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Search the activities associated with a recreation area.  The Query, Offset, and Limit search parameters are supported.
        /// Query is applied to the activity name field.
        /// </summary>
        /// <param name="recAreaId">The id of the recreation area.</param>
        /// <param name="searchParams">The search parameters for the search.</param>
        /// <returns>A page of RIDB search results.</returns>
        public RIDBList <RIDBRecAreaActivity> SearchActivities(int recAreaId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/recareas/{0}/activities", new string[] { recAreaId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBRecAreaActivity> >(url));
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Search all of the links within RIDB and return matches.  The Query, Limit, and Offset search
        /// parameters are supported.  The Query parameter is applied to the title, description, and link type fields.
        /// </summary>
        /// <param name="searchParams">Search parameters to use in the search.</param>
        /// <returns>A single page of RIDB search results.</returns>
        public RIDBList <RIDBEntityLink> Search(RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/links", new string[0], searchParams);

            return(Client.MakeRequest <RIDBList <RIDBEntityLink> >(url));
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Search the recreation areas associated with a specific organization and return matches.  All search
        /// parameters are supported.  The Query parameter is applied to the recreation area name, description, keywords, and stay limit fields.
        /// </summary>
        /// <param name="orgId">The id for the organization.</param>
        /// <param name="searchParams">Search parameters to use in the search.</param>
        /// <returns>A single page of RIDB search results.</returns>
        public RIDBList <RIDBRecArea> SearchRecAreas(int orgId, RIDBSearchParameters searchParams)
        {
            var url = Client.FormatSearchUrl("/organizations/{0}/recareas", new string[] { orgId.ToString() }, searchParams);

            return(Client.MakeRequest <RIDBList <RIDBRecArea> >(url));
        }