79 lines
2.3 KiB
Mathematica
79 lines
2.3 KiB
Mathematica
|
/* Copyright (c) 2011 Google Inc.
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
//
|
||
|
// GTLErrorObject.m
|
||
|
//
|
||
|
|
||
|
#import "GTLErrorObject.h"
|
||
|
#import "GTLService.h"
|
||
|
|
||
|
@implementation GTLErrorObject
|
||
|
|
||
|
@dynamic code;
|
||
|
@dynamic message;
|
||
|
@dynamic data;
|
||
|
|
||
|
+ (NSDictionary *)arrayPropertyToClassMap {
|
||
|
NSDictionary *map = [NSDictionary dictionaryWithObject:[GTLErrorObjectData class]
|
||
|
forKey:@"data"];
|
||
|
return map;
|
||
|
}
|
||
|
|
||
|
- (NSError *)foundationError {
|
||
|
NSMutableDictionary *userInfo;
|
||
|
|
||
|
// This structured GTLErrorObject will be available in the error's userInfo
|
||
|
// dictionary
|
||
|
userInfo = [NSMutableDictionary dictionaryWithObject:self
|
||
|
forKey:kGTLStructuredErrorKey];
|
||
|
|
||
|
NSString *reasonStr = self.message;
|
||
|
if (reasonStr) {
|
||
|
// We always store an error in the userInfo key "error"
|
||
|
[userInfo setObject:reasonStr
|
||
|
forKey:kGTLServerErrorStringKey];
|
||
|
|
||
|
// Store a user-readable "reason" to show up when an error is logged,
|
||
|
// in parentheses like NSError does it
|
||
|
NSString *parenthesized = [NSString stringWithFormat:@"(%@)", reasonStr];
|
||
|
[userInfo setObject:parenthesized
|
||
|
forKey:NSLocalizedFailureReasonErrorKey];
|
||
|
}
|
||
|
|
||
|
NSInteger code = [self.code integerValue];
|
||
|
NSError *error = [NSError errorWithDomain:kGTLJSONRPCErrorDomain
|
||
|
code:code
|
||
|
userInfo:userInfo];
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
+ (GTLErrorObject *)underlyingObjectForError:(NSError *)foundationError {
|
||
|
NSDictionary *userInfo = [foundationError userInfo];
|
||
|
GTLErrorObject *errorObj = [userInfo objectForKey:kGTLStructuredErrorKey];
|
||
|
return errorObj;
|
||
|
}
|
||
|
|
||
|
@end
|
||
|
|
||
|
@implementation GTLErrorObjectData
|
||
|
@dynamic domain;
|
||
|
@dynamic reason;
|
||
|
@dynamic message;
|
||
|
@dynamic location;
|
||
|
@end
|
||
|
|
||
|
|