using System.Text.Json; using API.Helpers; using Microsoft.AspNetCore.Http; namespace API.Extensions; #nullable enable public static class HttpExtensions { private static readonly JsonSerializerOptions Options = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; /// /// Adds pagination headers - Use with /// /// /// /// /// /// public static void AddPaginationHeader(this HttpResponse response, int currentPage, int itemsPerPage, int totalItems, int totalPages) { var paginationHeader = new PaginationHeader(currentPage, itemsPerPage, totalItems, totalPages); response.Headers.Append("Pagination", JsonSerializer.Serialize(paginationHeader, Options)); response.Headers.Append("Access-Control-Expose-Headers", "Pagination"); } public static void AddPaginationHeader(this HttpResponse response, PagedList pagedList) { response.AddPaginationHeader(pagedList.CurrentPage, pagedList.PageSize, pagedList.TotalCount, pagedList.TotalPages); } }