mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-09 22:36:01 +05:45
* AppAttestation initial public API * Run ./scripts/style.sh * Copyright * Cleanup * Cleanup * Get token forcing refresh method * Formatting * Forcing refresh samples * Interop introduced * Code samples for Interop * Run ./scripts/style.sh * Cleanup * TODOs and Copirights * Fix build * Supported iOS versions * Remove unnecessary bridging header * Run ./scripts/style.sh * [WIP] DeviceCheckAttestationProvider as a subspec * cleanup * Add memory attributes to readonly properties * Move FIRDeviceCheckAttestationProvider.h to private headers * TODO for `FirebaseAppAttestation/Core` name * Remove memory attributes from FIRAppAttestationToken properties * FIRAppAttestationTests.testSetAttestationProviderFactory introduced * FIRAppAttestationToken initializer * Basic FIRLibrary implementation and FIRAppAttestationProviderFactory ingestion. * Fix * FIRAppAttestationToken+Interop.h * TODOs * Tests: reset FIRApps * GHA for App Attestation * Run ./scripts/style.sh * Style fixes. * Run ./scripts/style.sh * TODO * Nullable initializer and type annpotations * TODOs * TODOs * TODO * Fix spec and allow warnings * AppAttestation initial public API * Run ./scripts/style.sh * Copyright * Cleanup * Cleanup * Get token forcing refresh method * Formatting * Forcing refresh samples * Interop introduced * Code samples for Interop * Run ./scripts/style.sh * Cleanup * TODOs and Copirights * Fix build * Supported iOS versions * Remove unnecessary bridging header * Run ./scripts/style.sh * [WIP] DeviceCheckAttestationProvider as a subspec * cleanup * Add memory attributes to readonly properties * Move FIRDeviceCheckAttestationProvider.h to private headers * TODO for `FirebaseAppAttestation/Core` name * Remove memory attributes from FIRAppAttestationToken properties * FIRAppAttestationTests.testSetAttestationProviderFactory introduced * FIRAppAttestationToken initializer * Basic FIRLibrary implementation and FIRAppAttestationProviderFactory ingestion. * Fix * FIRAppAttestationToken+Interop.h * TODOs * Tests: reset FIRApps * Run ./scripts/style.sh * Style fixes. * Run ./scripts/style.sh * TODO * Nullable initializer and type annpotations * TODOs * TODOs * TODO * Revert FirestoreDecoder.swift formatting. * Basic implementation of FIRDeviceCheckAttestationProvider and tests (#626) * DeviceCheck attestation provider sceleton * DeviceCheck attestation provider sceleton * Basic FIRDeviceCheckAttestationProviderTests * Run ./scripts/style.sh * FIRAppAttestStorage implementation and tests (#627) * FIRDeviceCheckAttestationProvider designated init * FIRAppAttestStorage API and basic tests. * FIRAppAttestStoredToken: NSSecureCoding implementation * WIP Storage * Add `accessGroup` param to `FIRAppAttestStorage` * FIRAppAttestStorage implementation * Use constants * FIRAppAttestStorage API doc * Coding style and typos. * Code formatting * Attestation Token caching (#630) * Storage instance and looging * AppAttestation caching * Tests and cleanup * Cleanup * Rename App Attestation -> App Check (#631) * Rename App Attestation -> App Check * Run ./scripts/style.sh * Update GHA * Default Custom Provider (#633) * AppCheck: remove not unnecessary public API (#634) * AppCheck: remove not unnecessary public API * Run ./scripts/style.sh * AppCheck: DeviceCheck token server API (#635) * Generic HTTP request handling * [draft] AppCheck: device check HTTP API and simple tests * Parse response * Cleanup * AppCheck: API errors and tests (#636) * AppCheck errors * API service tests and fixes * Cleanup * Run ./scripts/style.sh * Naming * AppCheck: Register device check provider factory as a default (#637) * AppCheck errors * API service tests and fixes * Cleanup * Run ./scripts/style.sh * AppCheck: register FIRDeviceCheckProvider as a component * Naming * Registre device check provider factory as a default * FIRDeviceCheckProvider tests * AppCheck: API communication common for all providers moved to FIRAppCheckAPIService (#640) * FIRAppCheckAPIService introduced * Move URL seession stub to FIRURLSessionOCMockStub * Run ./scripts/style.sh * Move approximate date comparing to FIRDateTestUtils * compose request in FIRAppCheckAPIService * FIRAppCheckAPIServiceTests * Use FIRAppCheckAPIService in FIRDeviceCheckProvider * Cleanup * DeviceCheck mock server integration and tests (#686) * DeviceCheck mock server integration and tests * TODO * Update FIROptions.h import * Temporary add FirebaseAppCheck to skip import validation * TestUtilities moved to SharedTestUtilities * FirebaseAppCheck.podspec: TestUtilities->SharedTestUtilities * SwiftPM: add OCMock dependency to SharedTestUtilities * FIRURLSessionOCMockStub: #import "OCMock.h" * App Check: Firebase 7 fixes (#715) * AppCheck Firebase 7 * FirebaseCore repo-relative imports * Fix FIRAppCheckStorage.m compilation * Repo relative imports * linebreak * AppCheck: debug FAC token provider (#716) * AppCheck Firebase 7 * FirebaseCore repo-relative imports * Fix FIRAppCheckStorage.m compilation * Repo relative imports * linebreak * Remove FIRAppCheckDefaultCustomProvider * FIRAppCheckDebugProvider introduced * FIRAppCheckDebugProviderTests * style * Print locally generated debug token to console * Fix imports * mullability and line breaks * typo * Comments * TODO * AppCheck: merge into single spec (package) (#717) * Standard package folder structure * Move interop header into AppCheck sources folder * Combine public headers in the standard dir * Private headers to internal * Podspec * Headers import udpdate * style * Fix header imports * Enable check_imports.swift and fix imports * AppCheck: server request adjustments (#718) * Wrap DeviceCheck token into JSON * AppChek - remove static_framework requirement * WIP * Update default base URL * Set content-type header * Check for empty response data * Fix tests * Style and formatting * Podspec - revert wrong change and remove static_framework * Assign error to error pointer safely. * AppCheck: primitive test app (#719) * Remove static_framework requirement * WIP: FIRAppCheckTestApp introduced * Delete .plist * Copyright * Remove empty test targets * pod deintegrate * Remove test targets from Podfile * formatting * Storage: integration with AppCheck (#720) * Storage: add AppCheck interop dependency * Inject AppCheck into FIRStorageTokenAuthorizer * initial AppCheck integration * Introduce AppCheck fake * AppCheck fake implementation * FIRStorageTokenAuthorizer tests and fixes * @"Authorization" header constant * Log AppCheck error. * Cleanup * FIRStorageTokenAuthorizerTests: helpers * TODO * Cleanup * AppCheck: separate 2P and 3P API (#724) * FIRAppCheckInterop: remove a convenience method. * Rename: FIRAppCheckTokenInterop->FIRAppCheckTokenResultInterop * FIRAppCheckTokenResult introduced * Update FIRAppCheckTokenHandlerInterop, FIRAppCheckTokenResultInterop and tests * style * Update token result * Update storage integration * Adjust check_imports.swift for test files * Don't use internal AppCheck classes in Storage tests * style * Rename token to tokenResult in 2P API * Add private Core headers to app check sources * Fix storage log message code format * token clarification comments in API docs * Rename token->tokenResult * AppCheck cleanup (#737) * Fix public headers import * Cleanup imported test utils * FirebaseAppCheck podspec: revert git URL * AppCheck: Debug token to AppCheck token exchange API (#739) * GUL: make NSURLSession promise extension public * Use NSURLSession+GULPromises to send requests * style * Move FIRAppCheckToken+APIResponse to Core dir * rename * FIRAppCheckDebugProviderAPIService introduced * Move async token parsing API to FIRAppCheckToken extension * Move token exchange response handling to FIRAppCheckAPIService. Tests WIP. * Move API response parsing tests to FIRAppCheckAPIServiceTests * FIRAppCheckDebugProviderAPIServiceTests * Cleanup * style * App Check debug provider: integrate with exchange API (#743) * Move FIROption validation to FIRAppCheckValidator * FIRAppCheckDebugProvider token exchange and tests * Fix FIRAppCheckDebugProviderFactoryTests * style * App Check test app debug provider fix (#747) * App Check: minor touchups (#750) * Update dummy token value * Print local debug token to logs * Require GoogleUtilities v7.2 and above * Print debug token on init * Don't print debug token again * App Check: use prod environment (#751) * App Check: use prod backend by default. * Update token expiration threshold * App Check SwiftPM support (#753) * AppCheck SwiftPM package definition * Promise header import fix * OCMock header fix * Fix fixture dependent tests * Exclude Keychain dependent tests * License * ./scripts/style.sh * Cleanup * Format with proper SwiftFormat version * `.process` resources. * Swift tests target * Cleanup and code formatting * App Check: token auto-refresh (#754) * FIRAppCheckTokenRefresher API defined * FIRAppCheckTokenRefresher implementation draft * [WIP] Token refresher integration * Token refresher integration * FIRAppCheckTests: token refresher tests * FIRAppCheckTests: additional tests cases * FIRAppCheckTimer introduced * FIRAppCheckTokenRefresher: use FIRAppCheckTimer instead of the dispatch timer. * FIRFakeTimer * FIRAppCheckTokenRefresherTests testInitialRefresh * FIRAppCheckTokenRefresherTests: testNextRefreshOnRefreshSuccess * ./scripts/style.sh * Exponential backoff * Style and comments * Move token refresh files to a separate folder * FIRAppCheckTimerTests * FIRAppCheck: use expicit class in init * FIRAppCheckDebugProviderFactory Swift name * FIRAppCheckTokenRefresher: Increment/decrement directly * App Check fixes (#755) * Fix backoff: no backoff for the initial request * Use eager initialization * FIRAppCheckTokenRefresher: don't refresh until handler set * FIRAppCheckIntegrationTests: disable token refresher * Fix testInitialRefresh test * style * FIRAppCheckIntegrationTests fix * Temporary exclude App Check from platfrom logging (#756) * App Check: send app check SDK version only in the header (#757) * App Check: store FAC token per app ID (#758) * App Check: store FAC token per app ID * update podspec * API docs * FIRAppCheck initWithApp tests * AppCheckCustomProvideApp (#760) * Functions: App Check integration (#762) * Functions: app check API added to FUNContextProvider * FUNContextProviderTests * FUNContextProvider app check support * ./scripts/style.sh * FIRFunctions: pass FAC token as HTTP header * Fix SPM * Fix Firebase-Package scheme bad merge * Cleanup * RTDB: pass FAC token to web socket (#763) * RTDB: pass FAC token to web socket * FIRAppCheckFake default init * Rename FAuthTokenProvider to FIRDatabaseConnectionContext; integrate with App Check * Pass App Check token in the HTTP header * Rename * Fix existing tests * TODO * ./scripts/style.sh * Context provider: assume separate FAC token change listener * FIRDatabaseConnectionContextProviderTests * Remove unused files * Copy NSMutableURLRequest * Cleanup * ./scripts/style.sh * FIRDatabaseConnectionContextProvider: sync callback when no auth or app check * Cleanup * Rename "authToken" leftovers to "context" * Fix renaming * Pass missing headers to NSURLSessionWebSocketTask * Cleanup * add a name to TODO * App Check: token update notifications (#764) * AppCheck: token did change API and tests * notification implementation and fixes * Run ./scripts/style.sh * Update comments * RTDB: send app check token updates to keep connection open (#765) * Pass AppCheck instance as an object into the the FAC token update notification * FIRDatabaseConnectionContext: add FAC token change listener API * formatting * Send FAC token updates to open connection * More informative empty response message * refreshAppCheckToken fixes * Remove assertion * Don't modify state * forceTokensRefresh -> forceTokenRefreshes * Call listeners on [FIRDatabaseQuery sharedQueue] * App Check API cleanup and docs (#766) * AppCheck public API and docs cleanup * More API docs * Fix compilation errors * typos and wording * Make summary different from description (pod lib lint warning) * port app check workflow changes from another branch * pod lib lint: remove --allow-warnings * App Check cleanup (#767) * Cleanup debug code and outdated TODOs * Fix FIRDeviceCheckProvider availablility for SPM * Fix availability in tests * Fix availability in tests * Make sure os requirements are consistent for tests specs * Migrate v1alpha URLs to v1beta * Migrate v1alpha URLs to v1beta * Run ./scripts/style.sh * Functions tests: fix Xcode 11 warnings (#7931) * Functions tests: fix Xcode 11 warnings * style * App Check: token auto-refresh opt-out API (#769) * FIRAppCheckSettings introduced (WIP) * FIRAppCheckSettingsTests * Style * Make FIRAppCheckSettings instance per-app. * FIRAppCheckTokenRefresher: use FIRAppCheckSettings.isTokenAutoRefreshEnabled (WIP) * Tests * Add public instance getters * Fix analyzer warnings * Fix testspec OS versions * FIRAppCheckTokenRefresher expiration date update; tests * FIRAppCheck.isTokenAutoRefreshEnabled implementation and tests * style * FIRAppCheck: Use specific types for variables in the default init * More precise comments * missing symbol * FIRAppCheckSettings: remove defensive conditions from init. Co-authored-by: Nick Cooke <nickcooke@google.com> Co-authored-by: Nick Cooke <36927374+ncooke3@users.noreply.github.com>
192 lines
7.3 KiB
Objective-C
192 lines
7.3 KiB
Objective-C
/*
|
|
* Copyright 2017 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 "FirebaseDatabase/Sources/Constants/FConstants.h"
|
|
|
|
#pragma mark -
|
|
#pragma mark Wire Protocol Envelope Constants
|
|
|
|
NSString *const kFWPRequestType = @"t";
|
|
NSString *const kFWPRequestTypeData = @"d";
|
|
NSString *const kFWPRequestDataPayload = @"d";
|
|
NSString *const kFWPRequestNumber = @"r";
|
|
NSString *const kFWPRequestPayloadBody = @"b";
|
|
NSString *const kFWPRequestError = @"error";
|
|
NSString *const kFWPRequestAction = @"a";
|
|
NSString *const kFWPResponseForRNData = @"b";
|
|
NSString *const kFWPResponseForActionStatus = @"s";
|
|
NSString *const kFWPResponseForActionStatusOk = @"ok";
|
|
NSString *const kFWPResponseForActionStatusFailed = @"failed";
|
|
NSString *const kFWPResponseForActionStatusDataStale = @"datastale";
|
|
NSString *const kFWPResponseForActionData = @"d";
|
|
NSString *const kFWPResponseDataWarnings = @"w";
|
|
NSString *const kFWPAsyncServerAction = @"a";
|
|
NSString *const kFWPAsyncServerPayloadBody = @"b";
|
|
NSString *const kFWPAsyncServerDataUpdate = @"d";
|
|
NSString *const kFWPAsyncServerDataMerge = @"m";
|
|
NSString *const kFWPAsyncServerDataRangeMerge = @"rm";
|
|
NSString *const kFWPAsyncServerAuthRevoked = @"ac";
|
|
NSString *const kFWPASyncServerListenCancelled = @"c";
|
|
NSString *const kFWPAsyncServerSecurityDebug = @"sd";
|
|
NSString *const kFWPAsyncServerDataUpdateBodyPath =
|
|
@"p"; // {"a": "d", "b": {"p": "/", "d": "<data>"}}
|
|
NSString *const kFWPAsyncServerDataUpdateBodyData = @"d";
|
|
NSString *const kFWPAsyncServerDataUpdateStartPath = @"s";
|
|
NSString *const kFWPAsyncServerDataUpdateEndPath = @"e";
|
|
NSString *const kFWPAsyncServerDataUpdateRangeMerge = @"m";
|
|
NSString *const kFWPAsyncServerDataUpdateBodyTag = @"t";
|
|
NSString *const kFWPAsyncServerDataQueries = @"q";
|
|
|
|
NSString *const kFWPAsyncServerEnvelopeType = @"t";
|
|
NSString *const kFWPAsyncServerEnvelopeData = @"d";
|
|
NSString *const kFWPAsyncServerControlMessage = @"c";
|
|
NSString *const kFWPAsyncServerControlMessageType = @"t";
|
|
NSString *const kFWPAsyncServerControlMessageData = @"d";
|
|
NSString *const kFWPAsyncServerDataMessage = @"d";
|
|
|
|
NSString *const kFWPAsyncServerHello = @"h";
|
|
NSString *const kFWPAsyncServerHelloTimestamp = @"ts";
|
|
NSString *const kFWPAsyncServerHelloVersion = @"v";
|
|
NSString *const kFWPAsyncServerHelloConnectedHost = @"h";
|
|
NSString *const kFWPAsyncServerHelloSession = @"s";
|
|
|
|
NSString *const kFWPAsyncServerControlMessageShutdown = @"s";
|
|
NSString *const kFWPAsyncServerControlMessageReset = @"r";
|
|
|
|
#pragma mark -
|
|
#pragma mark Wire Protocol Payload Constants
|
|
|
|
NSString *const kFWPRequestActionPut = @"p";
|
|
NSString *const kFWPRequestActionMerge = @"m";
|
|
NSString *const kFWPRequestActionGet = @"g";
|
|
NSString *const kFWPRequestActionListen =
|
|
@"l"; // {"t": "d", "d": {"r": 1, "a": "l", "b": { "p": "/" } } }
|
|
NSString *const kFWPRequestActionUnlisten = @"u";
|
|
NSString *const kFWPRequestActionStats = @"s";
|
|
NSString *const kFWPRequestActionTaggedListen = @"q";
|
|
NSString *const kFWPRequestActionTaggedUnlisten = @"n";
|
|
NSString *const kFWPRequestActionDisconnectPut = @"o";
|
|
NSString *const kFWPRequestActionDisconnectMerge = @"om";
|
|
NSString *const kFWPRequestActionDisconnectCancel = @"oc";
|
|
NSString *const kFWPRequestActionAuth = @"auth";
|
|
NSString *const kFWPRequestActionAppCheck = @"appcheck";
|
|
NSString *const kFWPRequestActionUnauth = @"unauth";
|
|
NSString *const kFWPRequestAppCheckToken = @"token";
|
|
NSString *const kFWPRequestCredential = @"cred";
|
|
NSString *const kFWPRequestPath = @"p";
|
|
NSString *const kFWPRequestCounters = @"c";
|
|
NSString *const kFWPRequestQueries = @"q";
|
|
NSString *const kFWPRequestTag = @"t";
|
|
NSString *const kFWPRequestData = @"d";
|
|
NSString *const kFWPRequestHash = @"h";
|
|
NSString *const kFWPRequestCompoundHash = @"ch";
|
|
NSString *const kFWPRequestCompoundHashPaths = @"ps";
|
|
NSString *const kFWPRequestCompoundHashHashes = @"hs";
|
|
NSString *const kFWPRequestStatus = @"s";
|
|
|
|
#pragma mark -
|
|
#pragma mark Websock Transport Constants
|
|
|
|
NSString *const kWireProtocolVersionParam = @"v";
|
|
NSString *const kWebsocketProtocolVersion = @"5";
|
|
NSString *const kWebsocketServerKillPacket = @"kill";
|
|
NSString *const kPersistentConnectionOffline = @"Client is offline.";
|
|
const int kWebsocketMaxFrameSize = 16384;
|
|
NSUInteger const kWebsocketKeepaliveInterval = 45;
|
|
NSUInteger const kWebsocketConnectTimeout = 30;
|
|
UInt64 const kPersistentConnectionGetConnectTimeout = 3 * NSEC_PER_SEC;
|
|
|
|
float const kPersistentConnReconnectMinDelay = 1.0;
|
|
float const kPersistentConnReconnectMaxDelay = 30.0;
|
|
float const kPersistentConnReconnectMultiplier = 1.3f;
|
|
float const kPersistentConnSuccessfulConnectionEstablishedDelay = 30.0;
|
|
|
|
#pragma mark -
|
|
#pragma mark Query constants
|
|
|
|
NSString *const kQueryDefault = @"default";
|
|
NSString *const kQueryDefaultObject = @"{}";
|
|
NSString *const kViewManagerDictConstView = @"view";
|
|
NSString *const kFQPIndexStartValue = @"sp";
|
|
NSString *const kFQPIndexStartName = @"sn";
|
|
NSString *const kFQPIndexEndValue = @"ep";
|
|
NSString *const kFQPIndexEndName = @"en";
|
|
NSString *const kFQPLimit = @"l";
|
|
NSString *const kFQPViewFrom = @"vf";
|
|
NSString *const kFQPViewFromLeft = @"l";
|
|
NSString *const kFQPViewFromRight = @"r";
|
|
NSString *const kFQPIndex = @"i";
|
|
|
|
#pragma mark -
|
|
#pragma mark Interrupt Reasons
|
|
|
|
NSString *const kFInterruptReasonServerKill = @"server_kill";
|
|
NSString *const kFInterruptReasonWaitingForOpen = @"waiting_for_open";
|
|
NSString *const kFInterruptReasonRepoInterrupt = @"repo_interrupt";
|
|
|
|
#pragma mark -
|
|
#pragma mark Payload constants
|
|
|
|
NSString *const kPayloadPriority = @".priority";
|
|
NSString *const kPayloadValue = @".value";
|
|
NSString *const kPayloadMetadataPrefix = @".";
|
|
|
|
#pragma mark -
|
|
#pragma mark ServerValue constants
|
|
|
|
NSString *const kServerValueSubKey = @".sv";
|
|
NSString *const kServerValuePriority = @"timestamp";
|
|
|
|
#pragma mark -
|
|
#pragma mark.info/ constants
|
|
|
|
NSString *const kDotInfoPrefix = @".info";
|
|
NSString *const kDotInfoConnected = @"connected";
|
|
NSString *const kDotInfoServerTimeOffset = @"serverTimeOffset";
|
|
|
|
#pragma mark -
|
|
#pragma mark ObjectiveC to JavaScript type constants
|
|
|
|
NSString *const kJavaScriptObject = @"object";
|
|
NSString *const kJavaScriptString = @"string";
|
|
NSString *const kJavaScriptBoolean = @"boolean";
|
|
NSString *const kJavaScriptNumber = @"number";
|
|
NSString *const kJavaScriptNull = @"null";
|
|
NSString *const kJavaScriptTrue = @"true";
|
|
NSString *const kJavaScriptFalse = @"false";
|
|
|
|
#pragma mark -
|
|
#pragma mark Error handling constants
|
|
|
|
NSString *const kFErrorDomain = @"com.firebase";
|
|
NSUInteger const kFAuthError = 1;
|
|
NSString *const kFErrorWriteCanceled = @"write_canceled";
|
|
|
|
#pragma mark -
|
|
#pragma mark Validation Constants
|
|
|
|
NSUInteger const kFirebaseMaxObjectDepth = 1000;
|
|
const unsigned int kFirebaseMaxLeafSize = 1024 * 1024 * 10; // 10 MB
|
|
|
|
#pragma mark -
|
|
#pragma mark Transaction Constants
|
|
|
|
NSUInteger const kFTransactionMaxRetries = 25;
|
|
NSString *const kFTransactionTooManyRetries = @"maxretry";
|
|
NSString *const kFTransactionNoData = @"nodata";
|
|
NSString *const kFTransactionSet = @"set";
|
|
NSString *const kFTransactionDisconnect = @"disconnect";
|