protected Boolean isUriPartOfLogin(Uri uri) { String requestUri = uri.AbsoluteUriWithoutQuery(); String loginUri = AuthLoginUri().AbsoluteUriWithoutQuery(); requestUri = requestUri.TrimEnd(new char[] { '/', '\\' }); loginUri = loginUri.TrimEnd(new char[] { '/', '\\' }); return(String.Equals(requestUri, loginUri, StringComparison.InvariantCultureIgnoreCase)); }
/// <summary> /// Fügt der aktuellen <see cref="Uri"/> ein oder mehrere Query String Parameter hinzu. /// </summary> /// <param name="uri">Die Uri an der der Query String angefügt werden soll.</param> /// <param name="queryString">Die Query Strings die angefügt werden sollen.</param> /// <param name="encode">Angabe, ob die Werte des Query Strings Url encoded werden soll.</param> public static Uri SetQueryParam(this Uri uri, Dictionary <string, string> queryString, bool encode = true) { // Schon vorhandenen Query String ermitteln. string[] queries = uri.QueryStringAsArray(); // Übergebene Query String Parameter in ein Array konvertieren. string[] newQueries = queryString.Select(q => q.Key + "=" + ((encode) ? WebUtility.UrlEncode(q.Value) : q.Value)).ToArray(); // Alten und neuen Query String verbinden. queries = queries.Concat(newQueries).ToArray(); return(new Uri(uri.AbsoluteUriWithoutQuery() + "?" + string.Join("&", queries))); }
/// <summary> /// Fügt der aktuellen <see cref="Uri"/> ein neues Segment hinzu. /// </summary> /// <param name="uri">Die Uri an der das neue Segment angefügt werden soll.</param> /// <param name="segment">Das Segment welches angefügt werden soll.</param> /// <param name="encode">Angabe, ob das Segment Url encoded werden soll.</param> public static Uri AppendSegment(this Uri uri, string segment, bool encode = true) { // Vorhandenen Query String ermitteln. string query = uri.Query; // Neues Segment an Pfad anknüpfen. string pathA = uri.AbsoluteUriWithoutQuery().TrimEnd('/'); string pathB = segment.TrimStart('/'); var builder = new StringBuilder(); builder.Append(pathA); builder.Append("/"); builder.Append((encode) ? WebUtility.UrlEncode(pathB) : pathB); if (!string.IsNullOrWhiteSpace(query)) { builder.Append("?" + query); } return(new Uri(builder.ToString())); }