|
1 | | -/* |
2 | | - * Copyright 2026 Google LLC |
3 | | - * |
4 | | - * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | | - * you may not use this file except in compliance with the License. |
6 | | - * You may obtain a copy of the License at |
7 | | - * |
8 | | - * http://www.apache.org/licenses/LICENSE-2.0 |
9 | | - * |
10 | | - * Unless required by applicable law or agreed to in writing, software |
11 | | - * distributed under the License is distributed on an "AS IS" BASIS, |
12 | | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13 | | - * See the License for the specific language governing permissions and |
14 | | - * limitations under the License. |
15 | | - */ |
16 | | - |
17 | | -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRRecaptchaEnterpriseProvider.h" |
18 | | -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckAvailability.h" |
19 | | - |
20 | | -#import <AppCheckCore/AppCheckCore.h> |
21 | | - |
22 | | -@import RecaptchaEnterpriseProvider; |
23 | | - |
24 | | -#import "FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.h" |
25 | | - |
26 | | -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h" |
27 | | -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h" |
28 | | -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.h" |
29 | | -#import "FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.h" |
30 | | - |
31 | | -#import "FirebaseCore/Extension/FirebaseCoreInternal.h" |
32 | | - |
33 | | -@interface FIRRecaptchaEnterpriseProvider () |
34 | | - |
35 | | -@property(nonatomic, readonly) GACRecaptchaEnterpriseProvider *recaptchaEnterpriseProvider; |
36 | | - |
37 | | -@end |
38 | | - |
39 | | -@implementation FIRRecaptchaEnterpriseProvider |
40 | | - |
41 | | -- (instancetype)initWithRecaptchaEnterpriseProvider: |
42 | | - (GACRecaptchaEnterpriseProvider *)recaptchaEnterpriseProvider { |
43 | | - self = [super init]; |
44 | | - if (self) { |
45 | | - _recaptchaEnterpriseProvider = recaptchaEnterpriseProvider; |
46 | | - } |
47 | | - return self; |
48 | | -} |
49 | | - |
50 | | -- (nullable instancetype)initWithApp:(FIRApp *)app siteKey:(NSString *)siteKey { |
51 | | - NSArray<NSString *> *missingOptionsFields = |
52 | | - [FIRAppCheckValidator tokenExchangeMissingFieldsInOptions:app.options]; |
53 | | - if (missingOptionsFields.count > 0) { |
54 | | - FIRLogError(kFIRLoggerAppCheck, |
55 | | - kFIRLoggerAppCheckMessageRecaptchaEnterpriseProviderIncompleteFIROptions, |
56 | | - @"Cannot instantiate `FIRRecaptchaEnterpriseProvider` for app: %@. The following " |
57 | | - @"`FirebaseOptions` fields are missing: %@", |
58 | | - app.name, [missingOptionsFields componentsJoinedByString:@", "]); |
59 | | - return nil; |
60 | | - } |
61 | | - |
62 | | - id heartbeatHook = [app.heartbeatLogger requestHook]; |
63 | | - GACRecaptchaEnterpriseProvider *recaptchaEnterpriseProvider = |
64 | | - [[GACRecaptchaEnterpriseProvider alloc] |
65 | | - initWithSiteKey:siteKey |
66 | | - resourceName:app.resourceName |
67 | | - APIKey:app.options.APIKey |
68 | | - requestHooks:heartbeatHook ? @[ heartbeatHook ] : @[]]; |
69 | | - |
70 | | - return [self initWithRecaptchaEnterpriseProvider:recaptchaEnterpriseProvider]; |
71 | | -} |
72 | | - |
73 | | -#pragma mark - FIRAppCheckProvider |
74 | | - |
75 | | -- (void)getTokenWithCompletion:(void (^)(FIRAppCheckToken *_Nullable token, |
76 | | - NSError *_Nullable error))handler { |
77 | | - [self.recaptchaEnterpriseProvider |
78 | | - getTokenWithCompletion:^(GACAppCheckToken *_Nullable internalToken, |
79 | | - NSError *_Nullable error) { |
80 | | - if (error) { |
81 | | - handler(nil, error); |
82 | | - return; |
83 | | - } |
84 | | - |
85 | | - handler([[FIRAppCheckToken alloc] initWithInternalToken:internalToken], nil); |
86 | | - }]; |
87 | | -} |
88 | | - |
89 | | -- (void)getLimitedUseTokenWithCompletion:(void (^)(FIRAppCheckToken *_Nullable, |
90 | | - NSError *_Nullable))handler { |
91 | | - [self.recaptchaEnterpriseProvider |
92 | | - getLimitedUseTokenWithCompletion:^(GACAppCheckToken *_Nullable internalToken, |
93 | | - NSError *_Nullable error) { |
94 | | - if (error) { |
95 | | - handler(nil, error); |
96 | | - return; |
97 | | - } |
98 | | - |
99 | | - handler([[FIRAppCheckToken alloc] initWithInternalToken:internalToken], nil); |
100 | | - }]; |
101 | | -} |
102 | | - |
103 | | -@end |
0 commit comments