diff --git a/Test/Program.cs b/Test/Program.cs
new file mode 100644
index 0000000..ec0f011
--- /dev/null
+++ b/Test/Program.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Text.Json;
+using WordPressPCL;
+using WordPressPCL.Client;
+using WordPressPCL.Models;
+using WordPressPCL.Utility;
+
+namespace Test
+{
+ class Program
+ {
+ public static string SiteUri = "mysite.wordpress.com";
+ public static string WordPressUri = $"https://public-api.wordpress.com/wp/v2/sites/{SiteUri}/";
+
+ static async Task Main(string[] args)
+ {
+ var client = new WordPressClient(WordPressUri, "");
+
+ var queryBuilder = new PostsQueryBuilder()
+ {
+ Page = 1,
+ PerPage = 15,
+ OrderBy = PostsOrderBy.Title,
+ Order = Order.ASC,
+ Statuses = new Status[] { Status.Publish },
+ Embed = true
+ };
+ var queryresult = await client.Posts.Query(queryBuilder);
+
+ Console.WriteLine(queryresult.Total);
+ Console.WriteLine(queryresult.TotalPages);
+ Console.WriteLine(JsonSerializer.Serialize(queryresult.Count()));
+ }
+ }
+}
diff --git a/Test/Test.csproj b/Test/Test.csproj
new file mode 100644
index 0000000..219de8a
--- /dev/null
+++ b/Test/Test.csproj
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+ Exe
+ net5.0
+
+
+
diff --git a/WordPressPCL/Client/CRUDOperation.cs b/WordPressPCL/Client/CRUDOperation.cs
index e631346..f7ff958 100644
--- a/WordPressPCL/Client/CRUDOperation.cs
+++ b/WordPressPCL/Client/CRUDOperation.cs
@@ -131,9 +131,12 @@ public Task GetByID(object ID, bool embed = false, bool useAuth = false)
/// Query builder with specific parameters
/// Send request with authentication header
/// List of filtered result
- public Task> Query(QClass queryBuilder, bool useAuth = false)
+ public async Task> Query(QClass queryBuilder, bool useAuth = false)
{
- return HttpHelper.GetRequest>($"{DefaultPath}{MethodPath}{queryBuilder.BuildQueryURL()}", false, useAuth);
+ var result = await HttpHelper.GetRequest>($"{DefaultPath}{MethodPath}{queryBuilder.BuildQueryURL()}", false, useAuth);
+ int total = System.Convert.ToInt32(HttpHelper.LastResponseHeaders.GetValues("X-WP-Total").FirstOrDefault());
+ int totalpages = System.Convert.ToInt32(HttpHelper.LastResponseHeaders.GetValues("X-WP-TotalPages").FirstOrDefault());
+ return new QueryResult(result, total, totalpages);
}
///
diff --git a/WordPressPCL/Client/Media.cs b/WordPressPCL/Client/Media.cs
index 5c3a739..8d627b0 100644
--- a/WordPressPCL/Client/Media.cs
+++ b/WordPressPCL/Client/Media.cs
@@ -159,9 +159,12 @@ public Task GetByID(object ID, bool embed = false, bool useAuth = fal
/// Query builder with specific parameters
/// Send request with authentication header
/// List of filtered result
- public Task> Query(MediaQueryBuilder queryBuilder, bool useAuth = false)
+ public async Task> Query(MediaQueryBuilder queryBuilder, bool useAuth = false)
{
- return _httpHelper.GetRequest>($"{_defaultPath}{_methodPath}{queryBuilder.BuildQueryURL()}", false, useAuth);
+ var results = await _httpHelper.GetRequest>($"{_defaultPath}{_methodPath}{queryBuilder.BuildQueryURL()}", false, useAuth);
+ int total = System.Convert.ToInt32(_httpHelper.LastResponseHeaders.GetValues("X-WP-Total").FirstOrDefault());
+ int totalpages = System.Convert.ToInt32(_httpHelper.LastResponseHeaders.GetValues("X-WP-TotalPages").FirstOrDefault());
+ return new QueryResult(results, total, totalpages);
}
///
diff --git a/WordPressPCL/Client/Taxonomies.cs b/WordPressPCL/Client/Taxonomies.cs
index d9e6b74..58448f6 100644
--- a/WordPressPCL/Client/Taxonomies.cs
+++ b/WordPressPCL/Client/Taxonomies.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
using WordPressPCL.Interfaces;
using WordPressPCL.Models;
@@ -78,7 +79,7 @@ public Task GetByID(object ID, bool embed = false, bool useAuth = fals
/// Query builder with specific parameters
/// Send request with authentication header
/// List of filtered result
- public async Task> Query(TaxonomiesQueryBuilder queryBuilder, bool useAuth = false)
+ public async Task> Query(TaxonomiesQueryBuilder queryBuilder, bool useAuth = false)
{
List entities = new List();
var entities_dict = await _httpHelper.GetRequest>($"{_defaultPath}{_methodPath}{queryBuilder.BuildQueryURL()}", false, useAuth).ConfigureAwait(false);
@@ -86,7 +87,9 @@ public async Task> Query(TaxonomiesQueryBuilder queryBuild
{
entities.Add(ent.Value);
}
- return entities;
+ int total = System.Convert.ToInt32(_httpHelper.LastResponseHeaders.GetValues("X-WP-Total").FirstOrDefault());
+ int totalpages = System.Convert.ToInt32(_httpHelper.LastResponseHeaders.GetValues("X-WP-TotalPages").FirstOrDefault());
+ return new QueryResult(entities, total, totalpages);
}
}
}
\ No newline at end of file
diff --git a/WordPressPCL/Client/Users.cs b/WordPressPCL/Client/Users.cs
index d833037..e1ee30f 100644
--- a/WordPressPCL/Client/Users.cs
+++ b/WordPressPCL/Client/Users.cs
@@ -98,9 +98,12 @@ public Task GetByID(object ID, bool embed = false, bool useAuth = false)
/// Query builder with specific parameters
/// Send request with authentication header
/// List of filtered result
- public Task> Query(UsersQueryBuilder queryBuilder, bool useAuth = false)
+ public async Task> Query(UsersQueryBuilder queryBuilder, bool useAuth = false)
{
- return _httpHelper.GetRequest>($"{_defaultPath}{METHOD_PATH}{queryBuilder.BuildQueryURL()}", false, useAuth);
+ var results = await _httpHelper.GetRequest>($"{_defaultPath}{METHOD_PATH}{queryBuilder.BuildQueryURL()}", false, useAuth);
+ int total = System.Convert.ToInt32(_httpHelper.LastResponseHeaders.GetValues("X-WP-Total").FirstOrDefault());
+ int totalpages = System.Convert.ToInt32(_httpHelper.LastResponseHeaders.GetValues("X-WP-TotalPages").FirstOrDefault());
+ return new QueryResult(results, total, totalpages);
}
///
diff --git a/WordPressPCL/Interfaces/IQueryOperation.cs b/WordPressPCL/Interfaces/IQueryOperation.cs
index 8c82152..32e0524 100644
--- a/WordPressPCL/Interfaces/IQueryOperation.cs
+++ b/WordPressPCL/Interfaces/IQueryOperation.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Threading.Tasks;
+using WordPressPCL.Models;
using WordPressPCL.Utility;
namespace WordPressPCL.Interfaces
@@ -17,6 +18,6 @@ public interface IQueryOperation where QClass : QueryBuilder
/// query builder with parameters for query
/// Is use auth header
/// list of filtered objects
- Task> Query(QClass queryBuilder, bool useAuth = false);
+ Task> Query(QClass queryBuilder, bool useAuth = false);
}
}
\ No newline at end of file
diff --git a/WordPressPCL/Models/QueryResult.cs b/WordPressPCL/Models/QueryResult.cs
new file mode 100644
index 0000000..d4c6a6a
--- /dev/null
+++ b/WordPressPCL/Models/QueryResult.cs
@@ -0,0 +1,34 @@
+using System.Collections;
+using System.Collections.Generic;
+
+namespace WordPressPCL.Models
+{
+ ///
+ /// Base class for query results
+ ///
+ public class QueryResult : IEnumerable
+ {
+ private readonly IEnumerable items;
+
+ public QueryResult(IEnumerable items, int total, int totalPages)
+ {
+ this.items = items;
+ Total = total;
+ TotalPages = totalPages;
+ }
+
+ public int Total { get; }
+
+ public int TotalPages { get; }
+
+ public IEnumerator GetEnumerator()
+ {
+ return items.GetEnumerator();
+ }
+
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ return GetEnumerator();
+ }
+ }
+}
\ No newline at end of file
diff --git a/WordPressPCL/WordPressPCL.xml b/WordPressPCL/WordPressPCL.xml
index 0b478c6..cec7612 100644
--- a/WordPressPCL/WordPressPCL.xml
+++ b/WordPressPCL/WordPressPCL.xml
@@ -610,6 +610,19 @@
Current User
+
+
+ Update Entity
+
+ Entity object
+ Updated object
+
+
+
+ Get current User
+
+ Current User
+
Delete user with reassign articles
@@ -690,17 +703,7 @@
Get latest
-
- Is use embed info
- Is use auth header
- requested object
-
-
-
- Get object by Id
-
- Object Id
- Is use embed info
+ aram>
Is use auth header
requested object
@@ -810,6 +813,22 @@
Number of published posts for the term.
+ dentifier for the object.
+
+
+ Read only
+ Context: view, edit, embed
+
+
+
+
+ Terms of the type category
+
+
+
+
+ Number of published posts for the term.
+
Read only
Context: view, edit
@@ -908,20 +927,7 @@
The date the object was published.
- Context: view, edit, embed
-
-
-
- The date the object was published as GMT.
-
- Context: view, edit
-
-
-
- The content for the object.
-
-
- Context: view, edit, embed
+ Context: view, edit,Context: view, edit, embed
@@ -2453,6 +2459,20 @@
Context: view, edit, embed
+
+
+ dels.PostType.Taxonomies">
+
+ List of taxonomies
+
+ Context: edit
+
+
+
+ REST base route for the taxonomy.
+
+ Context: view, edit, embed
+
Links to related resources
@@ -2463,6 +2483,11 @@
Default constructor
+
+
+ Base class for query results
+
+
WordPress main settings
@@ -4002,18 +4027,4 @@
-
-
-
- Gets the JWToken from the client
-
-
-
-
-
- Store Application Password in the Client
-
-
-
-