Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(883)

Side by Side Diff: remoting/ios/host_refresh.mm

Issue 475333004: Remove old Chromoting iOS client (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « remoting/ios/host_refresh.h ('k') | remoting/ios/host_refresh_test_helper.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #if !defined(__has_feature) || !__has_feature(objc_arc)
6 #error "This file requires ARC support."
7 #endif
8
9 #import "remoting/ios/host_refresh.h"
10
11 #import "remoting/ios/authorize.h"
12 #import "remoting/ios/host.h"
13 #import "remoting/ios/utility.h"
14
15 namespace {
16 NSString* kDefaultErrorMessage = @"The Host list refresh is not available at "
17 @"this time. Please try again later.";
18 } // namespace
19
20 @interface HostRefresh (Private)
21 - (void)authentication:(GTMOAuth2Authentication*)auth
22 request:(NSMutableURLRequest*)request
23 error:(NSError*)error;
24 - (void)formatErrorMessage:(NSString*)error;
25 - (void)notifyDelegate;
26 @end
27
28 // Logic flow begins with refreshHostList, and continues until an error occurs,
29 // or the host list is returned to the delegate
30 @implementation HostRefresh
31
32 @synthesize jsonData = _jsonData;
33 @synthesize errorMessage = _errorMessage;
34 @synthesize delegate = _delegate;
35
36 // Override default constructor and initialize internals
37 - (id)init {
38 self = [super init];
39 if (self) {
40 _jsonData = [[NSMutableData alloc] init];
41 }
42 return self;
43 }
44
45 // Begin the authentication and authorization process. Begin the process by
46 // creating an oAuth2 request to google api's including the needed scopes to
47 // fetch the users host list.
48 - (void)refreshHostList:(GTMOAuth2Authentication*)authReq
49 delegate:(id<HostRefreshDelegate>)delegate {
50
51 CHECK(_delegate == nil); // Do not reuse an instance of this class
52
53 _delegate = delegate;
54
55 [Authorize beginRequest:authReq
56 delegate:self
57 didFinishSelector:@selector(authentication:request:error:)];
58 }
59
60 // Handle completion of the authorization process. Append service credentials
61 // for jabber. If an error occurred, notify user.
62 - (void)authentication:(NSObject*)auth
63 request:(NSMutableURLRequest*)request
64 error:(NSError*)error {
65 if (error != nil) {
66 [self formatErrorMessage:error.localizedDescription];
67 } else {
68 // Add credentials for service
69 [Authorize appendCredentials:request];
70
71 // Begin connection, the returned reference is not useful right now and
72 // marked as __unused
73 __unused NSURLConnection* connection =
74 [[NSURLConnection alloc] initWithRequest:request delegate:self];
75 }
76 }
77
78 // @protocol NSURLConnectionDelegate, handle any error during connection
79 - (void)connection:(NSURLConnection*)connection
80 didFailWithError:(NSError*)error {
81 [self formatErrorMessage:[error localizedDescription]];
82
83 [self notifyDelegate];
84 }
85
86 // @protocol NSURLConnectionDataDelegate, may be called async multiple times.
87 // Each call appends the new data to the known data until completed.
88 - (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data {
89 [_jsonData appendData:data];
90 }
91
92 // @protocol NSURLConnectionDataDelegate
93 // Ensure connection succeeded: HTTP 200 OK
94 - (void)connection:(NSURLConnection*)connection
95 didReceiveResponse:(NSURLResponse*)response {
96 NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
97 if ([response respondsToSelector:@selector(allHeaderFields)]) {
98 NSNumber* responseCode =
99 [[NSNumber alloc] initWithInteger:[httpResponse statusCode]];
100 if (responseCode.intValue != 200) {
101 [self formatErrorMessage:[NSString
102 stringWithFormat:@"HTTP STATUS CODE: %d",
103 [httpResponse statusCode]]];
104 }
105 }
106 }
107
108 // @protocol NSURLConnectionDataDelegate handle a completed connection, parse
109 // received data, and return host list to delegate
110 - (void)connectionDidFinishLoading:(NSURLConnection*)connection {
111 [self notifyDelegate];
112 }
113
114 // Store a formatted error message to return later
115 - (void)formatErrorMessage:(NSString*)error {
116 _errorMessage = kDefaultErrorMessage;
117 if (error != nil && error.length > 0) {
118 _errorMessage = [_errorMessage
119 stringByAppendingString:[@" " stringByAppendingString:error]];
120 }
121 }
122
123 // The connection has finished, call to delegate
124 - (void)notifyDelegate {
125 if (_jsonData.length == 0 && _errorMessage == nil) {
126 [self formatErrorMessage:nil];
127 }
128
129 [_delegate hostListRefresh:[Host parseListFromJSON:_jsonData]
130 errorMessage:_errorMessage];
131 }
132 @end
OLDNEW
« no previous file with comments | « remoting/ios/host_refresh.h ('k') | remoting/ios/host_refresh_test_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698