Explorar el Código

Fix cookies on DPF

alqindiirsyam hace 1 año
padre
commit
1cd7228be8

BIN
appbuilder-ios/DigiXLite/DigiXLite.xcworkspace/xcuserdata/akhmadalqindiirsyam.xcuserdatad/UserInterfaceState.xcuserstate


+ 6 - 0
appbuilder-ios/DigiXLite/DigiXLite/Source/DigiX.swift

@@ -599,6 +599,9 @@ public class DigiX: NSObject {
             
             let cookies = HTTPCookie.cookies(withResponseHeaderFields: fields, for: url)
             HTTPCookieStorage.shared.setCookies(cookies, for: url, mainDocumentURL: nil)
+            if let cookieHeader = HTTPCookie.requestHeaderFields(with: cookies)["Cookie"] {
+                Utils.setCookiesMobile(value: cookieHeader.replacingOccurrences(of: "; ", with: ";"))
+            }
 
             let dataEncode = String(data: data, encoding: .utf8)!
 //            print("dataEncode \(dataEncode.trimmingCharacters(in: .whitespacesAndNewlines))")
@@ -656,6 +659,9 @@ public class DigiX: NSObject {
                     
                     let cookies = HTTPCookie.cookies(withResponseHeaderFields: fields, for: url)
                     HTTPCookieStorage.shared.setCookies(cookies, for: url, mainDocumentURL: nil)
+                    if let cookieHeader = HTTPCookie.requestHeaderFields(with: cookies)["Cookie"] {
+                        Utils.setCookiesMobile(value: cookieHeader.replacingOccurrences(of: "; ", with: ";"))
+                    }
                     
                     result = true
                 }

+ 15 - 2
appbuilder-ios/DigiXLite/DigiXLite/Source/Download.swift

@@ -58,8 +58,21 @@ public class Download {
                 sep = "/"
             }
             let fullURL = "\(baseURL)\(sep)\(filename)"
+            //print("FULL URL: \(fullURL)")
+            let BOUNDARY = "esuploader-" + "\(Date().currentTimeMillis())"
+            let MIME_TYPE = "multipart/form-data; boundary=" + BOUNDARY
+            let headers: HTTPHeaders = [
+                "Content-Type": MIME_TYPE,
+                "Host": Utils.getURLBase().components(separatedBy: "/")[2],
+                "Accept-Encoding": "gzip, deflate, br",
+                "Connection": "Keep-Alive",
+                "Accept": "*/*",
+                "User-Agent": Utils.getUserAgent(),
+                "Cookie": Utils.getCookiesMobile()
+            ]
+            //print("HEADER: \(headers)")
             do {
-                let downloadRequest = AF.download(fullURL)
+                let downloadRequest = AF.download(fullURL, headers: headers)
                 .downloadProgress(queue: downloadBufferQueue) { progress in
                     let frac = progress.fractionCompleted*100
                     if frac != 100.0 {
@@ -67,7 +80,7 @@ public class Download {
                     }
                 }
                 .responseData { result in
-                    if let successResponse = result.value {
+                    if let response = result.response, response.statusCode == 200, let successResponse = result.value {
                         //print("Response success")
                         do {
                             let documentDir = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)

+ 19 - 5
appbuilder-ios/DigiXLite/DigiXLite/Source/Network.swift

@@ -213,6 +213,20 @@ public class Network {
             catch {}
         }
         
+        //print("FULL URL: \(endUrl)")
+        let BOUNDARY = "esuploader-" + "\(Date().currentTimeMillis())"
+        let MIME_TYPE = "multipart/form-data; boundary=" + BOUNDARY
+        let headers: HTTPHeaders = [
+            "Content-Type": MIME_TYPE,
+            "Host": Utils.getURLBase().components(separatedBy: "/")[2],
+            "Accept-Encoding": "gzip, deflate, br",
+            "Connection": "Keep-Alive",
+            "Accept": "*/*",
+            "User-Agent": Utils.getUserAgent(),
+            "Cookie": Utils.getCookiesMobile()
+        ]
+        //print("HEADER: \(headers)")
+        
         let uploadRequest = AF.upload(multipartFormData: { (multipartFormData: MultipartFormData) in
             for (key, value) in parameters {
                 multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
@@ -225,10 +239,10 @@ public class Network {
                 //print(multipartFormData)
             }
             
-        }, to: endUrl)
+        }, to: endUrl, headers: headers)
         .responseJSON { result in
-            if let successResponse = result.value as? [String:Any] {
-                print("Response success")
+            if let response = result.response, response.statusCode == 200, let successResponse = result.value as? [String:Any] {
+                //print("Response success")
                 for url in filesIn {
                     DigiX.removeUploadFile(forKey: url.lastPathComponent)
                 }
@@ -237,12 +251,12 @@ public class Network {
             }
             else {
                 let statusCode = result.response?.statusCode
-                print("Response fail: \(statusCode)")
+                //print("Response fail: \(statusCode)")
                 completion(false,0,nil)
             }
         }
         .uploadProgress { progress in
-            print("Response progress: \(progress.fractionCompleted*100)")
+            //print("Response progress: \(progress.fractionCompleted*100)")
             let frac = progress.fractionCompleted*100
             if frac != 100.0 {
                 completion(!progress.isCancelled,frac,nil)

+ 15 - 5
appbuilder-ios/DigiXLite/DigiXLite/Source/Utils.swift

@@ -154,6 +154,14 @@ public final class Utils {
         UserDefaults.standard.string(forKey: "fb_config_mode") ?? "1"
     }
     
+    static func setCookiesMobile(value: String) {
+        UserDefaults.standard.set(value, forKey: "cookies_mobile")
+    }
+
+    static func getCookiesMobile() -> String {
+        UserDefaults.standard.string(forKey: "cookies_mobile") ?? ""
+    }
+    
     
     public static func sGetCurrentDateTime(sFormat: String!) -> String! {
         let todaysDate = NSDate()
@@ -305,11 +313,13 @@ public final class Utils {
         var request = URLRequest(url: url)
         request.httpMethod = "GET"
         request.setValue(Utils.getUserAgent(), forHTTPHeaderField: "User-Agent")
-        let cookies = HTTPCookieStorage.shared.cookies ?? []
-        if let cookieHeader = HTTPCookie.requestHeaderFields(with: cookies)["Cookie"] {
-//            print("listCookiee: \(cookieHeader)")
-            request.setValue(cookieHeader, forHTTPHeaderField: "Cookie")
-        }
+//        let cookies = HTTPCookieStorage.shared.cookies ?? []
+//        if let cookieHeader = HTTPCookie.requestHeaderFields(with: cookies)["Cookie"] {
+////        print("listCookiee: \(cookieHeader)")
+//           request.setValue(cookieHeader, forHTTPHeaderField: "Cookie")
+//        }
+        request.setValue(Utils.getCookiesMobile(), forHTTPHeaderField: "Cookie")
+//        print("DATA SEND MOBILE \(Utils.getUserAgent()) <> \(Utils.getCookiesMobile())")
         let task = URLSession.shared.dataTask(with: request, completionHandler: completion)
         task.resume()
     }

+ 6 - 6
appbuilder-ios/NexilisLite/NexilisLite/Source/Nexilis.swift

@@ -599,9 +599,9 @@ public class Nexilis: NSObject {
             
             let cookies = HTTPCookie.cookies(withResponseHeaderFields: fields, for: url)
             HTTPCookieStorage.shared.setCookies(cookies, for: url, mainDocumentURL: nil)
-             if let cookieHeader = HTTPCookie.requestHeaderFields(with: cookies)["Cookie"] {
-                 Utils.setCookiesMobile(value: cookieHeader.replacingOccurrences(of: "; ", with: ";"))
-             }
+            if let cookieHeader = HTTPCookie.requestHeaderFields(with: cookies)["Cookie"] {
+             Utils.setCookiesMobile(value: cookieHeader.replacingOccurrences(of: "; ", with: ";"))
+            }
 
             let dataEncode = String(data: data, encoding: .utf8)!
 //            print("dataEncode \(dataEncode.trimmingCharacters(in: .whitespacesAndNewlines))")
@@ -659,9 +659,9 @@ public class Nexilis: NSObject {
                     
                     let cookies = HTTPCookie.cookies(withResponseHeaderFields: fields, for: url)
                     HTTPCookieStorage.shared.setCookies(cookies, for: url, mainDocumentURL: nil)
-                     if let cookieHeader = HTTPCookie.requestHeaderFields(with: cookies)["Cookie"] {
-                         Utils.setCookiesMobile(value: cookieHeader.replacingOccurrences(of: "; ", with: ";"))
-                     }
+                    if let cookieHeader = HTTPCookie.requestHeaderFields(with: cookies)["Cookie"] {
+                     Utils.setCookiesMobile(value: cookieHeader.replacingOccurrences(of: "; ", with: ";"))
+                    }
                     
                     result = true
                 }