FRANotificationHandler.m revision 415243fbc81341293a852ff6aa14e9608d08685c
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell/*
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * The contents of this file are subject to the terms of the Common Development and
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * Distribution License (the License). You may not use this file except in compliance with the
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * License.
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell *
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * specific language governing permission and limitations under the License.
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell *
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * When distributing Covered Software, include this CDDL Header Notice in each file and include
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * Header, with the fields enclosed by brackets [] replaced by your own identifying
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * information: "Portions copyright [year] [name of copyright owner]".
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell *
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * Copyright 2016 ForgeRock AS.
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell */
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#import "FRAIdentity.h"
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell#import "FRAIdentityModel.h"
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#import "FRAPushMechanism.h"
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#import "FRANotification.h"
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#import "FRANotificationHandler.h"
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell/*!
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell * Private interface.
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell */
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell@interface FRANotificationHandler ()
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell/*!
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell * The identity model.
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell */
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell@property (nonatomic, strong, readonly) FRAIdentityModel *identityModel;
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell@end
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell@implementation FRANotificationHandler {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell FRAIdentityDatabase *_database;
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell}
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#pragma mark -
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#pragma mark Lifecycle
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell- (instancetype)initWithDatabase:(FRAIdentityDatabase *)database identityModel:(FRAIdentityModel *)identityModel {
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell self = [super init];
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell if (self) {
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell _database = database;
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell _identityModel = identityModel;
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell }
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell return self;
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell}
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell+ (instancetype)handlerWithDatabase:(FRAIdentityDatabase *)database identityModel:(FRAIdentityModel *)identityModel {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell return [[FRANotificationHandler alloc] initWithDatabase:database identityModel:identityModel];
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell}
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#pragma mark -
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell#pragma mark Remote Notifications
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell- (void)handleRemoteNotification:(NSDictionary *)userInfo {
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell NSLog(@"first %@", [userInfo objectForKey:@"first"]);
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell NSLog(@"second %@", [userInfo objectForKey:@"second"]);
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell // TODO: Read relevant attributes from userInfo (object graph representation of JSON notification)
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell // and populate FRANotification appropriately.
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell FRANotification *notification = [[FRANotification alloc] initWithDatabase:_database];
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell // Until registration & mechanismIds are implemented, just add the notification to the dummy push mechanism on Alice
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell FRAPushMechanism* dummyPushMechanism = nil;
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell for (FRAIdentity* identity in [self.identityModel identities]) {
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell for (FRAMechanism* mechanism in identity.mechanisms) {
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell if ([mechanism isKindOfClass:[FRAPushMechanism class]]) {
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell dummyPushMechanism = (FRAPushMechanism *) mechanism;
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell break;
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell }
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell }
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell if (dummyPushMechanism) {
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell break;
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell }
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell }
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell [dummyPushMechanism addNotification:notification];
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell}
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell
6c1420dd55f69d09f39dd213ee6c97ba901b8d92Craig McDonnell@end