forked from firebase/firebase-ios-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
FIRStorageComponent.m
84 lines (66 loc) · 2.72 KB
/
FIRStorageComponent.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Copyright 2018 Google
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#import "FirebaseStorage/Sources/FIRStorageComponent.h"
#import "FirebaseStorage/Sources/Public/FirebaseStorage/FIRStorage.h"
#import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h"
#import "Interop/Auth/Public/FIRAuthInterop.h"
NS_ASSUME_NONNULL_BEGIN
@interface FIRStorage ()
// Surface the internal initializer to create instances of FIRStorage.
- (instancetype)initWithApp:(FIRApp *)app
bucket:(NSString *)bucket
auth:(nullable id<FIRAuthInterop>)auth;
@end
@interface FIRStorageComponent () <FIRLibrary>
/// Internal initializer.
- (instancetype)initWithApp:(FIRApp *)app;
@end
@implementation FIRStorageComponent
#pragma mark - Initialization
- (instancetype)initWithApp:(FIRApp *)app {
self = [super init];
if (self) {
_app = app;
}
return self;
}
#pragma mark - Lifecycle
+ (void)load {
[FIRApp registerInternalLibrary:(Class<FIRLibrary>)self
withName:@"fire-str"
withVersion:[NSString stringWithUTF8String:FIRStorageVersionString]];
}
#pragma mark - FIRComponentRegistrant
+ (nonnull NSArray<FIRComponent *> *)componentsToRegister {
FIRDependency *authDep = [FIRDependency dependencyWithProtocol:@protocol(FIRAuthInterop)
isRequired:NO];
FIRComponentCreationBlock creationBlock =
^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
return [[FIRStorageComponent alloc] initWithApp:container.app];
};
FIRComponent *storageProvider =
[FIRComponent componentWithProtocol:@protocol(FIRStorageMultiBucketProvider)
instantiationTiming:FIRInstantiationTimingLazy
dependencies:@[ authDep ]
creationBlock:creationBlock];
return @[ storageProvider ];
}
#pragma mark - FIRStorageInstanceProvider Conformance
- (FIRStorage *)storageForBucket:(NSString *)bucket {
// Create an instance of FIRStorage and return it.
id<FIRAuthInterop> auth = FIR_COMPONENT(FIRAuthInterop, self.app.container);
return [[FIRStorage alloc] initWithApp:self.app bucket:bucket auth:auth];
}
@end
NS_ASSUME_NONNULL_END