FRASerialization.m revision a1e92b2783be4bfeb0c7e267223cc7779a6f324c
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * The contents of this file are subject to the terms of the Common Development and
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * Distribution License (the License). You may not use this file except in compliance with the
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * specific language governing permission and limitations under the License.
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * When distributing Covered Software, include this CDDL Header Notice in each file and include
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * Header, with the fields enclosed by brackets [] replaced by your own identifying
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * information: "Portions copyright [year] [name of copyright owner]".
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * Copyright 2016 ForgeRock AS.
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott#import "FRASerialization.h"
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const OATH_MECHANISM_SECRET = @"secret";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const OATH_MECHANISM_ALGORITHM = @"algorithm";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const OATH_MECHANISM_DIGITS = @"digits";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const OATH_MECHANISM_PERIOD = @"period";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const OATH_MECHANISM_COUNTER = @"counter";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const PUSH_MECHANISM_VERSION = @"version";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const PUSH_MECHANISM_SECRET = @"secret";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const PUSH_MECHANISM_AUTH_END_POINT = @"authEndPoint";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const NOTIFICATION_MESSAGE_ID = @"message_id";
a1e92b2783be4bfeb0c7e267223cc7779a6f324cKen StubbingsNSString * const NOTIFICATION_PUSH_CHALLENGE = @"push_challenge";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert WapshottNSString * const NOTIFICATION_TIME_TO_LIVE = @"time_to_live";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott+ (BOOL)serializeMap:(NSDictionary *)dictionary intoString:(NSString *__autoreleasing *)jsonString error:(NSError *__autoreleasing *)error {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott NSData *jsonBytes = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:error];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott *jsonString = [FRASerialization serializeBytes:jsonBytes];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott+ (BOOL)deserializeJSON:(NSString *)dictionaryJson intoDictionary:(NSDictionary *__autoreleasing *)dictionary error:(NSError *__autoreleasing *)error {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott NSData *jsonBytes = [FRASerialization deserializeBytes:dictionaryJson];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott NSDictionary* map = [NSJSONSerialization JSONObjectWithData: jsonBytes options: NSJSONReadingMutableContainers error: error];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott+ (NSString *)serializeBytes:(NSData *)data {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott+ (NSData *)deserializeBytes:(NSString *)data {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott if (data == nil || [data isKindOfClass:[NSNull class]]) {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott return [data dataUsingEncoding:NSUTF8StringEncoding];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott+ (NSString *)nullToEmpty:(NSString *)string {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott if (string == nil || [string isKindOfClass:[NSNull class]]) {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott NSTimeInterval interval = [date timeIntervalSince1970];