Fix minor code style issues

pull/18/head
Niels Andriesse 6 years ago
parent 8c8f6231a5
commit 20472c8bed

@ -7,7 +7,7 @@
<key>CarthageVersion</key> <key>CarthageVersion</key>
<string>0.33.0</string> <string>0.33.0</string>
<key>OSXVersion</key> <key>OSXVersion</key>
<string>10.14.4</string> <string>10.14.5</string>
<key>WebRTCCommit</key> <key>WebRTCCommit</key>
<string>1445d719bf05280270e9f77576f80f973fd847f8 M73</string> <string>1445d719bf05280270e9f77576f80f973fd847f8 M73</string>
</dict> </dict>

@ -63,12 +63,7 @@ static NSTimeInterval launchStartedAt;
@property (nonatomic) BOOL hasInitialRootViewController; @property (nonatomic) BOOL hasInitialRootViewController;
@property (nonatomic) BOOL areVersionMigrationsComplete; @property (nonatomic) BOOL areVersionMigrationsComplete;
@property (nonatomic) BOOL didAppLaunchFail; @property (nonatomic) BOOL didAppLaunchFail;
@property (nonatomic) LKP2PServer *lokiP2PServer; // Loki
@end
@interface AppDelegate ()
@property (nonatomic) LokiP2PServer *lokiP2PServer;
@end @end
@ -194,9 +189,7 @@ static NSTimeInterval launchStartedAt;
[DDLog flushLog]; [DDLog flushLog];
if (_lokiP2PServer) { if (self.lokiP2PServer) { [self.lokiP2PServer stop]; }
[_lokiP2PServer stop];
}
} }
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
@ -319,20 +312,21 @@ static NSTimeInterval launchStartedAt;
[OWSAnalytics appLaunchDidBegin]; [OWSAnalytics appLaunchDidBegin];
// Loki // Loki
_lokiP2PServer = [LokiP2PServer new]; self.lokiP2PServer = [LKP2PServer new];
// We try to bind to 8081, if we can't then we just fallback to any random port // We try to bind to 8081, if we can't then we just fallback to any random port
NSArray *ports = @[@8081, @0]; NSArray *ports = @[ @8081, @0 ];
for (NSNumber *port in ports) { for (NSNumber *port in ports) {
if (_lokiP2PServer.isRunning) { break; } if (self.lokiP2PServer.isRunning) { break; }
if ([_lokiP2PServer startOnPort:port.unsignedIntegerValue]) { BOOL isStarted = [self.lokiP2PServer startOnPort:port.unsignedIntegerValue];
OWSLogInfo(@"[Loki P2P Server]: Started server at %@", _lokiP2PServer.serverURL); if (isStarted) {
OWSLogInfo(@"[Loki] Started server at %@.", self.lokiP2PServer.serverURL);
break; break;
} }
} }
if (!_lokiP2PServer.isRunning) { if (!self.lokiP2PServer.isRunning) {
OWSLogWarn(@"[Loki P2P Server]: Failed to start loki P2P server"); OWSLogWarn(@"[Loki] Failed to start P2P server.");
} }
return YES; return YES;

