ably-cocoa/Source/ARTDeviceIdentityTokenDetai...

76 lines
2.4 KiB
Objective-C

#import "ARTTypes.h"
#import "ARTDeviceIdentityTokenDetails.h"
NSString *const ARTCoderTokenKey = @"token";
NSString *const ARTCoderIssuedKey = @"issued";
NSString *const ARTCoderExpiresKey = @"expires";
NSString *const ARTCoderCapabilityKey = @"capability";
NSString *const ARTCoderClientIdKey = @"clientId";
@implementation ARTDeviceIdentityTokenDetails
- (instancetype)initWithToken:(NSString *)token issued:(NSDate *)issued expires:(NSDate *)expires capability:(NSString *)capability clientId:(NSString *)clientId {
if (self = [super init]) {
_token = token;
_issued = issued;
_expires = expires;
_capability = capability;
_clientId = clientId;
}
return self;
}
// MARK: NSObject
- (NSString *)description {
return [NSString stringWithFormat:@"%@ - \n\t token: %@; \n\t issued: %@; \n\t expires: %@; \n\t clientId: %@;", [super description], self.token, self.issued, self.expires, self.clientId];
}
- (id)copyWithZone:(NSZone *)zone {
// Implement NSCopying by retaining the original instead of creating a new copy when the class and its contents are immutable.
return self;
}
#pragma mark - NSCoding
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder {
self = [super init];
if (!self) {
return nil;
}
_token = [aDecoder decodeObjectOfClass:[NSString class] forKey:ARTCoderTokenKey];
_issued = [aDecoder decodeObjectOfClass:[NSDate class] forKey:ARTCoderIssuedKey];
_expires = [aDecoder decodeObjectOfClass:[NSDate class] forKey:ARTCoderExpiresKey];
_capability = [aDecoder decodeObjectOfClass:[NSString class] forKey:ARTCoderCapabilityKey];
_clientId = [aDecoder decodeObjectOfClass:[NSString class] forKey:ARTCoderClientIdKey];
return self;
}
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.token forKey:ARTCoderTokenKey];
[aCoder encodeObject:self.issued forKey:ARTCoderIssuedKey];
[aCoder encodeObject:self.expires forKey:ARTCoderExpiresKey];
[aCoder encodeObject:self.capability forKey:ARTCoderCapabilityKey];
[aCoder encodeObject:self.clientId forKey:ARTCoderClientIdKey];
}
#pragma mark - NSSecureCoding
+ (BOOL)supportsSecureCoding {
return true;
}
#pragma mark - Archive/Unarchive
- (NSData *)archive {
return [self art_archive];
}
+ (ARTDeviceIdentityTokenDetails *)unarchive:(NSData *)data {
return [self art_unarchiveFromData:data];
}
@end