aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Remote/FSTDatastore.mm
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/Source/Remote/FSTDatastore.mm')
-rw-r--r--Firestore/Source/Remote/FSTDatastore.mm39
1 files changed, 25 insertions, 14 deletions
diff --git a/Firestore/Source/Remote/FSTDatastore.mm b/Firestore/Source/Remote/FSTDatastore.mm
index 02d868c..8017c58 100644
--- a/Firestore/Source/Remote/FSTDatastore.mm
+++ b/Firestore/Source/Remote/FSTDatastore.mm
@@ -23,9 +23,7 @@
#import "Firestore/Source/API/FIRFirestore+Internal.h"
#import "Firestore/Source/API/FIRFirestoreVersion.h"
#import "Firestore/Source/Auth/FSTCredentialsProvider.h"
-#import "Firestore/Source/Core/FSTDatabaseInfo.h"
#import "Firestore/Source/Local/FSTLocalStore.h"
-#import "Firestore/Source/Model/FSTDatabaseID.h"
#import "Firestore/Source/Model/FSTDocument.h"
#import "Firestore/Source/Model/FSTDocumentKey.h"
#import "Firestore/Source/Model/FSTMutation.h"
@@ -37,6 +35,14 @@
#import "Firestore/Protos/objc/google/firestore/v1beta1/Firestore.pbrpc.h"
+#include "Firestore/core/src/firebase/firestore/core/database_info.h"
+#include "Firestore/core/src/firebase/firestore/model/database_id.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+namespace util = firebase::firestore::util;
+using firebase::firestore::core::DatabaseInfo;
+using firebase::firestore::model::DatabaseId;
+
NS_ASSUME_NONNULL_BEGIN
// GRPC does not publicly declare a means of disabling SSL, which we need for testing. Firestore
@@ -71,7 +77,7 @@ typedef GRPCProtoCall * (^RPCFactory)(void);
@implementation FSTDatastore
-+ (instancetype)datastoreWithDatabase:(FSTDatabaseInfo *)databaseInfo
++ (instancetype)datastoreWithDatabase:(const DatabaseInfo *)databaseInfo
workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue
credentials:(id<FSTCredentialsProvider>)credentials {
return [[FSTDatastore alloc] initWithDatabaseInfo:databaseInfo
@@ -79,25 +85,29 @@ typedef GRPCProtoCall * (^RPCFactory)(void);
credentials:credentials];
}
-- (instancetype)initWithDatabaseInfo:(FSTDatabaseInfo *)databaseInfo
+- (instancetype)initWithDatabaseInfo:(const DatabaseInfo *)databaseInfo
workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue
credentials:(id<FSTCredentialsProvider>)credentials {
if (self = [super init]) {
_databaseInfo = databaseInfo;
- if (!databaseInfo.isSSLEnabled) {
- GRPCHost *hostConfig = [GRPCHost hostWithAddress:databaseInfo.host];
+ NSString *host = util::WrapNSStringNoCopy(databaseInfo->host());
+ if (!databaseInfo->ssl_enabled()) {
+ GRPCHost *hostConfig = [GRPCHost hostWithAddress:host];
hostConfig.secure = NO;
}
- _service = [GCFSFirestore serviceWithHost:databaseInfo.host];
+ _service = [GCFSFirestore serviceWithHost:host];
_workerDispatchQueue = workerDispatchQueue;
_credentials = credentials;
- _serializer = [[FSTSerializerBeta alloc] initWithDatabaseID:databaseInfo.databaseID];
+ _serializer = [[FSTSerializerBeta alloc] initWithDatabaseID:&databaseInfo->database_id()];
}
return self;
}
- (NSString *)description {
- return [NSString stringWithFormat:@"<FSTDatastore: %@>", self.databaseInfo];
+ return [NSString
+ stringWithFormat:@"<FSTDatastore: <DatabaseInfo: database_id:%@ host:%@>>",
+ util::WrapNSStringNoCopy(self.databaseInfo->database_id().database_id()),
+ util::WrapNSStringNoCopy(self.databaseInfo->host())];
}
/**
@@ -168,9 +178,10 @@ typedef GRPCProtoCall * (^RPCFactory)(void);
}
/** Returns the string to be used as google-cloud-resource-prefix header value. */
-+ (NSString *)googleCloudResourcePrefixForDatabaseID:(FSTDatabaseID *)databaseID {
- return [NSString
- stringWithFormat:@"projects/%@/databases/%@", databaseID.projectID, databaseID.databaseID];
++ (NSString *)googleCloudResourcePrefixForDatabaseID:(const DatabaseId *)databaseID {
+ return [NSString stringWithFormat:@"projects/%@/databases/%@",
+ util::WrapNSStringNoCopy(databaseID->project_id()),
+ util::WrapNSStringNoCopy(databaseID->database_id())];
}
/**
* Takes a dictionary of (HTTP) response headers and returns the set of whitelisted headers
@@ -298,7 +309,7 @@ typedef GRPCProtoCall * (^RPCFactory)(void);
} else {
GRPCProtoCall *rpc = rpcFactory();
[FSTDatastore prepareHeadersForRPC:rpc
- databaseID:self.databaseInfo.databaseID
+ databaseID:&self.databaseInfo->database_id()
token:result.token];
[rpc start];
}
@@ -322,7 +333,7 @@ typedef GRPCProtoCall * (^RPCFactory)(void);
/** Adds headers to the RPC including any OAuth access token if provided .*/
+ (void)prepareHeadersForRPC:(GRPCCall *)rpc
- databaseID:(FSTDatabaseID *)databaseID
+ databaseID:(const DatabaseId *)databaseID
token:(nullable NSString *)token {
rpc.oauth2AccessToken = token;
rpc.requestHeaders[kXGoogAPIClientHeader] = [FSTDatastore googAPIClientHeaderValue];