91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott/*
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * The contents of this file are subject to the terms of the Common Development and
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * Distribution License (the License). You may not use this file except in compliance with the
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * License.
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott *
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * specific language governing permission and limitations under the License.
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott *
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * When distributing Covered Software, include this CDDL Header Notice in each file and include
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * Header, with the fields enclosed by brackets [] replaced by your own identifying
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * information: "Portions copyright [year] [name of copyright owner]".
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott *
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott * Copyright 2016 ForgeRock AS.
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott */
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings#import "FRAMechanism.h"
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings#import "FRAIdentityModel.h"
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings#ifndef FRAMechanismFactory_h
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings#define FRAMechanismFactory_h
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings#endif /* FRAMechanismFactory_h */
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings@protocol FRAMechanismFactory
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell/*!
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings * Build a FRA Mechanism object using the database and the model provided
415243fbc81341293a852ff6aa14e9608d08685cCraig McDonnell *
7c51d54f23c5581d2cf894f9eafb9798e3febd22Diego Colantoni * @param uri The uri string containing the mechanism information.
7c51d54f23c5581d2cf894f9eafb9798e3febd22Diego Colantoni * @param database The database to persist the new mechanism to.
7c51d54f23c5581d2cf894f9eafb9798e3febd22Diego Colantoni * @param identityModel The identity model to place the new mechanism into.
7c51d54f23c5581d2cf894f9eafb9798e3febd22Diego Colantoni * @param handler The block to invoke when asynchronous operation is completed.
7c51d54f23c5581d2cf894f9eafb9798e3febd22Diego Colantoni * @param error If an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
7c51d54f23c5581d2cf894f9eafb9798e3febd22Diego Colantoni * @return The mechanism built from the uri.
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott */
7c51d54f23c5581d2cf894f9eafb9798e3febd22Diego Colantoni- (FRAMechanism *) buildMechanism:(NSURL *)uri database:(FRAIdentityDatabase *)database identityModel:(FRAIdentityModel *)identityModel handler:(void (^)(BOOL, NSError *))handler error:(NSError *__autoreleasing *)error;
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott/*!
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings * Gets whether this FRAMechanismFactory supports the mechnaism type in the given uri
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott *
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings * @param uri the uri string contianing the mechanism informaiton
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott */
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings- (bool) supports:(NSURL *)uri;
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott/*!
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings * Gets the supproted protocol for the FRAMechanism FRAMechanismFactory
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott */
9ebd9a731316dfd624ce3bcc4ea6519d10899936Ken Stubbings- (NSString *) getSupportedProtocol;
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott
91f0e3cb60de3eba8cbb70c7e36cc0df22d71f5bRobert Wapshott@end