@ -1,14 +1,13 @@
import GCDWebServer import GCDWebServer
// Convenience functions private extension GCDWebServerResponse {
fileprivate extension GCDWebServerResponse {
convenience init<E: RawRepresentable>(statusCode: E) where E.RawValue == Int { convenience init<E: RawRepresentable>(statusCode: E) where E.RawValue == Int {
self.init(statusCode: statusCode.rawValue) self.init(statusCode: statusCode.rawValue)
} }
} }
fileprivate extension GCDWebServerDataRequest { private extension GCDWebServerDataRequest {
var truncatedContentType: String? { var truncatedContentType: String? {
guard let contentType = contentType else { return nil } guard let contentType = contentType else { return nil }
guard let substring = contentType.split(separator: ";").first else { return contentType } guard let substring = contentType.split(separator: ";").first else { return contentType }
@ -17,24 +16,25 @@ fileprivate extension GCDWebServerDataRequest {
// GCDWebServerDataRequest already provides this implementation // GCDWebServerDataRequest already provides this implementation
// However it will abort when running in DEBUG, we don't want that so we just override it with a version which doesn't abort // However it will abort when running in DEBUG, we don't want that so we just override it with a version which doesn't abort
var jsonObject: [String: Any]? { var jsonObject: JSON? {
let acceptedMimeTypes = ["application/json", "text/json", "text/javascript"] let acceptedMimeTypes = [ "application/json", "text/json", "text/javascript" ]
guard let mimeType = truncatedContentType, acceptedMimeTypes.contains(mimeType) else { return nil } guard let mimeType = truncatedContentType, acceptedMimeTypes.contains(mimeType) else { return nil }
do { do {
let object = try JSONSerialization.jsonObject(with: data, options: .allowFragments) let object = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
return object as? [String: Any] return object as? JSON
} catch let error { } catch let error {
Logger.debug("[Loki P2P Server] Failed to serialize json: \(error)") Logger.debug("[Loki] Failed to serialize JSON: \(error).")
} }
return nil return nil
} }
} }
@objc class LokiP2PServer : NSObject { @objc(LKP2PServer)
final class LokiP2PServer : NSObject {
fileprivate enum StatusCode: Int { private enum StatusCode : Int {
case ok = 200 case ok = 200
case badRequest = 400 case badRequest = 400
case notFound = 404 case notFound = 404
@ -50,7 +50,7 @@ fileprivate extension GCDWebServerDataRequest {
return GCDWebServerResponse(statusCode: StatusCode.methodNotAllowed) return GCDWebServerResponse(statusCode: StatusCode.methodNotAllowed)
} }
let invalidMethods = ["GET", "PUT", "DELETE"] let invalidMethods = [ "GET", "PUT", "DELETE" ]
for method in invalidMethods { for method in invalidMethods {
webServer.addDefaultHandler(forMethod: method, request: GCDWebServerRequest.self, processBlock: invalidMethodProcessBlock) webServer.addDefaultHandler(forMethod: method, request: GCDWebServerRequest.self, processBlock: invalidMethodProcessBlock)
} }
@ -87,13 +87,8 @@ fileprivate extension GCDWebServerDataRequest {
return webServer return webServer
}() }()
@objc public var serverURL: URL? { @objc public var serverURL: URL? { return webServer.serverURL }
return webServer.serverURL @objc public var isRunning: Bool { return webServer.isRunning }
}
@objc public var isRunning: Bool {
return webServer.isRunning
}
@objc @discardableResult func start(onPort port: UInt) -> Bool { @objc @discardableResult func start(onPort port: UInt) -> Bool {
guard !webServer.isRunning else { return false } guard !webServer.isRunning else { return false }
@ -101,7 +96,5 @@ fileprivate extension GCDWebServerDataRequest {
return webServer.isRunning return webServer.isRunning
} }
@objc func stop() { @objc func stop() { webServer.stop() }
webServer.stop()
}
} }

@ -35,12 +35,8 @@ public extension LokiAPI {
let wrappedMessage = try LokiMessageWrapper.wrap(message: signalMessage, timestamp: timestamp) let wrappedMessage = try LokiMessageWrapper.wrap(message: signalMessage, timestamp: timestamp)
let data = wrappedMessage.base64EncodedString() let data = wrappedMessage.base64EncodedString()
let destination = signalMessage["destination"] as! String let destination = signalMessage["destination"] as! String
var ttl = LokiAPI.defaultMessageTTL var ttl = LokiAPI.defaultMessageTTL
if let messageTTL = signalMessage["ttl"] as? UInt, messageTTL > 0 { if let messageTTL = signalMessage["ttl"] as? UInt, messageTTL > 0 { ttl = UInt64(messageTTL) }
ttl = UInt64(messageTTL)
}
if isPoWRequired { if isPoWRequired {
// The storage server takes a time interval in milliseconds // The storage server takes a time interval in milliseconds
let now = NSDate.ows_millisecondTimeStamp() let now = NSDate.ows_millisecondTimeStamp()

@ -1,6 +1,5 @@
public class LokiMessageWrapper { public enum LokiMessageWrapper {
private init() {}
public enum WrappingError : LocalizedError { public enum WrappingError : LocalizedError {
case failedToWrapData case failedToWrapData
@ -82,7 +81,7 @@ public class LokiMessageWrapper {
/// - Parameter data: The data from the storage server (not base 64 encoded). /// - Parameter data: The data from the storage server (not base 64 encoded).
/// - Returns: An `SSKProtoEnvelope` object. /// - Returns: An `SSKProtoEnvelope` object.
/// - Throws: A `WrappingError` if something went wrong. /// - Throws: A `WrappingError` if something went wrong.
static func unwrap(data: Data) throws -> SSKProtoEnvelope { public static func unwrap(data: Data) throws -> SSKProtoEnvelope {
do { do {
let webSocketMessage = try WebSocketProtoWebSocketMessage.parseData(data) let webSocketMessage = try WebSocketProtoWebSocketMessage.parseData(data)
let envelope = webSocketMessage.request!.body! let envelope = webSocketMessage.request!.body!

@ -1,36 +1,32 @@
public class LokiP2PMessageHandler { public final class LokiP2PMessageHandler {
private let messageReceiver = SSKEnvironment.shared.messageReceiver
// MARK: Initialization
public static let shared = LokiP2PMessageHandler() public static let shared = LokiP2PMessageHandler()
private var messageReceiver: OWSMessageReceiver {
return SSKEnvironment.shared.messageReceiver
}
private init() {} private init() { }
// MARK: General
public func handleReceivedMessage(base64EncodedData: String) { public func handleReceivedMessage(base64EncodedData: String) {
guard let data = Data(base64Encoded: base64EncodedData) else { guard let data = Data(base64Encoded: base64EncodedData) else {
Logger.warn("[LokiP2PMessageHandler] Failed to decode p2p message data") Logger.warn("[Loki] Failed to decode data for P2P message.")
return return
} }
guard let envelope = try? LokiMessageWrapper.unwrap(data: data) else { guard let envelope = try? LokiMessageWrapper.unwrap(data: data) else {
Logger.warn("[LokiP2PMessageHandler] Failed to unwrap p2p data") Logger.warn("[Loki] Failed to unwrap data for P2P message.")
return return
} }
// We need to set the P2P field on the envelope
// We need to set the p2p field on the envelope
let builder = envelope.asBuilder() let builder = envelope.asBuilder()
builder.setIsPtpMessage(true) builder.setIsPtpMessage(true)
// Send it to the message receiver
// Send it to message receiver
do { do {
let newEnvelope = try builder.build() let newEnvelope = try builder.build()
let envelopeData = try newEnvelope.serializedData() let envelopeData = try newEnvelope.serializedData()
messageReceiver.handleReceivedEnvelopeData(envelopeData) messageReceiver.handleReceivedEnvelopeData(envelopeData)
} catch let error { } catch let error {
Logger.warn("[LokiP2PMessageHandler] Something went wrong while converting proto: \(error)") Logger.warn("[Loki] Something went wrong during proto conversion: \(error).")
owsFailDebug("Failed to build envelope")
} }
} }

@ -8,10 +8,7 @@
- (BOOL)isFriendRequest { return YES; } - (BOOL)isFriendRequest { return YES; }
- (uint)ttl { - (uint)ttl { return 4 * kDayInterval; } // Friend requests should stay for the longest on the storage server
// Friend requests should stay for the longest on the storage server
return 4 * kDayInterval;
}
- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient { - (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient {
SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient]; SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient];

@ -1,7 +1,7 @@
@objc public extension SSKProtoPrekeyBundleMessage { @objc public extension SSKProtoPrekeyBundleMessage {
@objc public class func builder(fromPreKeyBundle preKeyBundle: PreKeyBundle) -> SSKProtoPrekeyBundleMessageBuilder { @objc public static func builder(fromPreKeyBundle preKeyBundle: PreKeyBundle) -> SSKProtoPrekeyBundleMessageBuilder {
let builder = self.builder() let builder = self.builder()
builder.setIdentityKey(preKeyBundle.identityKey) builder.setIdentityKey(preKeyBundle.identityKey)

@ -141,10 +141,10 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) {
@property (nonatomic, readonly) BOOL isOnline; @property (nonatomic, readonly) BOOL isOnline;
// Loki: Bool to indicate if proof of work is being calculated for this message /// Loki: Bool to indicate if proof of work is being calculated for this message
@property (atomic, readonly) BOOL isCalculatingPoW; @property (atomic, readonly) BOOL isCalculatingPoW;
// Loki: Time to live for the message in seconds /// Loki: Time to live for the message in seconds
@property (nonatomic, readonly) uint ttl; @property (nonatomic, readonly) uint ttl;
/** /**

@ -1155,7 +1155,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt
} }
- (uint)ttl { - (uint)ttl {
// Time to live for all messages should be 1 day // Time to live for all messages (except friend request messages) should be 1 day
// TODO: Change this to return a value that the user chose // TODO: Change this to return a value that the user chose
return 1 * kDayInterval; return 1 * kDayInterval;
} }

Loading…
Cancel
Save