Index: remoting/client/ios/domain/host.mm |
diff --git a/remoting/client/ios/domain/host.mm b/remoting/client/ios/domain/host.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c1cab764b57141bd90bed8f8a042fbe1afc9d433 |
--- /dev/null |
+++ b/remoting/client/ios/domain/host.mm |
@@ -0,0 +1,76 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#if !defined(__has_feature) || !__has_feature(objc_arc) |
+#error "This file requires ARC support." |
+#endif |
+ |
+#import "remoting/client/ios/domain/host.h" |
+ |
+@implementation Host |
+ |
+@synthesize createdTime = _createdTime; |
+@synthesize hostId = _hostId; |
+@synthesize hostName = _hostName; |
+@synthesize hostVersion = _hostVersion; |
+@synthesize jabberId = _jabberId; |
+@synthesize kind = _kind; |
+@synthesize publicKey = _publicKey; |
+@synthesize status = _status; |
+@synthesize updatedTime = _updatedTime; |
+@synthesize isOnline = _isOnline; |
+ |
+- (bool)isOnline { |
+ _isOnline = (self.status && [self.status isEqualToString:@"ONLINE"]); |
+ return _isOnline; |
+} |
+ |
+// Parse jsonData into Host list. |
++ (NSMutableArray<Host*>*)parseListFromJSON:(NSMutableData*)data { |
+ NSError* error; |
+ |
+ NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data |
+ options:kNilOptions |
+ error:&error]; |
+ NSDictionary* dataDict = [json objectForKey:@"data"]; |
+ NSArray* availableHosts = [dataDict objectForKey:@"items"]; |
+ NSMutableArray* hostList = [[NSMutableArray alloc] init]; |
+ NSUInteger idx = 0; |
+ NSDictionary* svr; |
+ NSUInteger count = [availableHosts count]; |
+ |
+ while (idx < count) { |
+ svr = [availableHosts objectAtIndex:idx++]; |
+ Host* host = [[Host alloc] init]; |
+ host.createdTime = [svr objectForKey:@"createdTime"]; |
+ host.hostId = [svr objectForKey:@"hostId"]; |
+ host.hostName = [svr objectForKey:@"hostName"]; |
+ host.hostVersion = [svr objectForKey:@"hostVersion"]; |
+ host.jabberId = [svr objectForKey:@"jabberId"]; |
+ host.kind = [svr objectForKey:@"kind"]; |
+ host.publicKey = [svr objectForKey:@"publicKey"]; |
+ host.status = [svr objectForKey:@"status"]; |
+ |
+ NSString* ISO8601DateString = [svr objectForKey:@"updatedTime"]; |
+ if (ISO8601DateString != nil) { |
+ NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; |
+ [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSz"]; |
+ host.updatedTime = [dateFormatter dateFromString:ISO8601DateString]; |
+ } |
+ |
+ [hostList addObject:host]; |
+ } |
+ |
+ return hostList; |
+} |
+ |
+- (NSComparisonResult)compare:(Host*)host { |
+ if (self.isOnline != host.isOnline) { |
+ return self.isOnline ? NSOrderedAscending : NSOrderedDescending; |
+ } else { |
+ return [self.hostName localizedCaseInsensitiveCompare:host.hostName]; |
+ } |
+} |
+ |
+@end |