Skip to content

Commit 095e52d

Browse files
authored
Merge pull request #1883 from barijaona/errorOpenReader
Stop recurrent unsuccessful attempts to get tokens
2 parents 8c20367 + 7ca21b6 commit 095e52d

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

Vienna/Sources/Fetching/OpenReader.m

+30-3
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ typedef NS_ENUM (NSInteger, OpenReaderStatus) {
5151
waitingClientToken,
5252
missingTToken,
5353
waitingTToken,
54-
fullyAuthenticated
54+
fullyAuthenticated,
55+
clientTokenError
5556
};
5657

5758
#define VNA_LOG os_log_create("--", "OpenReader")
@@ -99,6 +100,9 @@ -(instancetype)init
99100
password = nil;
100101
APIBaseURL = nil;
101102
_asyncQueue = dispatch_queue_create("uk.co.opencommunity.vienna2.openReaderTasks", DISPATCH_QUEUE_SERIAL);
103+
[NSNotificationCenter.defaultCenter addObserver:self
104+
selector:@selector(handleRefreshStatusChange:)
105+
name:MA_Notify_RefreshStatus object:nil];
102106
}
103107

104108
return self;
@@ -127,7 +131,9 @@ -(NSMutableURLRequest *)requestFromURL:(NSURL *)url
127131
{
128132
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
129133
[self addClientTokenToRequest:request];
130-
[self specificHeadersPrepare:request];
134+
if (self.openReaderStatus != clientTokenError) {
135+
[self specificHeadersPrepare:request];
136+
}
131137
return request;
132138
}
133139

@@ -164,6 +170,8 @@ -(void)addClientTokenToRequest:(NSMutableURLRequest *)clientRequest
164170
}
165171

166172
switch (self.openReaderStatus) {
173+
case clientTokenError:
174+
return;
167175
case fullyAuthenticated:
168176
case waitingTToken:
169177
case missingTToken:
@@ -194,12 +202,14 @@ -(void)addClientTokenToRequest:(NSMutableURLRequest *)clientRequest
194202
self.openReaderStatus = notAuthenticated;
195203
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
196204
if (error) {
205+
self.openReaderStatus = clientTokenError;
197206
NSString * alertDescription = error.localizedDescription;
198207
if (![alertDescription isEqualToString:self->latestAlertDescription]) {
199208
[nc vna_postNotificationOnMainThreadWithName:MA_Notify_GoogleAuthFailed object:alertDescription];
200209
self->latestAlertDescription = alertDescription;
201210
}
202211
} else if (((NSHTTPURLResponse *)response).statusCode != 200) {
212+
self.openReaderStatus = clientTokenError;
203213
NSString * alertDescription = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
204214
if (![alertDescription isEqualToString:self->latestAlertDescription]) {
205215
[nc vna_postNotificationOnMainThreadWithName:MA_Notify_GoogleAuthFailed object:alertDescription];
@@ -213,12 +223,17 @@ -(void)addClientTokenToRequest:(NSMutableURLRequest *)clientRequest
213223
if([item hasPrefix:@"Auth="]) {
214224
self.clientAuthToken = [item substringFromIndex:5];
215225
if ([self.clientAuthToken isEqualToString:@"(null)"] || [self.clientAuthToken isEqualToString:@""]) {
226+
self.openReaderStatus = clientTokenError;
216227
[nc vna_postNotificationOnMainThreadWithName:MA_Notify_GoogleAuthFailed object:@""];
217228
self->latestAlertDescription = @"";
218229
} else {
219230
self.openReaderStatus = missingTToken;
220231
}
221232
break;
233+
} else {
234+
self.openReaderStatus = clientTokenError;
235+
[nc vna_postNotificationOnMainThreadWithName:MA_Notify_GoogleAuthFailed object:@""];
236+
self->latestAlertDescription = @"";
222237
}
223238
}
224239
if (self.clientAuthTimer == nil || !self.clientAuthTimer.valid) {
@@ -283,7 +298,9 @@ -(void)getTokenForRequest:(NSMutableURLRequest *)clientRequest
283298
static NSOperation * tTokenOperation;
284299
dispatch_semaphore_t sema;
285300

286-
if (self.openReaderStatus == fullyAuthenticated) {
301+
if (self.openReaderStatus == clientTokenError) {
302+
return;
303+
} else if (self.openReaderStatus == fullyAuthenticated) {
287304
[clientRequest vna_setPostValue:self.tToken forKey:@"T"];
288305
return;
289306
} else {
@@ -352,6 +369,16 @@ -(void)resetAuthentication
352369
[self addClientTokenToRequest:nil];
353370
}
354371

372+
/* handleRefreshStatusChange
373+
* Handle a change of the network queue running.
374+
*/
375+
-(void)handleRefreshStatusChange:(NSNotification *)nc
376+
{
377+
if (self.openReaderStatus == clientTokenError) {
378+
self.openReaderStatus = notAuthenticated;
379+
}
380+
}
381+
355382
# pragma mark default handlers
356383

357384
// default handler for didFailSelector

0 commit comments

Comments
 (0)