-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFirebaseOptions.php
More file actions
146 lines (121 loc) · 3.54 KB
/
FirebaseOptions.php
File metadata and controls
146 lines (121 loc) · 3.54 KB
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
namespace Firebase;
use Firebase\Util\Validator\Validator;
use Google\Auth\ApplicationDefaultCredentials;
use Google\Auth\CredentialsLoader;
use Google\Auth\SignBlobInterface;
use GuzzleHttp\ClientInterface;
final class FirebaseOptions
{
public const FIREBASE_SCOPES = [
// Enables access to Firebase Realtime Database.
'https://www.googleapis.com/auth/firebase.database',
// Enables access to the email address associated with a project.
'https://www.googleapis.com/auth/userinfo.email',
// Enables access to Google Identity Toolkit (for user management APIs).
'https://www.googleapis.com/auth/identitytoolkit',
// Enables access to Google Cloud Storage.
'https://www.googleapis.com/auth/devstorage.full_control',
// Enables access to Google Cloud Firestore
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/datastore'
];
/**
* @var string|null
*/
private $databaseUrl;
/**
* @var string|null
*/
private $storageBucket;
/**
* @var array|null
*/
private $databaseAuthVariableOverride;
/**
* @var string|null
*/
private $serviceAccountId;
/**
* @var string|null
*/
private $projectId;
/**
* @var ClientInterface
*/
private $httpClient;
/**
* @var SignBlobInterface|null
*/
private $credentials;
public function __construct(FirebaseOptionsBuilder $builder)
{
$this->databaseUrl = $builder->getDatabaseUrl();
$this->databaseAuthVariableOverride = $builder->getDatabaseAuthVariableOverride();
$this->projectId = $builder->getProjectId();
if (!empty($builder->getStorageBucket())) {
preg_match('/^gs:\\/\\//', $builder->getStorageBucket(), $matches);
Validator::checkArgument(empty($matches), 'StorageBucket must not include "gs://" prefix.');
}
$this->storageBucket = $builder->getStorageBucket();
$this->credentials = Validator::isNonNullObject($builder->getCredentials(), 'FirebaseOptions must be initialized with setCredentials().');
$this->httpClient = $builder->getHttpClient() ?? CredentialsLoader::makeHttpClient($this->credentials);
}
/**
* @return string|null
*/
public function getDatabaseUrl(): ?string
{
return $this->databaseUrl;
}
/**
* @return string|null
*/
public function getStorageBucket(): ?string
{
return $this->storageBucket;
}
/**
* @return SignBlobInterface|null
*/
public function getCredentials()
{
return $this->credentials;
}
/**
* @return array|null
*/
public function getDatabaseAuthVariableOverride(): ?array
{
return $this->databaseAuthVariableOverride;
}
/**
* @return ClientInterface
*/
public function getHttpClient(): ?ClientInterface
{
return $this->httpClient;
}
/**
* @return string|null
*/
public function getServiceAccountId(): ?string
{
return $this->serviceAccountId;
}
/**
* @return string|null
*/
public function getProjectId(): ?string
{
return $this->projectId;
}
public static function getDefaultApplicationCredentials()
{
return ApplicationDefaultCredentials::getCredentials(self::FIREBASE_SCOPES);
}
public static function builder(?FirebaseOptions $options = null)
{
return new FirebaseOptionsBuilder($options);
}
}