Compare commits

...

14 Commits

Author SHA1 Message Date
Peter Zignego 6385afb34a Fix preprocessor macros 2019-02-19 23:28:05 -05:00
Peter Zignego b880356dde Don’t build for CocoaPods 2019-02-19 22:47:36 -05:00
Peter Zignego fdd2a5aa36 4.2.1 2019-02-19 22:19:23 -05:00
Peter Zignego 93f8da2f69 Merge pull request #146 from pvzig/podspec
Fix podspec
2019-02-19 22:01:10 -05:00
Peter Zignego a165f3e57f Fix podspec 2019-02-19 21:40:33 -05:00
Peter Zignego d7f2221d77 Merge pull request #145 from rectalogic/files
Message contains an array of "files", not a single "file".
2019-02-18 22:51:08 -05:00
Peter Zignego 02bda676a9 Merge pull request #144 from henry2423/master
Add support for Ephemeral message API
2019-02-18 22:50:11 -05:00
Peter Zignego e4bd44e939 Merge pull request #140 from RobotsAndPencils/support-multiple-files
Add support for multiple files in a single event
2019-02-16 13:51:30 -05:00
Andrew Wason d83fbb1d7e Message contains an array of "files", not a single "file". 2019-02-15 17:13:59 -05:00
Henry Huang c2734a66c3 [FIX] sendEphemeral function parameter 2019-02-15 15:07:56 -06:00
Henry Huang 721f8964cf [ADD] post Ephemeral message API function 2019-02-15 15:02:57 -06:00
Brandon Evans 37ca701ae0 Add support for multiple files in a single event
> The file attribute attached to messages is replaced with a new files field that includes an array of files in a different format instead.
https://api.slack.com/changelog/2018-05-file-threads-soon-tread
2019-02-15 13:59:30 -07:00
Peter Zignego c1a89eedda Merge pull request #141 from RobotsAndPencils/add-user-profile-status
Add users.profile.set endpoint
2019-02-15 13:45:55 -05:00
Brandon Evans 8aeb88cea3 Add users.profile.set endpoint
This isn't an ideal implementation because it's not clear from the documentation if sending everything in the URL for a JSON request is supported, but this does work when tested manually.

This isn't complete support for the endpoint. In particular, custom profile fields won't be set.

https://api.slack.com/methods/users.profile.set
2019-02-14 17:33:32 -07:00
26 changed files with 327 additions and 102 deletions
+56 -48
View File
@@ -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)
}
}
+2 -2
View File
@@ -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] {
+2 -3
View File
@@ -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 {
+6
View File
@@ -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
+2
View File
@@ -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?
+2
View File
@@ -22,7 +22,9 @@
// THE SOFTWARE.
import Foundation
#if !COCOAPODS
import SKCore
#endif
public struct SKResponse {
let text: String
+2
View File
@@ -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()
+2
View File
@@ -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"
}
+2
View File
@@ -25,7 +25,9 @@
import Dispatch
#endif
import Foundation
#if !COCOAPODS
import SKCore
#endif
public struct NetworkInterface {
+70
View File
@@ -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
View File
@@ -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
+50 -12
View File
@@ -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)",
+2
View File
@@ -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 {
+1 -1
View File
@@ -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>
+14
View File
@@ -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>
+14
View File
@@ -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>
+14
View File
@@ -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>
+14
View File
@@ -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>
+14
View File
@@ -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>
+14
View File
@@ -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>