@@ -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
12681365extension WebAPI {
12691366 fileprivate func encodeAttachments( _ attachments: [ Attachment ? ] ? ) -> String ? {
0 commit comments