BBASMAuthorizeAdapterProtocol.h 6.45 KB
//
//  BBASMAuthorizeAdapterProtocol.h
//  SWAN
//
//  Created by baidu on 2018/11/7.
//  Copyright © 2018 baidu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BBASMAdapterBaseImplement.h"

NS_ASSUME_NONNULL_BEGIN

extern NSString *const kBBASMUpdateServiceAppID;
extern NSString *const kBBASMUpdateServiceUpdateLastVersion;
extern NSString *const kBBASMUpdateServiceAuthorizeNode;
extern NSString *const kBBASMUpdateServicePayInfoNode;

#pragma mark 授权返回相关常量字段
/// 授权返回数据 字段data
extern NSString *const kBBASMUpdateServiceRequestDataKey;
/// 授权返回数据 字段permit
extern NSString *const kBBASMUpdateServiceRequestDataPermitKey;
/// 授权返回数据 字段forbidden
extern NSString *const kBBASMUpdateServiceRequestDataForbiddenKey;
/// 授权返回数据 字符串true
extern NSString * const kBBASMUpdateServiceRequestDataValueTrue;
/// 授权返回数据 字符串false
extern NSString * const kBBASMUpdateServiceRequestDataValueFalse;
/// 授权返回数据 字段tipstatus
extern NSString * const kBBASMUpdateServiceRequestDataTipStatus;
/// 授权返回数据 字段name
extern NSString * const kBBASMUpdateServiceRequestDataName;
/// 授权返回数据 字段shortname
extern NSString * const kBBASMUpdateServiceRequestDataShortName;

typedef NS_ENUM(NSUInteger, BBASMAuthorizeOperatorType) {
    BBASMAuthorizeOperatorTypeQuery,
    BBASMAuthorizeOperatorTypeAdd,
    BBASMAuthorizeOperatorTypeDelete
};

/**
 * 请求类型
 */
typedef NS_ENUM(NSUInteger, BBASMAuthorizeRequestType) {
    BBASMAuthorizeLoginRequestType = 1000,         // 只做用户登录(拿code)
    BBASMAuthorizeAuthorizeAndDataRequestType,     // 授权写入并且拿数据
    BBASMAuthorizeAuthorizeOnlyRequestType         // 只做授权写入
};

@protocol BBASMAuthorizeInfoAdapterProtocol;
@protocol BBASMAppIdentifyInfoAdapterProtocol;
/**
 获取请求的url、header、cookie 和post的数据
 */
@protocol BBASMAuthorizeAdapterProtocol <NSObject>

@optional

/**
 * @brief 获取swanid请求参数
 *
 * @param info 小程序appId信息
 * @return 请求参数
 * @example
 *  @{
 *    @"url":[NSString],请求地址,不能为空
 *    @"params":[NSDictionary],请求参数,不能为空
 *    @"error":[NSError],存储请求参数发生错误时的错误信息,若请求参数正确,该值为nil,若请求参数错误,需要存储错误信息,同时请求参数可以为空,不会发起请求
 *   }
 */
+ (NSDictionary *)smidRequestInfo:(id<BBASMAppIdentifyInfoAdapterProtocol>)info;

/**
 * @brief 获取checksessionkey请求信息
 *
 * @param info 小程序appId信息
 * @return 请求参数
 * @example
 *  @{
 *    @"url":[NSString],请求地址,不能为空
 *    @"params":[NSDictionary],请求参数,不能为空
 *    @"headers":[NSMutableDictionary],请求参数,不能为空
 *    @"error":[NSError],存储请求参数发生错误时的错误信息,若请求参数正确,该值为nil,若请求参数错误,需要存储错误信息,同时请求参数可以为空,不会发起请求
 *    }
 */
+ (NSDictionary *)checkSessionKeyRequestInfo:(id<BBASMAppIdentifyInfoAdapterProtocol>)info;

/**
 * @brief update请求信息
 *
 * @param info 小程序appId信息
 * @param isForce  是否强制拉取数据
 * @return 请求参数
 * @example
 *  @{
 *    @"url":[NSString],请求地址,不能为空
 *    @"params":[NSDictionary],请求参数,不能为空
 *    @"error":[NSError],存储请求参数发生错误时的错误信息,若请求参数正确,该值为nil,若请求参数错误,需要存储错误信息,同时请求参数可以为空,不会发起请求
 *   }
 */
+ (NSDictionary *)updateRequestInfo:(id<BBASMAppIdentifyInfoAdapterProtocol>)info
                              force:(BOOL)isForce;

/**
 * @brief 根据appid 重置授权信息
 *
 * @param infos 小程序appId信息列表
 * @return 请求参数
 * @example
 *  @{
 *    @"url":[NSString],请求地址,不能为空
 *    @"params":[NSDictionary],请求参数,不能为空
 *    @"error":[NSError],存储请求参数发生错误时的错误信息,若请求参数正确,该值为nil,若请求参数错误,需要存储错误信息,同时请求参数可以为空,不会发起请求
 *   }
 */
+ (NSDictionary *)resetAuthorizeRequestInfo:(NSArray<id<BBASMAppIdentifyInfoAdapterProtocol>> *)infos;

/**
 * @brief 获取open/data请求信息
 *
 * @param  info 小程序appId和scope信息
 * @param  actionType 为"1"时,用户拒绝点击按钮也将弹授权框--小游戏获取用户信息参数为1,其它调用ationType=nil
 * @return 请求参数
 * @example
 *  @{
 *    @"url":[NSString],请求地址,不能为空
 *    @"params":[NSDictionary],请求参数,不能为空
 *    @"error":[NSError],存储请求参数发生错误时的错误信息,若请求参数正确,该值为nil,若请求参数错误,需要存储错误信息,同时请求参数可以为空,不会发起请求
 *   }
 */
+ (NSDictionary *)openDataRequestInfo:(id<BBASMAuthorizeInfoAdapterProtocol>)info
                           actionType:(NSString *)actionType;

/**
 * @brief 获取用户登录换取code、授权且拿数据、只授权请求信息
 *
 * @param info scope信息
 * @param requestType  BBASMAuthorizeRequestType
 * @param opType  BBASMAuthorizeOperatorType
 * @param complete 回调请求参数
 * @example
 *  @{
 *    @"url":[NSString],请求地址,不能为空
 *    @"params":[NSDictionary],请求参数,不能为空
 *    @"error":[NSError],存储请求参数发生错误时的错误信息,若请求参数正确,该值为nil,若请求参数错误,需要存储错误信息,同时请求参数可以为空,不会发起请求
 *   }
 */
+ (void)modifyScopeReuestInfo:(id<BBASMAuthorizeInfoAdapterProtocol>)info
                  requestType:(BBASMAuthorizeRequestType)requestType
                 operatorType:(BBASMAuthorizeOperatorType)opType
                     complete:(void(^)(NSDictionary *paramDic))complete;

/**
 * @brief 获取 stoken 参数,百度系宿主必须实现,其它宿主不需要实现
 * @param successBlock 成功回调
 * @param failureBlock 失败回调
 */
+ (void)getStokenSuccess:(void (^)(NSString *stoken))successBlock
                 failure:(void (^)(NSError *error))failureBlock;


/**
 * @brief  客户端时间和服务器请求时间差值
 * @return 百度系宿主必须实现,开源宿主可不实现或返回0(默认为0)
 */
+ (NSInteger)updateDelta;

@end

NS_ASSUME_NONNULL_END