pull/83/head
Niels Andriesse 5 years ago
parent 55344700d7
commit ab2b7528b4

@ -74,9 +74,9 @@ public class LokiDotNetAPI : NSObject {
throw error throw error
} }
// Send the request // Send the request
let isLokiFileServer = server.contains("file.lokinet.org") || server.contains("file-dev.lokinet.org") let isProxyingRequired = (server == LokiStorageAPI.server)
if isLokiFileServer { if isProxyingRequired {
LokiFileServerProxy(for: server).performLokiFileServerNSURLRequest(request as NSURLRequest).done { responseObject in let _ = LokiFileServerProxy(for: server).performLokiFileServerNSURLRequest(request as NSURLRequest).done { responseObject in
// Parse the server ID & download URL // Parse the server ID & download URL
guard let json = responseObject as? JSON, let data = json["data"] as? JSON, let serverID = data["id"] as? UInt64, let downloadURL = data["url"] as? String else { guard let json = responseObject as? JSON, let data = json["data"] as? JSON, let serverID = data["id"] as? UInt64, let downloadURL = data["url"] as? String else {
print("[Loki] Couldn't parse attachment from: \(responseObject).") print("[Loki] Couldn't parse attachment from: \(responseObject).")

@ -59,7 +59,7 @@ internal class LokiFileServerProxy : LokiHTTPClient {
let parametersAsData = try JSONSerialization.data(withJSONObject: tsRequest.parameters, options: []) let parametersAsData = try JSONSerialization.data(withJSONObject: tsRequest.parameters, options: [])
parametersAsString = !tsRequest.parameters.isEmpty ? String(bytes: parametersAsData, encoding: .utf8)! : "null" parametersAsString = !tsRequest.parameters.isEmpty ? String(bytes: parametersAsData, encoding: .utf8)! : "null"
} else { } else {
if let parametersAsData = request.httpBody { if let parametersAsInputStream = request.httpBodyStream, let parametersAsData = try? Data(from: parametersAsInputStream) {
parametersAsString = "{ \"fileUpload\" : \"\(String(data: parametersAsData.base64EncodedData(), encoding: .utf8) ?? "null")\" }" parametersAsString = "{ \"fileUpload\" : \"\(String(data: parametersAsData.base64EncodedData(), encoding: .utf8) ?? "null")\" }"
} else { } else {
parametersAsString = "null" parametersAsString = "null"

@ -0,0 +1,22 @@
extension Data {
init(from inputStream: InputStream) throws {
self.init()
inputStream.open()
defer { inputStream.close() }
let bufferSize = 1024
let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: bufferSize)
defer { buffer.deallocate() }
while inputStream.hasBytesAvailable {
let count = inputStream.read(buffer, maxLength: bufferSize)
if count < 0 {
throw inputStream.streamError!
} else if count == 0 {
break
} else {
append(buffer, count: count)
}
}
}
}
Loading…
Cancel
Save