diff options
author | zxu <zxu@google.com> | 2018-02-20 12:25:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-20 12:25:39 -0500 |
commit | 7a4a2ea10844afd6a58dace46854fae74399f55c (patch) | |
tree | bb6115c271d6fac490cb5720a79fcc7de21d2de9 /Firestore/Source/Remote | |
parent | a9f3f35d483f1031ef2e2860aeda921f56e1bf08 (diff) |
replacing FSTGetTokenResult by C++ Token implementation (#805)
* replacing Auth/FSTUser by C++ auth implementation
* address changes
* replacing FSTGetTokenResult by C++ Token implementation
* address changes
* address changes
* fix another const& v.s. dispatch bug
* fix more const& v.s. dispatch bug zxu123 committed
* fix
* passing by value in callback
Diffstat (limited to 'Firestore/Source/Remote')
-rw-r--r-- | Firestore/Source/Remote/FSTDatastore.h | 3 | ||||
-rw-r--r-- | Firestore/Source/Remote/FSTDatastore.mm | 16 | ||||
-rw-r--r-- | Firestore/Source/Remote/FSTStream.mm | 21 |
3 files changed, 23 insertions, 17 deletions
diff --git a/Firestore/Source/Remote/FSTDatastore.h b/Firestore/Source/Remote/FSTDatastore.h index 9edaf96..481b6e8 100644 --- a/Firestore/Source/Remote/FSTDatastore.h +++ b/Firestore/Source/Remote/FSTDatastore.h @@ -20,6 +20,7 @@ #include "Firestore/core/src/firebase/firestore/core/database_info.h" #include "Firestore/core/src/firebase/firestore/model/database_id.h" +#include "absl/strings/string_view.h" @class FSTDocumentKey; @class FSTDispatchQueue; @@ -83,7 +84,7 @@ NS_ASSUME_NONNULL_BEGIN /** Adds headers to the RPC including any OAuth access token if provided .*/ + (void)prepareHeadersForRPC:(GRPCCall *)rpc databaseID:(const firebase::firestore::model::DatabaseId *)databaseID - token:(nullable NSString *)token; + token:(const absl::string_view)token; /** Looks up a list of documents in datastore. */ - (void)lookupDocuments:(NSArray<FSTDocumentKey *> *)keys diff --git a/Firestore/Source/Remote/FSTDatastore.mm b/Firestore/Source/Remote/FSTDatastore.mm index 8017c58..a6029ee 100644 --- a/Firestore/Source/Remote/FSTDatastore.mm +++ b/Firestore/Source/Remote/FSTDatastore.mm @@ -35,11 +35,13 @@ #import "Firestore/Protos/objc/google/firestore/v1beta1/Firestore.pbrpc.h" +#include "Firestore/core/src/firebase/firestore/auth/token.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::auth::Token; using firebase::firestore::core::DatabaseInfo; using firebase::firestore::model::DatabaseId; @@ -301,16 +303,18 @@ typedef GRPCProtoCall * (^RPCFactory)(void); // but I'm not sure how to detect that right now. http://b/32762461 [self.credentials getTokenForcingRefresh:NO - completion:^(FSTGetTokenResult *_Nullable result, NSError *_Nullable error) { + completion:^(Token result, NSError *_Nullable error) { error = [FSTDatastore firestoreErrorForError:error]; [self.workerDispatchQueue dispatchAsyncAllowingSameQueue:^{ if (error) { errorHandler(error); } else { GRPCProtoCall *rpc = rpcFactory(); - [FSTDatastore prepareHeadersForRPC:rpc - databaseID:&self.databaseInfo->database_id() - token:result.token]; + [FSTDatastore + prepareHeadersForRPC:rpc + databaseID:&self.databaseInfo->database_id() + token:(result.is_valid() ? result.token() + : absl::string_view())]; [rpc start]; } }]; @@ -334,8 +338,8 @@ typedef GRPCProtoCall * (^RPCFactory)(void); /** Adds headers to the RPC including any OAuth access token if provided .*/ + (void)prepareHeadersForRPC:(GRPCCall *)rpc databaseID:(const DatabaseId *)databaseID - token:(nullable NSString *)token { - rpc.oauth2AccessToken = token; + token:(const absl::string_view)token { + rpc.oauth2AccessToken = token.data() == nullptr ? nil : util::WrapNSString(token); rpc.requestHeaders[kXGoogAPIClientHeader] = [FSTDatastore googAPIClientHeaderValue]; // This header is used to improve routing and project isolation by the backend. rpc.requestHeaders[kGoogleCloudResourcePrefix] = diff --git a/Firestore/Source/Remote/FSTStream.mm b/Firestore/Source/Remote/FSTStream.mm index f859fbb..079ae72 100644 --- a/Firestore/Source/Remote/FSTStream.mm +++ b/Firestore/Source/Remote/FSTStream.mm @@ -35,11 +35,13 @@ #import "Firestore/Protos/objc/google/firestore/v1beta1/Firestore.pbrpc.h" +#include "Firestore/core/src/firebase/firestore/auth/token.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::auth::Token; using firebase::firestore::core::DatabaseInfo; using firebase::firestore::model::DatabaseId; @@ -256,18 +258,17 @@ static const NSTimeInterval kIdleTimeout = 60.0; FSTAssert(_delegate == nil, @"Delegate must be nil"); _delegate = delegate; - [self.credentials - getTokenForcingRefresh:NO - completion:^(FSTGetTokenResult *_Nullable result, NSError *_Nullable error) { - error = [FSTDatastore firestoreErrorForError:error]; - [self.workerDispatchQueue dispatchAsyncAllowingSameQueue:^{ - [self resumeStartWithToken:result error:error]; - }]; - }]; + [self.credentials getTokenForcingRefresh:NO + completion:^(Token result, NSError *_Nullable error) { + error = [FSTDatastore firestoreErrorForError:error]; + [self.workerDispatchQueue dispatchAsyncAllowingSameQueue:^{ + [self resumeStartWithToken:result error:error]; + }]; + }]; } /** Add an access token to our RPC, after obtaining one from the credentials provider. */ -- (void)resumeStartWithToken:(FSTGetTokenResult *)token error:(NSError *)error { +- (void)resumeStartWithToken:(const Token &)token error:(NSError *)error { if (self.state == FSTStreamStateStopped) { // Streams can be stopped while waiting for authorization. return; @@ -289,7 +290,7 @@ static const NSTimeInterval kIdleTimeout = 60.0; _rpc = [self createRPCWithRequestsWriter:self.requestsWriter]; [FSTDatastore prepareHeadersForRPC:_rpc databaseID:&self.databaseInfo->database_id() - token:token.token]; + token:(token.is_valid() ? token.token() : absl::string_view())]; FSTAssert(_callbackFilter == nil, @"GRX Filter must be nil"); _callbackFilter = [[FSTCallbackFilter alloc] initWithStream:self]; [_rpc startWithWriteable:_callbackFilter]; |