public RestTarget WithParam(string param, string value) { var uriBuilder = new UriBuilder(_serviceUri); uriBuilder.Query += "&" + string.Join("&", string.Format("{0}={1}", Uri.EscapeDataString(param), Uri.EscapeDataString(value))); var serviceUri = uriBuilder.Uri; UriHacks.LeaveDotsAndSlashesEscaped(serviceUri); if (!_serviceUri.IsBaseOf(serviceUri)) { throw new ArgumentException("Failed to resolve uri sensibly", "param"); } return(new RestTarget(_fudgeContext, serviceUri)); }
public RestTarget Resolve(string method, params Tuple <string, string>[] queryParams) { var safeMethod = Uri.EscapeDataString(method); var uriBuilder = new UriBuilder(_serviceUri); uriBuilder.Path = Path.Combine(uriBuilder.Path, safeMethod); uriBuilder.Query = string.Join("&", queryParams.Select(p => string.Format("{0}={1}", Uri.EscapeDataString(p.Item1), Uri.EscapeDataString(p.Item2)))); var serviceUri = uriBuilder.Uri; UriHacks.LeaveDotsAndSlashesEscaped(serviceUri); if (!_serviceUri.IsBaseOf(serviceUri)) { throw new ArgumentException("Failed to resolve uri sensibly", "method"); } var segments = serviceUri.Segments; if (segments[segments.Length - 1] != safeMethod && safeMethod != ".") { throw new ArgumentException("Failed to resolve uri sensibly", "method"); } return(new RestTarget(_fudgeContext, serviceUri)); }