From a00f5883c27f9bd275c1af10d1f93c7c9ce091a5 Mon Sep 17 00:00:00 2001 From: Philippe Weidmann Date: Thu, 7 Mar 2024 13:47:28 +0100 Subject: [PATCH] feat: Add cursor support for ApiResponse --- Sources/InfomaniakCore/Networking/ApiFetcher.swift | 4 +++- Sources/InfomaniakCore/Networking/ApiResponse.swift | 6 ++++++ Sources/InfomaniakCore/Networking/ValidApiResponse.swift | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Sources/InfomaniakCore/Networking/ApiFetcher.swift b/Sources/InfomaniakCore/Networking/ApiFetcher.swift index 50f6e91..68e486d 100644 --- a/Sources/InfomaniakCore/Networking/ApiFetcher.swift +++ b/Sources/InfomaniakCore/Networking/ApiFetcher.swift @@ -178,7 +178,9 @@ open class ApiFetcher { pages: apiResponse.pages, page: apiResponse.page, itemsPerPage: apiResponse.itemsPerPage, - responseAt: apiResponse.responseAt + responseAt: apiResponse.responseAt, + cursor: nil, + hasMore: false ) return ValidServerResponse( statusCode: serverResponse.statusCode, diff --git a/Sources/InfomaniakCore/Networking/ApiResponse.swift b/Sources/InfomaniakCore/Networking/ApiResponse.swift index 0f9724c..3c651f1 100644 --- a/Sources/InfomaniakCore/Networking/ApiResponse.swift +++ b/Sources/InfomaniakCore/Networking/ApiResponse.swift @@ -36,6 +36,8 @@ open class ApiResponse: Decodable { public let page: Int? public let itemsPerPage: Int? public let responseAt: Int? + public let cursor: String? + public let hasMore: Bool enum CodingKeys: String, CodingKey { case result @@ -46,6 +48,8 @@ open class ApiResponse: Decodable { case page case itemsPerPage = "items_per_page" case responseAt = "response_at" + case cursor + case hasMore = "has_more" } public required init(from decoder: Decoder) throws { @@ -64,5 +68,7 @@ open class ApiResponse: Decodable { page = try container.decodeIfPresent(Int.self, forKey: .page) itemsPerPage = try container.decodeIfPresent(Int.self, forKey: .itemsPerPage) responseAt = try container.decodeIfPresent(Int.self, forKey: .responseAt) + cursor = try container.decodeIfPresent(String.self, forKey: .cursor) + hasMore = try container.decodeIfPresent(Bool.self, forKey: .hasMore) ?? false } } diff --git a/Sources/InfomaniakCore/Networking/ValidApiResponse.swift b/Sources/InfomaniakCore/Networking/ValidApiResponse.swift index 92e8d2f..aefb1ab 100644 --- a/Sources/InfomaniakCore/Networking/ValidApiResponse.swift +++ b/Sources/InfomaniakCore/Networking/ValidApiResponse.swift @@ -32,4 +32,6 @@ public struct ValidApiResponse { public let page: Int? public let itemsPerPage: Int? public let responseAt: Int? + public let cursor: String? + public let hasMore: Bool }