private static string RefinementString(SearchRecommendationRefinement refinement, int index) { string output = $"{refinement.id}-{index}"; if (!string.IsNullOrEmpty(refinement.source)) { output += ("-" + refinement.source); } return(output); }
public static void AddBrowseExploreParams(this FoursquareRequest req, SearchRecommendationFilters filters = null, FoursquareLocation currentLocation = null, FoursquareLocation location = null, FoursquareLocation ne = null, FoursquareLocation sw = null, string near = null, string nearGeoId = null) { if (filters != null) { if (!string.IsNullOrEmpty(filters.query)) { req.AddParam("query", filters.query); } if (filters.intent != null) { req.AddParam("intent", filters.intent.id); } if (filters.subintent != null) { req.AddParam("subintent", filters.subintent.id); } if (filters.openAt != null) { if (filters.openAt.openNow) { req.AddParam("openNow", "1"); } else if (filters.openAt.localDay >= 0 && !string.IsNullOrEmpty(filters.openAt.localTime)) { req.AddParam("localDay", filters.openAt.localDay == 0 ? "7" : filters.openAt.localDay.ToString()); req.AddParam("localTime", filters.openAt.localTime); } } if (filters.refinements != null && filters.refinements.Count > 0) { var refinements = new Dictionary <string, string>(); for (int i = 0; i < filters.refinements.Count; i++) { SearchRecommendationRefinement item = filters.refinements[i]; if (!string.IsNullOrEmpty(item.groupType)) { if (refinements.ContainsKey(item.groupType)) { string val = refinements[item.groupType]; refinements[item.groupType] = val + "," + RefinementString(item, i); } else { refinements.Add(item.groupType, RefinementString(item, i)); } } } foreach (var item in refinements.Keys) { req.AddParam(item, refinements[item]); } } } if (ne == null && sw == null) { req.AddLocationParams(location); if (!string.IsNullOrEmpty(near)) { req.AddParam("near", near); if (!string.IsNullOrEmpty(nearGeoId)) { req.AddParam("nearGeoId", nearGeoId); } } } else { req.AddParam("ne", LatLngFromLocation(ne)); req.AddParam("sw", LatLngFromLocation(sw)); } if (currentLocation != null) { req.AddParam("userll", LatLngFromLocation(currentLocation)); } }