public Swagger.PagedResultOfContent GetThreadListByForumId(Guid forumId, string forumShortName, string localeName, string[] shortNames, DateTime?since, /*ThreadFilter[] threadFilters,*/ ThreadSortOrder?sortOrder, SortDirection?sortDirection, int startRow, int maxRows, AdditionalThreadDataOptions additionalThreadDataOptions)
        {
            localeName = GetCorrectLocale(localeName);
            var c      = new Swagger.ThreadsClient();
            var filter = $"(f0 eq '{FirstUpperCase(forumShortName)}' or f0 eq '{FirstLowerCase(forumShortName)}')";

            filter += $" and languagelocale eq '{localeName}'";
            if (shortNames != null && shortNames.Length > 0)
            {
                filter += $" and f1 eq '{shortNames[0]}'";
                if (shortNames.Length > 1)
                {
                    filter += $" and f2 eq '{shortNames[1]}'";
                }
            }
            if (since.HasValue)
            {
                DateTimeOffset dto = since.Value;
                filter += " and modifieddate gt " + dto.ToString("o", CultureInfo.InvariantCulture);
            }
            var order = "modifieddate desc";

            Log?.Invoke($"GetThreadListByForumId: filter={filter}, order={order}");
            try
            {
                var res = c.QueryAsyncAsync(filter, order, maxRows, startRow - 1, System.Threading.CancellationToken.None).Result;
                return(res);
            }
            catch (AggregateException ae)
            {
                LogExp?.Invoke($"EXP: GetThreadListByForumId: filter={filter}, order={order}", ae.InnerException);
                throw ae;
            }
        }
        public Swagger.Content GetThread(Guid threadId, AdditionalMessageDataOptions additionalMessageDataOptions)
        {
            var c = new Swagger.ThreadsClient();

            Log?.Invoke($"GetThread: threadId={threadId}");
            try
            {
                return(c.GetAsyncAsync(threadId).Result);
            }
            catch (AggregateException ae)
            {
                LogExp?.Invoke("GetThread", ae.InnerException);
                throw ae.InnerException;
                throw;
            }
        }