Skip to content
This repository has been archived by the owner on Dec 2, 2022. It is now read-only.

Commit

Permalink
Add conversations.[open|create|archive] (#202)
Browse files Browse the repository at this point in the history
  • Loading branch information
ar4s committed Oct 19, 2021
1 parent e178c37 commit 8e46cbb
Show file tree
Hide file tree
Showing 2 changed files with 140 additions and 76 deletions.
47 changes: 26 additions & 21 deletions SKWebAPI/Sources/Endpoint.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
}
169 changes: 114 additions & 55 deletions SKWebAPI/Sources/WebAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
}
}
}

0 comments on commit 8e46cbb

Please sign in to comment.