@@ -3,27 +3,71 @@ import Foundation
33public final class AtomicSiteServiceRemote : ServiceRemoteWordPressComREST {
44 /// - parameter scrollID: Pass the scroll ID from the previous response to
55 /// fetch the next page.
6- public func getSiteErrorLogs( siteID: Int ,
6+ public func getErrorLogs( siteID: Int ,
7+ range: Range < Date > ,
8+ severity: AtomicErrorLogEntry . Severity ? = nil ,
9+ scrollID: String ? = nil ,
10+ pageSize: Int = 50 ,
11+ success: @escaping ( AtomicErrorLogsResponse ) -> Void ,
12+ failure: @escaping ( Error ) -> Void ) {
13+ let path = self . path ( forEndpoint: " sites/ \( siteID) /hosting/error-logs/ " , withVersion: . _2_0)
14+ var parameters = [
15+ " start " : " \( Int ( range. lowerBound. timeIntervalSince1970) ) " ,
16+ " end " : " \( Int ( range. upperBound. timeIntervalSince1970) ) " ,
17+ " sort_order " : " desc " ,
18+ " page_size " : " \( pageSize) "
19+ ] as [ String : String ]
20+ if let severity {
21+ parameters [ " filter[severity][] " ] = severity. rawValue
22+ }
23+ if let scrollID {
24+ parameters [ " scroll_id " ] = scrollID
25+ }
26+ wordPressComRestApi. GET ( path, parameters: parameters as [ String : AnyObject ] ) { responseObject, httpResponse in
27+ guard ( 200 ..< 300 ) . contains ( httpResponse? . statusCode ?? 0 ) ,
28+ let data = ( responseObject as? [ String : AnyObject ] ) ? [ " data " ] ,
29+ JSONSerialization . isValidJSONObject ( data) else {
30+ failure ( URLError ( . unknown) )
31+ return
32+ }
33+ do {
34+ let data = try JSONSerialization . data ( withJSONObject: data)
35+ let response = try JSONDecoder . apiDecoder. decode ( AtomicErrorLogsResponse . self, from: data)
36+ success ( response)
37+ } catch {
38+ WPKitLogError ( " Error parsing campaigns response: \( error) , \( responseObject) " )
39+ failure ( error)
40+ }
41+ } failure: { error, _ in
42+ failure ( error)
43+ }
44+ }
45+
46+ public func getWebServerLogs( siteID: Int ,
747 range: Range < Date > ,
8- severity: AtomicLogMessage . Severity ? = nil ,
48+ httpMethod: String ? = nil ,
49+ statusCode: Int ? = nil ,
950 scrollID: String ? = nil ,
1051 pageSize: Int = 50 ,
11- success: @escaping ( AtomicErrorLogsResponse ) -> Void ,
52+ success: @escaping ( AtomicWebServerLogsResponse ) -> Void ,
1253 failure: @escaping ( Error ) -> Void ) {
13- let path = self . path ( forEndpoint: " sites/ \( siteID) /hosting/error- logs/ " , withVersion: . _2_0)
54+ let path = self . path ( forEndpoint: " sites/ \( siteID) /hosting/logs/ " , withVersion: . _2_0)
1455 var parameters = [
1556 " start " : " \( Int ( range. lowerBound. timeIntervalSince1970) ) " ,
1657 " end " : " \( Int ( range. upperBound. timeIntervalSince1970) ) " ,
1758 " sort_order " : " desc " ,
1859 " page_size " : " \( pageSize) "
19- ] as [ String : AnyObject ]
20- if let severity {
21- parameters [ " filter[severity][] " ] = severity. rawValue as AnyObject
60+ ] as [ String : String ]
61+ if let httpMethod {
62+ parameters [ " filter[request_type][] " ] = httpMethod. uppercased ( )
63+ }
64+ if let statusCode {
65+ parameters [ " filter[status][] " ] = " \( statusCode) "
2266 }
2367 if let scrollID {
24- parameters [ " scroll_id " ] = scrollID as AnyObject
68+ parameters [ " scroll_id " ] = scrollID
2569 }
26- wordPressComRestApi. GET ( path, parameters: parameters) { responseObject, httpResponse in
70+ wordPressComRestApi. GET ( path, parameters: parameters as [ String : AnyObject ] ) { responseObject, httpResponse in
2771 guard ( 200 ..< 300 ) . contains ( httpResponse? . statusCode ?? 0 ) ,
2872 let data = ( responseObject as? [ String : AnyObject ] ) ? [ " data " ] ,
2973 JSONSerialization . isValidJSONObject ( data) else {
@@ -32,7 +76,7 @@ public final class AtomicSiteServiceRemote: ServiceRemoteWordPressComREST {
3276 }
3377 do {
3478 let data = try JSONSerialization . data ( withJSONObject: data)
35- let response = try JSONDecoder . apiDecoder. decode ( AtomicErrorLogsResponse . self, from: data)
79+ let response = try JSONDecoder . apiDecoder. decode ( AtomicWebServerLogsResponse . self, from: data)
3680 success ( response)
3781 } catch {
3882 WPKitLogError ( " Error parsing campaigns response: \( error) , \( responseObject) " )
0 commit comments