diff --git a/SKWebAPI/Sources/Endpoint.swift b/SKWebAPI/Sources/Endpoint.swift index 2b631e7..437b415 100755 --- a/SKWebAPI/Sources/Endpoint.swift +++ b/SKWebAPI/Sources/Endpoint.swift @@ -26,34 +26,30 @@ public enum Endpoint: String { case authRevoke = "auth.revoke" case authTest = "auth.test" case channelsHistory = "channels.history" - case channelsInfo = "channels.info" - case channelsList = "channels.list" - case channelsMark = "channels.mark" - case channelsCreate = "channels.create" - case channelsInvite = "channels.invite" - case channelsJoin = "channels.join" + case channelsKick = "channels.kick" case channelsLeave = "channels.leave" - case channelsArchive = "channels.archive" - case channelsUnarchive = "channels.unarchive" case channelsRename = "channels.rename" - case channelsKick = "channels.kick" case channelsSetPurpose = "channels.setPurpose" case channelsSetTopic = "channels.setTopic" + case channelsUnarchive = "channels.unarchive" case chatDelete = "chat.delete" - case chatPostMessage = "chat.postMessage" - case chatPostEphemeral = "chat.postEphemeral" case chatMeMessage = "chat.meMessage" + case chatPostEphemeral = "chat.postEphemeral" + case chatPostMessage = "chat.postMessage" case chatUpdate = "chat.update" + case conversationsArchive = "conversations.archive" + case conversationsCreate = "conversations.create" + case conversationsHistory = "conversations.history" case conversationsList = "conversations.list" - case conversationsReplies = "conversations.replies" case conversationsMembers = "conversations.members" - case conversationsHistory = "conversations.history" + case conversationsOpen = "conversations.open" + case conversationsReplies = "conversations.replies" case dndInfo = "dnd.info" case dndTeamInfo = "dnd.teamInfo" case emojiList = "emoji.list" case filesCommentsAdd = "files.comments.add" - case filesCommentsEdit = "files.comments.edit" case filesCommentsDelete = "files.comments.delete" + case filesCommentsEdit = "files.comments.edit" case filesDelete = "files.delete" case filesInfo = "files.info" case filesUpload = "files.upload" @@ -69,34 +65,43 @@ public enum Endpoint: String { case imHistory = "im.history" case imList = "im.list" case imMark = "im.mark" - case imOpen = "im.open" case mpimClose = "mpim.close" case mpimHistory = "mpim.history" case mpimList = "mpim.list" case mpimMark = "mpim.mark" case mpimOpen = "mpim.open" case oauthAccess = "oauth.v2.access" - case pinsList = "pins.list" case pinsAdd = "pins.add" + case pinsList = "pins.list" case pinsRemove = "pins.remove" case reactionsAdd = "reactions.add" case reactionsGet = "reactions.get" case reactionsList = "reactions.list" case reactionsRemove = "reactions.remove" - case rtmStart = "rtm.start" case rtmConnect = "rtm.connect" + case rtmStart = "rtm.start" + case searchAll = "search.all" + case searchFiles = "search.files" + case searchMessages = "search.messages" case starsAdd = "stars.add" case starsRemove = "stars.remove" case teamInfo = "team.info" + case usersConversations = "users.conversations" case usersGetPresence = "users.getPresence" case usersInfo = "users.info" case usersList = "users.list" - case usersConversations = "users.conversations" case usersLookupByEmail = "users.lookupByEmail" case usersProfileSet = "users.profile.set" case usersSetActive = "users.setActive" case usersSetPresence = "users.setPresence" - case searchAll = "search.all" - case searchFiles = "search.files" - case searchMessages = "search.messages" + + // MARK: - Deprecated endpoints + case channelsArchive = "channels.archive" + case channelsCreate = "channels.create" + case channelsInfo = "channels.info" + case channelsInvite = "channels.invite" + case channelsJoin = "channels.join" + case channelsList = "channels.list" + case channelsMark = "channels.mark" + case imOpen = "im.open" } diff --git a/SKWebAPI/Sources/WebAPI.swift b/SKWebAPI/Sources/WebAPI.swift index c7dd8d2..a5dbf67 100755 --- a/SKWebAPI/Sources/WebAPI.swift +++ b/SKWebAPI/Sources/WebAPI.swift @@ -172,56 +172,11 @@ extension WebAPI { failure?(error) } } - - public func channelInfo(id: String, success: ChannelClosure?, failure: FailureClosure?) { - info(.channelsInfo, type:.channel, id: id, success: {(channel) in - success?(channel) - }) {(error) in - failure?(error) - } - } - - public func channelsList( - excludeArchived: Bool = false, - excludeMembers: Bool = false, - success: ((_ channels: [[String: Any]]?) -> Void)?, - failure: FailureClosure? - ) { - list(.channelsList, type:.channel, excludeArchived: excludeArchived, excludeMembers: excludeMembers, success: {(channels) in - success?(channels) - }) {(error) in - failure?(error) - } - } - - public func markChannel(channel: String, timestamp: String, success: ((_ ts: String) -> Void)?, failure: FailureClosure?) { - mark(.channelsMark, channel: channel, timestamp: timestamp, success: {(ts) in - success?(ts) - }) {(error) in - failure?(error) - } - } - - public func createChannel(channel: String, success: ChannelClosure?, failure: FailureClosure?) { - create(.channelsCreate, name: channel, success: success, failure: failure) - } - - public func inviteToChannel(_ channel: String, user: String, success: SuccessClosure?, failure: FailureClosure?) { - invite(.channelsInvite, channel: channel, user: user, success: success, failure: failure) - } - - public func channelsJoin(_ name: String, validate: Bool, success: ChannelClosure?, failure: FailureClosure?) { - join(.channelsJoin, name: name, validate: validate, success: success, failure: failure) - } public func channelsLeave(_ channel: String, success: SuccessClosure?, failure: FailureClosure?) { leave(.channelsLeave, channel: channel, success: success, failure: failure) } - public func channelsArchive(_ channel: String, success: SuccessClosure?, failure: FailureClosure?) { - archive(.channelsArchive, channel: channel, success: success, failure: failure) - } - public func channelsUnarchive(_ channel: String, success: SuccessClosure?, failure: FailureClosure?) { unarchive(.channelsUnarchive, channel: channel, success: success, failure: failure) } @@ -682,16 +637,6 @@ extension WebAPI { failure?(error) } } - - public func openIM(userID: String, success: ((_ imID: String?) -> Void)?, failure: FailureClosure?) { - let parameters = ["user": userID] - networkInterface.request(.imOpen, accessToken: token, parameters: parameters, successClosure: {(response) in - let group = response["channel"] as? [String: Any] - success?(group?["id"] as? String) - }) {(error) in - failure?(error) - } - } } // MARK: - MPIM @@ -1224,6 +1169,35 @@ extension WebAPI { // MARK: - Conversations extension WebAPI { + public func conversationsArchive(channel: String, success: (() -> Void)?, failure: FailureClosure?) { + let parameters = ["channel": channel] + networkInterface.request(.conversationsArchive, accessToken: token, parameters: parameters, successClosure: {_ in }) {(error) in + failure?(error) + } + } + + public func conversationsCreate( + name: String, + isPrivate: Bool = false, + success: ((_ id: String?, _ name: String?, _ creator: String?) -> Void)?, + failure: FailureClosure? + ) { + let parameters = [ + "name": name, + "is_private": isPrivate + ] as [String : Any] + networkInterface.request(.conversationsOpen, accessToken: token, parameters: parameters, successClosure: {(response) in + let group = response["channel"] as? [String: Any] + success?( + group?["id"] as? String, + group?["name"] as? String, + group?["creator"] as? String + ) + }) {(error) in + failure?(error) + } + } + public func conversationsList( excludeArchived: Bool = false, cursor: String? = nil, @@ -1327,6 +1301,22 @@ extension WebAPI { failure?(error) } } + + public func conversationsOpen( + userIDs: [String], + success: ((_ imID: String?) -> Void)?, + failure: FailureClosure? + ) { + let parameters = [ + "users": userIDs.joined(separator: ",") + ] + networkInterface.request(.conversationsOpen, accessToken: token, parameters: parameters, successClosure: {(response) in + let group = response["channel"] as? [String: Any] + success?(group?["id"] as? String) + }) {(error) in + failure?(error) + } + } } // MARK: - Search @@ -1678,3 +1668,72 @@ extension WebAPI { } } } + +// MARK: - Deprecated +extension WebAPI { + + // MARK: channels.* + @available(*, deprecated, message: "Use conversationsArchive instead.") + public func channelsArchive(_ channel: String, success: SuccessClosure?, failure: FailureClosure?) { + archive(.channelsArchive, channel: channel, success: success, failure: failure) + } + + @available(*, deprecated, message: "Use conversationsCreate instead.") + public func createChannel(channel: String, success: ChannelClosure?, failure: FailureClosure?) { + create(.channelsCreate, name: channel, success: success, failure: failure) + } + + @available(*, deprecated) + public func channelInfo(id: String, success: ChannelClosure?, failure: FailureClosure?) { + info(.channelsInfo, type:.channel, id: id, success: {(channel) in + success?(channel) + }) {(error) in + failure?(error) + } + } + + @available(*, deprecated) + public func inviteToChannel(_ channel: String, user: String, success: SuccessClosure?, failure: FailureClosure?) { + invite(.channelsInvite, channel: channel, user: user, success: success, failure: failure) + } + + @available(*, deprecated) + public func channelsJoin(_ name: String, validate: Bool, success: ChannelClosure?, failure: FailureClosure?) { + join(.channelsJoin, name: name, validate: validate, success: success, failure: failure) + } + + @available(*, deprecated) + public func channelsList( + excludeArchived: Bool = false, + excludeMembers: Bool = false, + success: ((_ channels: [[String: Any]]?) -> Void)?, + failure: FailureClosure? + ) { + list(.channelsList, type:.channel, excludeArchived: excludeArchived, excludeMembers: excludeMembers, success: {(channels) in + success?(channels) + }) {(error) in + failure?(error) + } + } + + @available(*, deprecated) + public func markChannel(channel: String, timestamp: String, success: ((_ ts: String) -> Void)?, failure: FailureClosure?) { + mark(.channelsMark, channel: channel, timestamp: timestamp, success: {(ts) in + success?(ts) + }) {(error) in + failure?(error) + } + } + + // MARK: im.* + @available(*, deprecated, message: "Use conversationsOpen instead.") + public func openIM(userID: String, success: ((_ imID: String?) -> Void)?, failure: FailureClosure?) { + let parameters = ["user": userID] + networkInterface.request(.imOpen, accessToken: token, parameters: parameters, successClosure: {(response) in + let group = response["channel"] as? [String: Any] + success?(group?["id"] as? String) + }) {(error) in + failure?(error) + } + } +}