protected string GetApiPath(IMoneybirdQuery query, string apiVersion = "v2") { return(string.Join( '/', new[] { apiVersion, _administrationAccessor?.Id, _apiPath, } .Where(v => v != null)) + query.ToQueryString()); }
/// <summary> /// Stringifies an <see cref="IMoneybirdQuery"/>. /// </summary> /// <param name="query"></param> /// <returns></returns> /// <exception cref="ArgumentNullException">Throws when query is null.</exception> public static string ToQueryString(this IMoneybirdQuery query) { if (query == null) { throw new ArgumentNullException(nameof(query)); } var queryString = query.GetType() .GetProperties() .Where(p => p.GetValue(query) != null) .Aggregate( "?", (c, p) => $"{c}{p.Name.PascalToSnakeCase()}={p.GetValue(query)}&") .TrimEnd('&'); return(queryString == "?" ? "" : queryString); }