@@ -51,7 +51,8 @@ typedef NS_ENUM (NSInteger, OpenReaderStatus) {
51
51
waitingClientToken,
52
52
missingTToken,
53
53
waitingTToken,
54
- fullyAuthenticated
54
+ fullyAuthenticated,
55
+ clientTokenError
55
56
};
56
57
57
58
#define VNA_LOG os_log_create (" --" , " OpenReader" )
@@ -99,6 +100,9 @@ -(instancetype)init
99
100
password = nil ;
100
101
APIBaseURL = nil ;
101
102
_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 ];
102
106
}
103
107
104
108
return self;
@@ -127,7 +131,9 @@ -(NSMutableURLRequest *)requestFromURL:(NSURL *)url
127
131
{
128
132
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url];
129
133
[self addClientTokenToRequest: request];
130
- [self specificHeadersPrepare: request];
134
+ if (self.openReaderStatus != clientTokenError) {
135
+ [self specificHeadersPrepare: request];
136
+ }
131
137
return request;
132
138
}
133
139
@@ -164,6 +170,8 @@ -(void)addClientTokenToRequest:(NSMutableURLRequest *)clientRequest
164
170
}
165
171
166
172
switch (self.openReaderStatus ) {
173
+ case clientTokenError:
174
+ return ;
167
175
case fullyAuthenticated:
168
176
case waitingTToken:
169
177
case missingTToken:
@@ -194,12 +202,14 @@ -(void)addClientTokenToRequest:(NSMutableURLRequest *)clientRequest
194
202
self.openReaderStatus = notAuthenticated;
195
203
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter ];
196
204
if (error) {
205
+ self.openReaderStatus = clientTokenError;
197
206
NSString * alertDescription = error.localizedDescription ;
198
207
if (![alertDescription isEqualToString: self ->latestAlertDescription]) {
199
208
[nc vna_postNotificationOnMainThreadWithName: MA_Notify_GoogleAuthFailed object: alertDescription];
200
209
self->latestAlertDescription = alertDescription;
201
210
}
202
211
} else if (((NSHTTPURLResponse *)response).statusCode != 200 ) {
212
+ self.openReaderStatus = clientTokenError;
203
213
NSString * alertDescription = [[NSString alloc ] initWithData: data encoding: NSUTF8StringEncoding];
204
214
if (![alertDescription isEqualToString: self ->latestAlertDescription]) {
205
215
[nc vna_postNotificationOnMainThreadWithName: MA_Notify_GoogleAuthFailed object: alertDescription];
@@ -213,12 +223,17 @@ -(void)addClientTokenToRequest:(NSMutableURLRequest *)clientRequest
213
223
if ([item hasPrefix: @" Auth=" ]) {
214
224
self.clientAuthToken = [item substringFromIndex: 5 ];
215
225
if ([self .clientAuthToken isEqualToString: @" (null)" ] || [self .clientAuthToken isEqualToString: @" " ]) {
226
+ self.openReaderStatus = clientTokenError;
216
227
[nc vna_postNotificationOnMainThreadWithName: MA_Notify_GoogleAuthFailed object: @" " ];
217
228
self->latestAlertDescription = @" " ;
218
229
} else {
219
230
self.openReaderStatus = missingTToken;
220
231
}
221
232
break ;
233
+ } else {
234
+ self.openReaderStatus = clientTokenError;
235
+ [nc vna_postNotificationOnMainThreadWithName: MA_Notify_GoogleAuthFailed object: @" " ];
236
+ self->latestAlertDescription = @" " ;
222
237
}
223
238
}
224
239
if (self.clientAuthTimer == nil || !self.clientAuthTimer .valid ) {
@@ -283,7 +298,9 @@ -(void)getTokenForRequest:(NSMutableURLRequest *)clientRequest
283
298
static NSOperation * tTokenOperation;
284
299
dispatch_semaphore_t sema;
285
300
286
- if (self.openReaderStatus == fullyAuthenticated) {
301
+ if (self.openReaderStatus == clientTokenError) {
302
+ return ;
303
+ } else if (self.openReaderStatus == fullyAuthenticated) {
287
304
[clientRequest vna_setPostValue: self .tToken forKey: @" T" ];
288
305
return ;
289
306
} else {
@@ -352,6 +369,16 @@ -(void)resetAuthentication
352
369
[self addClientTokenToRequest: nil ];
353
370
}
354
371
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
+
355
382
# pragma mark default handlers
356
383
357
384
// default handler for didFailSelector
0 commit comments