diff --git a/src/Client/Client.cs b/src/Client/Client.cs index 9139c58..61c7dd1 100644 --- a/src/Client/Client.cs +++ b/src/Client/Client.cs @@ -36,8 +36,7 @@ public class Client public async Task SearchdomainListAsync() { - var url = $"{baseUri}/Searchdomain/List?apiKey={HttpUtility.UrlEncode(apiKey)}"; - return await GetUrlAndProcessJson(url); + return await GetUrlAndProcessJson(GetUrl($"{baseUri}/Searchdomain", "List", apiKey, [])); } public async Task SearchdomainDeleteAsync() @@ -47,8 +46,10 @@ public class Client public async Task SearchdomainDeleteAsync(string searchdomain) { - var url = $"{baseUri}/Searchdomain/Delete?apiKey={HttpUtility.UrlEncode(apiKey)}&searchdomain={HttpUtility.UrlEncode(searchdomain)}"; - return await GetUrlAndProcessJson(url); + return await GetUrlAndProcessJson(GetUrl($"{baseUri}/Searchdomain", "Delete", apiKey, new Dictionary() + { + {"searchdomain", searchdomain} + })); } public async Task SearchdomainCreateAsync() @@ -58,8 +59,10 @@ public class Client public async Task SearchdomainCreateAsync(string searchdomain) { - var url = $"{baseUri}/Searchdomain/Create?apiKey={HttpUtility.UrlEncode(apiKey)}&searchdomain={HttpUtility.UrlEncode(searchdomain)}"; - return await GetUrlAndProcessJson(url); + return await GetUrlAndProcessJson(GetUrl($"{baseUri}/Searchdomain", "Create", apiKey, new Dictionary() + { + {"searchdomain", searchdomain} + })); } public async Task SearchdomainUpdateAsync(string newName, string settings = "{}") @@ -71,8 +74,12 @@ public class Client public async Task SearchdomainUpdateAsync(string searchdomain, string newName, string settings = "{}") { - var url = $"{baseUri}/Searchdomain/Update?apiKey={HttpUtility.UrlEncode(apiKey)}&searchdomain={HttpUtility.UrlEncode(searchdomain)}&newName={HttpUtility.UrlEncode(newName)}&settings={HttpUtility.UrlEncode(settings)}"; - return await GetUrlAndProcessJson(url); + return await GetUrlAndProcessJson(GetUrl($"{baseUri}/Searchdomain", "Update", apiKey, new Dictionary() + { + {"searchdomain", searchdomain}, + {"newName", newName}, + {"settings", settings} + })); } public async Task EntityQueryAsync(string query) @@ -82,8 +89,11 @@ public class Client public async Task EntityQueryAsync(string searchdomain, string query) { - var url = $"{baseUri}/Entity/Query?apiKey={HttpUtility.UrlEncode(apiKey)}&searchdomain={HttpUtility.UrlEncode(searchdomain)}&query={HttpUtility.UrlEncode(query)}"; - return await GetUrlAndProcessJson(url); + return await GetUrlAndProcessJson(GetUrl($"{baseUri}/Entity", "Query", apiKey, new Dictionary() + { + {"searchdomain", searchdomain}, + {"query", query} + })); } public async Task EntityIndexAsync(List jsonEntity) @@ -93,9 +103,8 @@ public class Client public async Task EntityIndexAsync(string jsonEntity) { - var url = $"{baseUri}/Entity/Index?apiKey={HttpUtility.UrlEncode(apiKey)}"; var content = new StringContent(jsonEntity, Encoding.UTF8, "application/json"); - return await PostUrlAndProcessJson(url, content);//new FormUrlEncodedContent(values)); + return await PostUrlAndProcessJson(GetUrl($"{baseUri}/Entity", "Index", apiKey, []), content);//new FormUrlEncodedContent(values)); } public async Task EntityListAsync(bool returnEmbeddings = false) @@ -138,4 +147,17 @@ public class Client ?? throw new Exception($"Failed to deserialize JSON to type {typeof(T).Name}"); return result; } + + public static string GetUrl(string baseUri, string endpoint, string apiKey, Dictionary parameters) + { + var uriBuilder = new UriBuilder($"{baseUri}/{endpoint}"); + var query = HttpUtility.ParseQueryString(uriBuilder.Query); + if (apiKey.Length > 0) query["apiKey"] = apiKey; + foreach (var param in parameters) + { + query[param.Key] = param.Value; + } + uriBuilder.Query = query.ToString() ?? ""; + return uriBuilder.Uri.ToString(); + } }