/// <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)); }
/// <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()); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }