Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6385afb34a | |||
| b880356dde | |||
| fdd2a5aa36 | |||
| 93f8da2f69 | |||
| a165f3e57f | |||
| d7f2221d77 | |||
| 02bda676a9 | |||
| e4bd44e939 | |||
| d83fbb1d7e | |||
| c2734a66c3 | |||
| 721f8964cf | |||
| 37ca701ae0 | |||
| c1a89eedda | |||
| 8aeb88cea3 |
@@ -25,7 +25,9 @@
|
||||
import Dispatch
|
||||
#endif
|
||||
import Foundation
|
||||
#if !COCOAPODS
|
||||
@_exported import SKCore
|
||||
#endif
|
||||
|
||||
open class Client {
|
||||
internal(set) public var authenticatedUser: User?
|
||||
@@ -397,76 +399,82 @@ extension Client {
|
||||
// MARK: - Files
|
||||
extension Client {
|
||||
func processFile(_ event: Event) {
|
||||
guard
|
||||
let file = event.file,
|
||||
let id = file.id
|
||||
else {
|
||||
return
|
||||
}
|
||||
if let comment = file.initialComment, let commentID = comment.id {
|
||||
if files[id]?.comments[commentID] == nil {
|
||||
files[id]?.comments[commentID] = comment
|
||||
for file in event.files {
|
||||
guard
|
||||
let id = file.id
|
||||
else {
|
||||
continue
|
||||
}
|
||||
if let comment = file.initialComment, let commentID = comment.id {
|
||||
if files[id]?.comments[commentID] == nil {
|
||||
files[id]?.comments[commentID] = comment
|
||||
}
|
||||
}
|
||||
files[id] = file
|
||||
}
|
||||
files[id] = file
|
||||
}
|
||||
|
||||
func filePrivate(_ event: Event) {
|
||||
guard
|
||||
let file = event.file,
|
||||
let id = file.id
|
||||
else {
|
||||
return
|
||||
for file in event.files {
|
||||
guard
|
||||
let id = file.id
|
||||
else {
|
||||
continue
|
||||
}
|
||||
files[id]?.isPublic = false
|
||||
}
|
||||
files[id]?.isPublic = false
|
||||
}
|
||||
|
||||
func deleteFile(_ event: Event) {
|
||||
guard
|
||||
let file = event.file,
|
||||
let id = file.id
|
||||
else {
|
||||
return
|
||||
}
|
||||
if files[id] != nil {
|
||||
files.removeValue(forKey: id)
|
||||
for file in event.files {
|
||||
guard
|
||||
let id = file.id
|
||||
else {
|
||||
continue
|
||||
}
|
||||
if files[id] != nil {
|
||||
files.removeValue(forKey: id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func fileCommentAdded(_ event: Event) {
|
||||
guard
|
||||
let file = event.file,
|
||||
let id = file.id,
|
||||
let comment = event.comment,
|
||||
let commentID = comment.id
|
||||
else {
|
||||
return
|
||||
for file in event.files {
|
||||
guard
|
||||
let id = file.id,
|
||||
let comment = event.comment,
|
||||
let commentID = comment.id
|
||||
else {
|
||||
continue
|
||||
}
|
||||
files[id]?.comments[commentID] = comment
|
||||
}
|
||||
files[id]?.comments[commentID] = comment
|
||||
}
|
||||
|
||||
func fileCommentEdited(_ event: Event) {
|
||||
guard
|
||||
let file = event.file,
|
||||
let id = file.id,
|
||||
let comment = event.comment,
|
||||
let commentID = comment.id
|
||||
else {
|
||||
return
|
||||
for file in event.files {
|
||||
guard
|
||||
let id = file.id,
|
||||
let comment = event.comment,
|
||||
let commentID = comment.id
|
||||
else {
|
||||
continue
|
||||
}
|
||||
files[id]?.comments[commentID]?.comment = comment.comment
|
||||
}
|
||||
files[id]?.comments[commentID]?.comment = comment.comment
|
||||
}
|
||||
|
||||
func fileCommentDeleted(_ event: Event) {
|
||||
guard
|
||||
let file = event.file,
|
||||
let id = file.id,
|
||||
let comment = event.comment,
|
||||
let commentID = comment.id
|
||||
else {
|
||||
return
|
||||
for file in event.files {
|
||||
guard
|
||||
let id = file.id,
|
||||
let comment = event.comment,
|
||||
let commentID = comment.id
|
||||
else {
|
||||
continue
|
||||
}
|
||||
_ = files[id]?.comments.removeValue(forKey: commentID)
|
||||
}
|
||||
_ = files[id]?.comments.removeValue(forKey: commentID)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ public class Event {
|
||||
public let channel: Channel?
|
||||
public let comment: Comment?
|
||||
public let user: User?
|
||||
public let file: File?
|
||||
public let files: [File]
|
||||
public let message: Message?
|
||||
public let nestedMessage: Message?
|
||||
public let itemUser: String?
|
||||
@@ -197,7 +197,7 @@ public class Event {
|
||||
message = Message(dictionary: event)
|
||||
nestedMessage = Message(dictionary: event["message"] as? [String: Any])
|
||||
profile = CustomProfile(profile: event["profile"] as? [String: Any])
|
||||
file = File(id: event["file"] as? String)
|
||||
files = (event["files"] as? [Any])?.compactMap { File(file: $0 as? [String: Any]) } ?? []
|
||||
|
||||
// Comment, Channel, and User can come across as Strings or Dictionaries
|
||||
if let commentDictionary = event["comment"] as? [String: Any] {
|
||||
|
||||
@@ -47,7 +47,7 @@ public final class Message: Equatable {
|
||||
public var isStarred: Bool?
|
||||
public var pinnedTo: [String]?
|
||||
public let comment: Comment?
|
||||
public let file: File?
|
||||
public var files: [File]?
|
||||
public var reactions = [Reaction]()
|
||||
public var attachments: [Attachment]?
|
||||
public var responseType: MessageResponseType?
|
||||
@@ -79,7 +79,7 @@ public final class Message: Equatable {
|
||||
isStarred = dictionary?["is_starred"] as? Bool
|
||||
pinnedTo = dictionary?["pinned_to"] as? [String]
|
||||
comment = Comment(comment: dictionary?["comment"] as? [String: Any])
|
||||
file = File(file: dictionary?["file"] as? [String: Any])
|
||||
files = (dictionary?["files"] as? [[String: Any]])?.map { File(file: $0) }
|
||||
reactions = Reaction.reactionsFromArray(dictionary?["reactions"] as? [[String: Any]])
|
||||
attachments = (dictionary?["attachments"] as? [[String: Any]])?.map { Attachment(attachment: $0) }
|
||||
responseType = MessageResponseType(rawValue: dictionary?["response_type"] as? String ?? "")
|
||||
@@ -101,7 +101,6 @@ public final class Message: Equatable {
|
||||
upload = nil
|
||||
itemType = nil
|
||||
comment = nil
|
||||
file = nil
|
||||
}
|
||||
|
||||
public static func == (lhs: Message, rhs: Message) -> Bool {
|
||||
|
||||
@@ -34,6 +34,9 @@ public struct User {
|
||||
public var image72: String?
|
||||
public var image192: String?
|
||||
public var customProfile: CustomProfile?
|
||||
public var statusText: String?
|
||||
public var statusEmoji: String?
|
||||
public var statusExpiration: Int?
|
||||
|
||||
public init(profile: [String: Any]?) {
|
||||
firstName = profile?["first_name"] as? String
|
||||
@@ -47,6 +50,9 @@ public struct User {
|
||||
image72 = profile?["image_72"] as? String
|
||||
image192 = profile?["image_192"] as? String
|
||||
customProfile = CustomProfile(customFields: profile?["fields"] as? [String: Any])
|
||||
statusText = profile?["status_text"] as? String
|
||||
statusEmoji = profile?["status_emoji"] as? String
|
||||
statusExpiration = profile?["status_expiration"] as? Int
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,9 @@
|
||||
|
||||
#if os(macOS) || os(iOS) || os(tvOS)
|
||||
import Foundation
|
||||
#if !COCOAPODS
|
||||
import SKCore
|
||||
#endif
|
||||
import Starscream
|
||||
|
||||
public class StarscreamRTM: RTMWebSocket, WebSocketDelegate {
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#if os(Linux) || os(macOS)
|
||||
#if os(Linux) || os(macOS) && !COCOAPODS
|
||||
import Foundation
|
||||
import HTTP
|
||||
import WebSocket
|
||||
|
||||
@@ -25,8 +25,10 @@
|
||||
import Dispatch
|
||||
#endif
|
||||
import Foundation
|
||||
#if !COCOAPODS
|
||||
import SKWebAPI
|
||||
@_exported import SKCore
|
||||
#endif
|
||||
|
||||
public protocol RTMWebSocket {
|
||||
init()
|
||||
|
||||
@@ -21,8 +21,10 @@
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#if !COCOAPODS
|
||||
import SKCore
|
||||
import SKWebAPI
|
||||
#endif
|
||||
|
||||
public struct OAuthMiddleware: Middleware {
|
||||
private let config: OAuthConfig
|
||||
|
||||
@@ -21,7 +21,9 @@
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#if !COCOAPODS
|
||||
import SKCore
|
||||
#endif
|
||||
|
||||
public struct MessageActionRequest {
|
||||
public let action: Action?
|
||||
|
||||
@@ -21,7 +21,9 @@
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#if !COCOAPODS
|
||||
import SKCore
|
||||
#endif
|
||||
|
||||
public struct MessageActionRoute {
|
||||
let action: Action
|
||||
|
||||
@@ -21,7 +21,9 @@
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#if !COCOAPODS
|
||||
import SKCore
|
||||
#endif
|
||||
|
||||
public struct OAuthResponse {
|
||||
public let accessToken: String?
|
||||
|
||||
@@ -22,7 +22,9 @@
|
||||
// THE SOFTWARE.
|
||||
|
||||
import Foundation
|
||||
#if !COCOAPODS
|
||||
import SKCore
|
||||
#endif
|
||||
|
||||
public struct SKResponse {
|
||||
let text: String
|
||||
|
||||
@@ -21,7 +21,9 @@
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
// THE SOFTWARE.
|
||||
|
||||
#if !COCOAPODS
|
||||
@_exported import SKCore
|
||||
#endif
|
||||
|
||||
public protocol SlackKitServer {
|
||||
func start()
|
||||
|
||||
@@ -35,6 +35,7 @@ public enum Endpoint: String {
|
||||
case channelsSetTopic = "channels.setTopic"
|
||||
case chatDelete = "chat.delete"
|
||||
case chatPostMessage = "chat.postMessage"
|
||||
case chatPostEphemeral = "chat.postEphemeral"
|
||||
case chatMeMessage = "chat.meMessage"
|
||||
case chatUpdate = "chat.update"
|
||||
case conversationsList = "conversations.list"
|
||||
@@ -81,6 +82,7 @@ public enum Endpoint: String {
|
||||
case usersGetPresence = "users.getPresence"
|
||||
case usersInfo = "users.info"
|
||||
case usersList = "users.list"
|
||||
case usersProfileSet = "users.profile.set"
|
||||
case usersSetActive = "users.setActive"
|
||||
case usersSetPresence = "users.setPresence"
|
||||
}
|
||||
|
||||
@@ -25,7 +25,9 @@
|
||||
import Dispatch
|
||||
#endif
|
||||
import Foundation
|
||||
#if !COCOAPODS
|
||||
import SKCore
|
||||
#endif
|
||||
|
||||
public struct NetworkInterface {
|
||||
|
||||
|
||||
@@ -23,7 +23,9 @@
|
||||
|
||||
//swiftlint:disable file_length
|
||||
import Foundation
|
||||
#if !COCOAPODS
|
||||
@_exported import SKCore
|
||||
#endif
|
||||
|
||||
public final class WebAPI {
|
||||
|
||||
@@ -312,6 +314,34 @@ extension WebAPI {
|
||||
failure?(error)
|
||||
}
|
||||
}
|
||||
|
||||
public func sendEphemeral(
|
||||
channel: String,
|
||||
text: String,
|
||||
user: String,
|
||||
asUser: Bool? = nil,
|
||||
attachments: [Attachment?]? = nil,
|
||||
linkNames: Bool? = nil,
|
||||
parse: ParseMode? = nil,
|
||||
success: (((ts: String?, channel: String?)) -> Void)?,
|
||||
failure: FailureClosure?
|
||||
) {
|
||||
let parameters: [String: Any?] = [
|
||||
"token": token,
|
||||
"channel": channel,
|
||||
"text": text,
|
||||
"user": user,
|
||||
"as_user": asUser,
|
||||
"attachments": encodeAttachments(attachments),
|
||||
"link_names": linkNames,
|
||||
"parse": parse?.rawValue,
|
||||
]
|
||||
networkInterface.request(.chatPostEphemeral, parameters: parameters, successClosure: {(response) in
|
||||
success?((ts: response["sendMessage"] as? String, response["channel"] as? String))
|
||||
}) {(error) in
|
||||
failure?(error)
|
||||
}
|
||||
}
|
||||
|
||||
public func sendMeMessage(
|
||||
channel: String,
|
||||
@@ -1079,6 +1109,46 @@ extension WebAPI {
|
||||
}
|
||||
}
|
||||
|
||||
public func usersProfileSet(profile: User.Profile, success: SuccessClosure?, failure: FailureClosure?) {
|
||||
let profileValues = ([
|
||||
"first_name": profile.firstName,
|
||||
"last_name": profile.lastName,
|
||||
"real_name": profile.realName,
|
||||
"email": profile.email,
|
||||
"phone": profile.phone,
|
||||
"status_text": profile.statusText,
|
||||
"status_emoji": profile.statusEmoji,
|
||||
"status_expiration": profile.statusExpiration,
|
||||
] as [String: Any?])
|
||||
.filter { $0.value != nil }
|
||||
.mapValues { $0! }
|
||||
|
||||
do {
|
||||
let data = try JSONSerialization.data(withJSONObject: profileValues)
|
||||
let json = String(data: data, encoding: .utf8)
|
||||
guard let encodedJSON = json?.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {
|
||||
throw SlackError.clientJSONError
|
||||
}
|
||||
var urlComponents = URLComponents(string: "https://slack.com/api/users.profile.set")
|
||||
urlComponents?.queryItems = [
|
||||
URLQueryItem(name: "token", value: token),
|
||||
URLQueryItem(name: "profile", value: encodedJSON)
|
||||
]
|
||||
|
||||
guard let requestString = urlComponents?.url?.absoluteString else {
|
||||
throw SlackError.clientNetworkError
|
||||
}
|
||||
|
||||
networkInterface.customRequest(requestString, data: Data(), success: { _ in
|
||||
success?(true)
|
||||
}) {(error) in
|
||||
failure?(error)
|
||||
}
|
||||
} catch {
|
||||
failure?(error as? SlackError ?? SlackError.unknownError)
|
||||
}
|
||||
}
|
||||
|
||||
public func setUserActive(success: SuccessClosure?, failure: FailureClosure?) {
|
||||
networkInterface.request(.usersSetActive, parameters: ["token": token], successClosure: { _ in
|
||||
success?(true)
|
||||
|
||||
+33
-35
@@ -1,47 +1,16 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "SlackKit"
|
||||
s.version = "4.2.0"
|
||||
s.version = "4.2.1"
|
||||
s.summary = "Write Slack apps in Swift"
|
||||
s.homepage = "https://github.com/pvzig/SlackKit"
|
||||
s.license = "MIT"
|
||||
s.author = { "Peter Zignego" => "peter@launchsoft.co" }
|
||||
s.source = { :git => "https://github.com/pvzig/SlackKit.git", :tag => s.version.to_s }
|
||||
s.social_media_url = "https://twitter.com/pvzig"
|
||||
s.ios.deployment_target = "10.0"
|
||||
s.osx.deployment_target = "10.11"
|
||||
s.tvos.deployment_target = "10.0"
|
||||
s.platforms = { :ios => '10.0', :osx => '10.11', :tvos => '10.0' }
|
||||
s.swift_version = '4.2'
|
||||
s.cocoapods_version = '>= 1.4.0'
|
||||
s.default_subspec = "SlackKit"
|
||||
s.swift_version = "4.2"
|
||||
s.cocoapods_version = ">= 1.4.0"
|
||||
|
||||
s.subspec "SKCore" do |ss|
|
||||
ss.source_files = "SKCore/Sources/"
|
||||
ss.framework = "Foundation"
|
||||
end
|
||||
|
||||
s.subspec "SKClient" do |ss|
|
||||
ss.source_files = "SKClient/Sources/"
|
||||
ss.dependency "SlackKit/SKCore"
|
||||
end
|
||||
|
||||
s.subspec "SKWebAPI" do |ss|
|
||||
ss.source_files = "SKWebAPI/Sources/"
|
||||
ss.dependency "SlackKit/SKCore"
|
||||
end
|
||||
|
||||
s.subspec "SKRTMAPI" do |ss|
|
||||
ss.source_files = "SKRTMAPI/Sources/"
|
||||
ss.dependency "SlackKit/SKCore"
|
||||
ss.dependency "SlackKit/SKWebAPI"
|
||||
ss.dependency "Starscream", "3.0.6"
|
||||
end
|
||||
|
||||
s.subspec "SKServer" do |ss|
|
||||
ss.source_files = "SKServer/Sources/"
|
||||
ss.dependency "SlackKit/SKCore"
|
||||
ss.dependency "SlackKit/SKWebAPI"
|
||||
ss.dependency "Swifter", "1.4.5"
|
||||
end
|
||||
|
||||
s.subspec "SlackKit" do |ss|
|
||||
ss.source_files = "SlackKit/Sources/"
|
||||
@@ -51,4 +20,33 @@ Pod::Spec.new do |s|
|
||||
ss.dependency "SlackKit/SKRTMAPI"
|
||||
ss.dependency "SlackKit/SKServer"
|
||||
end
|
||||
|
||||
s.subspec "SKClient" do |ss|
|
||||
ss.source_files = "SKClient/Sources/"
|
||||
ss.dependency "SlackKit/SKCore"
|
||||
end
|
||||
|
||||
s.subspec "SKCore" do |ss|
|
||||
ss.source_files = "SKCore/Sources/"
|
||||
ss.framework = "Foundation"
|
||||
end
|
||||
|
||||
s.subspec "SKRTMAPI" do |ss|
|
||||
ss.source_files = "SKRTMAPI/Sources/**/*.swift"
|
||||
ss.dependency "SlackKit/SKCore"
|
||||
ss.dependency "SlackKit/SKWebAPI"
|
||||
ss.dependency "Starscream", "3.0.6"
|
||||
end
|
||||
|
||||
s.subspec "SKServer" do |ss|
|
||||
ss.source_files = "SKServer/Sources/**/*.swift"
|
||||
ss.dependency "SlackKit/SKCore"
|
||||
ss.dependency "SlackKit/SKWebAPI"
|
||||
ss.dependency "Swifter", "1.4.5"
|
||||
end
|
||||
|
||||
s.subspec "SKWebAPI" do |ss|
|
||||
ss.source_files = "SKWebAPI/Sources/"
|
||||
ss.dependency "SlackKit/SKCore"
|
||||
end
|
||||
end
|
||||
@@ -98,6 +98,12 @@
|
||||
26D4E4D32210A31F00A67B67 /* Starscream.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 269A175A21FFDB4C00F1F500 /* Starscream.framework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
26D4E4D42210A31F00A67B67 /* Swifter.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 269A175B21FFDB4C00F1F500 /* Swifter.framework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
26D4E4D92210A33A00A67B67 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269A18362204057900F1F500 /* main.swift */; };
|
||||
26D4E605221211FD00A67B67 /* SlackKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D4E602221211B900A67B67 /* SlackKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
26D4E6062212120100A67B67 /* SKClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D4E5FF221211B900A67B67 /* SKClient.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
26D4E6072212120500A67B67 /* SKCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D4E603221211B900A67B67 /* SKCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
26D4E6082212120900A67B67 /* SKRTMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D4E5FE221211B900A67B67 /* SKRTMAPI.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
26D4E6092212120F00A67B67 /* SKServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D4E600221211B900A67B67 /* SKServer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
26D4E60A2212121400A67B67 /* SKWebAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D4E601221211B900A67B67 /* SKWebAPI.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
@@ -220,6 +226,13 @@
|
||||
269A18332204055200F1F500 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
|
||||
269A18362204057900F1F500 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
|
||||
26D4E4D82210A31F00A67B67 /* Robot or Not Bot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Robot or Not Bot.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
26D4E5FE221211B900A67B67 /* SKRTMAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SKRTMAPI.h; sourceTree = "<group>"; };
|
||||
26D4E5FF221211B900A67B67 /* SKClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SKClient.h; sourceTree = "<group>"; };
|
||||
26D4E600221211B900A67B67 /* SKServer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SKServer.h; sourceTree = "<group>"; };
|
||||
26D4E601221211B900A67B67 /* SKWebAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SKWebAPI.h; sourceTree = "<group>"; };
|
||||
26D4E602221211B900A67B67 /* SlackKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlackKit.h; sourceTree = "<group>"; };
|
||||
26D4E603221211B900A67B67 /* SKCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SKCore.h; sourceTree = "<group>"; };
|
||||
26D4E604221211B900A67B67 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -304,6 +317,7 @@
|
||||
263B0FC521FE23C200AF9EF9 /* SKRTMAPI */,
|
||||
263B0FDF21FE23DB00AF9EF9 /* SKServer */,
|
||||
263B0FB821FE23B000AF9EF9 /* SKWebAPI */,
|
||||
26D4E5FD221211B900A67B67 /* Supporting Files */,
|
||||
269A18272204048300F1F500 /* Examples */,
|
||||
263B10CB21FE4DD900AF9EF9 /* Frameworks */,
|
||||
263B0FD121FE23CD00AF9EF9 /* SlackKit.framework */,
|
||||
@@ -684,6 +698,20 @@
|
||||
path = Sources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
26D4E5FD221211B900A67B67 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
26D4E602221211B900A67B67 /* SlackKit.h */,
|
||||
26D4E5FF221211B900A67B67 /* SKClient.h */,
|
||||
26D4E603221211B900A67B67 /* SKCore.h */,
|
||||
26D4E5FE221211B900A67B67 /* SKRTMAPI.h */,
|
||||
26D4E600221211B900A67B67 /* SKServer.h */,
|
||||
26D4E601221211B900A67B67 /* SKWebAPI.h */,
|
||||
26D4E604221211B900A67B67 /* Info.plist */,
|
||||
);
|
||||
path = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
@@ -691,6 +719,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
26D4E6072212120500A67B67 /* SKCore.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -698,6 +727,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
26D4E6062212120100A67B67 /* SKClient.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -705,6 +735,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
26D4E60A2212121400A67B67 /* SKWebAPI.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -712,6 +743,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
26D4E6082212120900A67B67 /* SKRTMAPI.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -719,6 +751,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
26D4E605221211FD00A67B67 /* SlackKit.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -726,6 +759,7 @@
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
26D4E6092212120F00A67B67 /* SKServer.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -1246,7 +1280,7 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1276,7 +1310,7 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1306,7 +1340,8 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1336,7 +1371,8 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1366,7 +1402,8 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1396,7 +1433,8 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1428,7 +1466,7 @@
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1460,7 +1498,7 @@
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1491,7 +1529,7 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1523,7 +1561,7 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1555,7 +1593,7 @@
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -1587,7 +1625,7 @@
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Info.plist";
|
||||
INFOPLIST_FILE = "$(PROJECT_DIR)/Supporting Files/Info.plist";
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
||||
@@ -22,11 +22,13 @@
|
||||
// THE SOFTWARE.
|
||||
|
||||
import Foundation
|
||||
#if !COCOAPODS
|
||||
@_exported import SKClient
|
||||
@_exported import SKCore
|
||||
@_exported import SKRTMAPI
|
||||
@_exported import SKServer
|
||||
@_exported import SKWebAPI
|
||||
#endif
|
||||
|
||||
public final class SlackKit: RTMAdapter {
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1</string>
|
||||
<string>4.2.1</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
</dict>
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// SKClient.h
|
||||
// SKClient
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//! Project version number for SKClient.
|
||||
FOUNDATION_EXPORT double SKClientVersionNumber;
|
||||
|
||||
//! Project version string for SKClient.
|
||||
FOUNDATION_EXPORT const unsigned char SKClientVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SKClient/PublicHeader.h>
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// SKCore.h
|
||||
// SKCore
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//! Project version number for SKCore.
|
||||
FOUNDATION_EXPORT double SKCoreVersionNumber;
|
||||
|
||||
//! Project version string for SKCore.
|
||||
FOUNDATION_EXPORT const unsigned char SKCoreVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SKCore/PublicHeader.h>
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// SKRTMAPI.h
|
||||
// SKRTMAPI
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//! Project version number for SKRTMAPI.
|
||||
FOUNDATION_EXPORT double SKRTMAPIVersionNumber;
|
||||
|
||||
//! Project version string for SKRTMAPI.
|
||||
FOUNDATION_EXPORT const unsigned char SKRTMAPIVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SKRTMAPI/PublicHeader.h>
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// SKServer.h
|
||||
// SKServer
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//! Project version number for SKServer.
|
||||
FOUNDATION_EXPORT double SKServerVersionNumber;
|
||||
|
||||
//! Project version string for SKServer.
|
||||
FOUNDATION_EXPORT const unsigned char SKServerVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SKServer/PublicHeader.h>
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// SKWebAPI.h
|
||||
// SKWebAPI
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//! Project version number for SKWebAPI.
|
||||
FOUNDATION_EXPORT double SKWebAPIVersionNumber;
|
||||
|
||||
//! Project version string for SKWebAPI.
|
||||
FOUNDATION_EXPORT const unsigned char SKWebAPIVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SKWebAPI/PublicHeader.h>
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// SlackKit.h
|
||||
// SlackKit
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//! Project version number for SlackKit.
|
||||
FOUNDATION_EXPORT double SlackKitVersionNumber;
|
||||
|
||||
//! Project version string for Moya.
|
||||
FOUNDATION_EXPORT const unsigned char SlackKitVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <SlackKit/PublicHeader.h>
|
||||
Reference in New Issue
Block a user