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

Commit b8c3c4a

Browse files
noppefoxwolfpvzig
authored andcommitted
Support search request (#173)
1 parent b48e47b commit b8c3c4a

File tree

2 files changed

+100
-0
lines changed

2 files changed

+100
-0
lines changed

SKWebAPI/Sources/Endpoint.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,7 @@ public enum Endpoint: String {
9393
case usersProfileSet = "users.profile.set"
9494
case usersSetActive = "users.setActive"
9595
case usersSetPresence = "users.setPresence"
96+
case searchAll = "search.all"
97+
case searchFiles = "search.files"
98+
case searchMessages = "search.messages"
9699
}

SKWebAPI/Sources/WebAPI.swift

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,6 +1264,103 @@ extension WebAPI {
12641264
}
12651265
}
12661266

1267+
// MARK: - Search
1268+
extension WebAPI {
1269+
public enum SearchSort: String {
1270+
case score
1271+
case timestamp
1272+
}
1273+
public enum SearchSortDirection: String {
1274+
case asc
1275+
case desc
1276+
}
1277+
1278+
public func search(
1279+
query: String,
1280+
count: Int = 20,
1281+
highlight: Bool = false,
1282+
page: Int = 1,
1283+
sort: SearchSort = .score,
1284+
sortDir: SearchSortDirection = .desc,
1285+
success: ((_ files: [[String : Any]]?, _ messages: [[String : Any]]?) -> Void)?,
1286+
failure: FailureClosure?
1287+
) {
1288+
let parameters: [String: Any] = [
1289+
"token": token,
1290+
"query": query,
1291+
"count": count,
1292+
"highlight": highlight,
1293+
"page": page,
1294+
"sort": sort.rawValue,
1295+
"sort_dir": sortDir.rawValue,
1296+
]
1297+
networkInterface.request(.searchAll, parameters: parameters, successClosure: { (response) in
1298+
success?(
1299+
(response["files"] as? [String : Any])?["matches"] as? [[String : Any]],
1300+
(response["messages"] as? [String : Any])?["matches"] as? [[String : Any]]
1301+
)
1302+
}) { (error) in
1303+
failure?(error)
1304+
}
1305+
}
1306+
1307+
public func searchFiles(
1308+
query: String,
1309+
count: Int = 20,
1310+
highlight: Bool = false,
1311+
page: Int = 1,
1312+
sort: SearchSort = .score,
1313+
sortDir: SearchSortDirection = .desc,
1314+
success: ((_ files: [[String : Any]]?) -> Void)?,
1315+
failure: FailureClosure?
1316+
) {
1317+
let parameters: [String: Any] = [
1318+
"token": token,
1319+
"query": query,
1320+
"count": count,
1321+
"highlight": highlight,
1322+
"page": page,
1323+
"sort": sort.rawValue,
1324+
"sort_dir": sortDir.rawValue,
1325+
]
1326+
networkInterface.request(.searchFiles, parameters: parameters, successClosure: { (response) in
1327+
success?(
1328+
(response["files"] as? [String : Any])?["matches"] as? [[String : Any]]
1329+
)
1330+
}) { (error) in
1331+
failure?(error)
1332+
}
1333+
}
1334+
1335+
public func searchMessages(
1336+
query: String,
1337+
count: Int = 20,
1338+
highlight: Bool = false,
1339+
page: Int = 1,
1340+
sort: SearchSort = .score,
1341+
sortDir: SearchSortDirection = .desc,
1342+
success: ((_ messages: [[String : Any]]?) -> Void)?,
1343+
failure: FailureClosure?
1344+
) {
1345+
let parameters: [String: Any] = [
1346+
"token": token,
1347+
"query": query,
1348+
"count": count,
1349+
"highlight": highlight,
1350+
"page": page,
1351+
"sort": sort.rawValue,
1352+
"sort_dir": sortDir.rawValue,
1353+
]
1354+
networkInterface.request(.searchMessages, parameters: parameters, successClosure: { (response) in
1355+
success?(
1356+
(response["messages"] as? [String : Any])?["matches"] as? [[String : Any]]
1357+
)
1358+
}) { (error) in
1359+
failure?(error)
1360+
}
1361+
}
1362+
}
1363+
12671364
// MARK: - Utilities
12681365
extension WebAPI {
12691366
fileprivate func encodeAttachments(_ attachments: [Attachment?]?) -> String? {

0 commit comments

Comments
 (0)