From 87cb9b044c2debb038c796de9ff16b8e4c5e9093 Mon Sep 17 00:00:00 2001 From: wtimme Date: Thu, 30 Apr 2020 13:17:33 +0200 Subject: [PATCH 1/4] #171 Have each parameter on a dedicated line This makes it easier to add new ones without exceeding a readable line length. --- SKWebAPI/Sources/WebAPI.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SKWebAPI/Sources/WebAPI.swift b/SKWebAPI/Sources/WebAPI.swift index 78eef71..c87ded5 100755 --- a/SKWebAPI/Sources/WebAPI.swift +++ b/SKWebAPI/Sources/WebAPI.swift @@ -1156,7 +1156,9 @@ extension WebAPI { } } - public func usersList(includePresence: Bool = false, success: ((_ userList: [[String: Any]]?) -> Void)?, failure: FailureClosure?) { + public func usersList(includePresence: Bool = false, + success: ((_ userList: [[String: Any]]?) -> Void)?, + failure: FailureClosure?) { let parameters: [String: Any] = ["token": token, "presence": includePresence] networkInterface.request(.usersList, parameters: parameters, successClosure: {(response) in success?(response["members"] as? [[String: Any]]) From 5609cfcbc20d65451caf196baca7a79a0b41a5a5 Mon Sep 17 00:00:00 2001 From: wtimme Date: Thu, 30 Apr 2020 13:20:03 +0200 Subject: [PATCH 2/4] #171 Add optional parameter `cursor` to "users.list" --- SKWebAPI/Sources/WebAPI.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/SKWebAPI/Sources/WebAPI.swift b/SKWebAPI/Sources/WebAPI.swift index c87ded5..ffed674 100755 --- a/SKWebAPI/Sources/WebAPI.swift +++ b/SKWebAPI/Sources/WebAPI.swift @@ -1156,10 +1156,15 @@ extension WebAPI { } } - public func usersList(includePresence: Bool = false, + public func usersList(cursor: String? = nil, + includePresence: Bool = false, success: ((_ userList: [[String: Any]]?) -> Void)?, failure: FailureClosure?) { - let parameters: [String: Any] = ["token": token, "presence": includePresence] + var parameters: [String: Any] = ["token": token, "presence": includePresence] + if let cursor = cursor { + parameters["cursor"] = cursor + } + networkInterface.request(.usersList, parameters: parameters, successClosure: {(response) in success?(response["members"] as? [[String: Any]]) }) {(error) in From dd511eece919a8da9a04187e355ae292b612e88c Mon Sep 17 00:00:00 2001 From: wtimme Date: Thu, 30 Apr 2020 13:22:20 +0200 Subject: [PATCH 3/4] #171 Read `next_cursor` from "users.list" response This allows callers to properly use the pagination of this API method. --- SKWebAPI/Sources/WebAPI.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SKWebAPI/Sources/WebAPI.swift b/SKWebAPI/Sources/WebAPI.swift index ffed674..9f0d248 100755 --- a/SKWebAPI/Sources/WebAPI.swift +++ b/SKWebAPI/Sources/WebAPI.swift @@ -1158,7 +1158,7 @@ extension WebAPI { public func usersList(cursor: String? = nil, includePresence: Bool = false, - success: ((_ userList: [[String: Any]]?) -> Void)?, + success: ((_ userList: [[String: Any]]?, _ nextCursor: String?) -> Void)?, failure: FailureClosure?) { var parameters: [String: Any] = ["token": token, "presence": includePresence] if let cursor = cursor { @@ -1166,7 +1166,7 @@ extension WebAPI { } networkInterface.request(.usersList, parameters: parameters, successClosure: {(response) in - success?(response["members"] as? [[String: Any]]) + success?(response["members"] as? [[String: Any]], (response["response_metadata"] as? [String: Any])?["next_cursor"] as? String) }) {(error) in failure?(error) } From a45e017decb3ea6d8c209fba695a561c959c0397 Mon Sep 17 00:00:00 2001 From: wtimme Date: Fri, 1 May 2020 15:58:04 +0200 Subject: [PATCH 4/4] #171 Add support for "limit" parameter of users.list call --- SKWebAPI/Sources/WebAPI.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SKWebAPI/Sources/WebAPI.swift b/SKWebAPI/Sources/WebAPI.swift index 9f0d248..886cc42 100755 --- a/SKWebAPI/Sources/WebAPI.swift +++ b/SKWebAPI/Sources/WebAPI.swift @@ -1157,6 +1157,7 @@ extension WebAPI { } public func usersList(cursor: String? = nil, + limit: Int? = nil, includePresence: Bool = false, success: ((_ userList: [[String: Any]]?, _ nextCursor: String?) -> Void)?, failure: FailureClosure?) { @@ -1164,6 +1165,9 @@ extension WebAPI { if let cursor = cursor { parameters["cursor"] = cursor } + if let limit = limit { + parameters["limit"] = limit + } networkInterface.request(.usersList, parameters: parameters, successClosure: {(response) in success?(response["members"] as? [[String: Any]], (response["response_metadata"] as? [String: Any])?["next_cursor"] as? String)