mirror of
https://github.com/appwrite/appwrite
synced 2026-05-23 08:58:35 +00:00
Merge branch '1.6.x' into chore--utopia-migration
This commit is contained in:
commit
d39fce55c1
4346 changed files with 4998 additions and 8630 deletions
|
|
@ -11,7 +11,7 @@ return [
|
|||
[
|
||||
'key' => 'web',
|
||||
'name' => 'Web',
|
||||
'version' => '17.0.1',
|
||||
'version' => '17.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-web',
|
||||
'package' => 'https://www.npmjs.com/package/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -59,7 +59,7 @@ return [
|
|||
[
|
||||
'key' => 'flutter',
|
||||
'name' => 'Flutter',
|
||||
'version' => '15.0.0',
|
||||
'version' => '15.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-flutter',
|
||||
'package' => 'https://pub.dev/packages/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -77,7 +77,7 @@ return [
|
|||
[
|
||||
'key' => 'apple',
|
||||
'name' => 'Apple',
|
||||
'version' => '9.0.0',
|
||||
'version' => '9.0.1',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-apple',
|
||||
'package' => 'https://github.com/appwrite/sdk-for-apple',
|
||||
'enabled' => true,
|
||||
|
|
@ -112,7 +112,7 @@ return [
|
|||
[
|
||||
'key' => 'android',
|
||||
'name' => 'Android',
|
||||
'version' => '6.1.0',
|
||||
'version' => '7.0.1',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-android',
|
||||
'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-android',
|
||||
'enabled' => true,
|
||||
|
|
@ -134,7 +134,7 @@ return [
|
|||
[
|
||||
'key' => 'react-native',
|
||||
'name' => 'React Native',
|
||||
'version' => '0.7.2',
|
||||
'version' => '0.7.3',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-react-native',
|
||||
'package' => 'https://npmjs.com/package/react-native-appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -245,7 +245,7 @@ return [
|
|||
[
|
||||
'key' => 'nodejs',
|
||||
'name' => 'Node.js',
|
||||
'version' => '15.0.1',
|
||||
'version' => '16.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-node',
|
||||
'package' => 'https://www.npmjs.com/package/node-appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -263,7 +263,7 @@ return [
|
|||
[
|
||||
'key' => 'deno',
|
||||
'name' => 'Deno',
|
||||
'version' => '12.2.0',
|
||||
'version' => '14.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-deno',
|
||||
'package' => 'https://deno.land/x/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -281,7 +281,7 @@ return [
|
|||
[
|
||||
'key' => 'php',
|
||||
'name' => 'PHP',
|
||||
'version' => '12.2.0',
|
||||
'version' => '14.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-php',
|
||||
'package' => 'https://packagist.org/packages/appwrite/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -299,7 +299,7 @@ return [
|
|||
[
|
||||
'key' => 'python',
|
||||
'name' => 'Python',
|
||||
'version' => '9.0.3',
|
||||
'version' => '10.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-python',
|
||||
'package' => 'https://pypi.org/project/appwrite/',
|
||||
'enabled' => true,
|
||||
|
|
@ -317,7 +317,7 @@ return [
|
|||
[
|
||||
'key' => 'ruby',
|
||||
'name' => 'Ruby',
|
||||
'version' => '12.2.0',
|
||||
'version' => '15.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-ruby',
|
||||
'package' => 'https://rubygems.org/gems/appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -335,7 +335,7 @@ return [
|
|||
[
|
||||
'key' => 'go',
|
||||
'name' => 'Go',
|
||||
'version' => '0.3.0',
|
||||
'version' => '0.5.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-go',
|
||||
'package' => 'https://github.com/appwrite/sdk-for-go',
|
||||
'enabled' => true,
|
||||
|
|
@ -353,7 +353,7 @@ return [
|
|||
[
|
||||
'key' => 'dotnet',
|
||||
'name' => '.NET',
|
||||
'version' => '0.11.0',
|
||||
'version' => '0.12.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-dotnet',
|
||||
'package' => 'https://www.nuget.org/packages/Appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -371,7 +371,7 @@ return [
|
|||
[
|
||||
'key' => 'dart',
|
||||
'name' => 'Dart',
|
||||
'version' => '14.0.0',
|
||||
'version' => '15.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-dart',
|
||||
'package' => 'https://pub.dev/packages/dart_appwrite',
|
||||
'enabled' => true,
|
||||
|
|
@ -389,7 +389,7 @@ return [
|
|||
[
|
||||
'key' => 'kotlin',
|
||||
'name' => 'Kotlin',
|
||||
'version' => '6.2.0',
|
||||
'version' => '8.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-kotlin',
|
||||
'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-kotlin',
|
||||
'enabled' => true,
|
||||
|
|
@ -411,7 +411,7 @@ return [
|
|||
[
|
||||
'key' => 'swift',
|
||||
'name' => 'Swift',
|
||||
'version' => '8.0.0',
|
||||
'version' => '9.0.0',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-swift',
|
||||
'package' => 'https://github.com/appwrite/sdk-for-swift',
|
||||
'enabled' => true,
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
}
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "https:\/\/cloud.appwrite.io\/v1"
|
||||
},
|
||||
{
|
||||
"url": "https:\/\/<REGION>.cloud.appwrite.io\/v1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
}
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "https:\/\/cloud.appwrite.io\/v1"
|
||||
},
|
||||
{
|
||||
"url": "https:\/\/<REGION>.cloud.appwrite.io\/v1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
}
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "https:\/\/cloud.appwrite.io\/v1"
|
||||
},
|
||||
{
|
||||
"url": "https:\/\/<REGION>.cloud.appwrite.io\/v1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
}
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "https:\/\/cloud.appwrite.io\/v1"
|
||||
},
|
||||
{
|
||||
"url": "https:\/\/<REGION>.cloud.appwrite.io\/v1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
}
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "https:\/\/cloud.appwrite.io\/v1"
|
||||
},
|
||||
{
|
||||
"url": "https:\/\/<REGION>.cloud.appwrite.io\/v1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
}
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
"url": "https:\/\/cloud.appwrite.io\/v1"
|
||||
},
|
||||
{
|
||||
"url": "https:\/\/<REGION>.cloud.appwrite.io\/v1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,8 @@
|
|||
"url": "https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"
|
||||
}
|
||||
},
|
||||
"host": "<REGION>.cloud.appwrite.io",
|
||||
"host": "cloud.appwrite.io",
|
||||
"x-host-docs": "<REGION>.cloud.appwrite.io",
|
||||
"basePath": "\/v1",
|
||||
"schemes": [
|
||||
"https"
|
||||
|
|
@ -67,9 +68,7 @@
|
|||
"get": {
|
||||
"summary": "Get account",
|
||||
"operationId": "accountGet",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -289,9 +288,7 @@
|
|||
"get": {
|
||||
"summary": "List identities",
|
||||
"operationId": "accountListIdentities",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -465,9 +462,7 @@
|
|||
"get": {
|
||||
"summary": "List logs",
|
||||
"operationId": "accountListLogs",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -975,9 +970,7 @@
|
|||
"get": {
|
||||
"summary": "List factors",
|
||||
"operationId": "accountListMfaFactors",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -1028,9 +1021,7 @@
|
|||
"get": {
|
||||
"summary": "List MFA recovery codes",
|
||||
"operationId": "accountGetMfaRecoveryCodes",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -1415,9 +1406,7 @@
|
|||
"get": {
|
||||
"summary": "Get account preferences",
|
||||
"operationId": "accountGetPrefs",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -1707,9 +1696,7 @@
|
|||
"get": {
|
||||
"summary": "List sessions",
|
||||
"operationId": "accountListSessions",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -2013,9 +2000,7 @@
|
|||
"get": {
|
||||
"summary": "Create OAuth2 session",
|
||||
"operationId": "accountCreateOAuth2Session",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"text\/html"
|
||||
],
|
||||
|
|
@ -2303,9 +2288,7 @@
|
|||
"get": {
|
||||
"summary": "Get session",
|
||||
"operationId": "accountGetSession",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -2930,9 +2913,7 @@
|
|||
"get": {
|
||||
"summary": "Create OAuth2 token",
|
||||
"operationId": "accountCreateOAuth2Token",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"text\/html"
|
||||
],
|
||||
|
|
@ -3430,9 +3411,7 @@
|
|||
"get": {
|
||||
"summary": "Get browser icon",
|
||||
"operationId": "avatarsGetBrowser",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -3557,9 +3536,7 @@
|
|||
"get": {
|
||||
"summary": "Get credit card icon",
|
||||
"operationId": "avatarsGetCreditCard",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -3690,9 +3667,7 @@
|
|||
"get": {
|
||||
"summary": "Get favicon",
|
||||
"operationId": "avatarsGetFavicon",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/*"
|
||||
],
|
||||
|
|
@ -3755,9 +3730,7 @@
|
|||
"get": {
|
||||
"summary": "Get country flag",
|
||||
"operationId": "avatarsGetFlag",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -4244,9 +4217,7 @@
|
|||
"get": {
|
||||
"summary": "Get image from URL",
|
||||
"operationId": "avatarsGetImage",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/*"
|
||||
],
|
||||
|
|
@ -4329,9 +4300,7 @@
|
|||
"get": {
|
||||
"summary": "Get user initials",
|
||||
"operationId": "avatarsGetInitials",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -4422,9 +4391,7 @@
|
|||
"get": {
|
||||
"summary": "Get QR code",
|
||||
"operationId": "avatarsGetQR",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -4515,9 +4482,7 @@
|
|||
"get": {
|
||||
"summary": "List documents",
|
||||
"operationId": "databasesListDocuments",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -4703,9 +4668,7 @@
|
|||
"get": {
|
||||
"summary": "Get document",
|
||||
"operationId": "databasesGetDocument",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -4970,9 +4933,7 @@
|
|||
"get": {
|
||||
"summary": "List executions",
|
||||
"operationId": "functionsListExecutions",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5172,9 +5133,7 @@
|
|||
"get": {
|
||||
"summary": "Get execution",
|
||||
"operationId": "functionsGetExecution",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5392,9 +5351,7 @@
|
|||
"get": {
|
||||
"summary": "Get user locale",
|
||||
"operationId": "localeGet",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5446,9 +5403,7 @@
|
|||
"get": {
|
||||
"summary": "List locale codes",
|
||||
"operationId": "localeListCodes",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5500,9 +5455,7 @@
|
|||
"get": {
|
||||
"summary": "List continents",
|
||||
"operationId": "localeListContinents",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5554,9 +5507,7 @@
|
|||
"get": {
|
||||
"summary": "List countries",
|
||||
"operationId": "localeListCountries",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5608,9 +5559,7 @@
|
|||
"get": {
|
||||
"summary": "List EU countries",
|
||||
"operationId": "localeListCountriesEU",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5662,9 +5611,7 @@
|
|||
"get": {
|
||||
"summary": "List countries phone codes",
|
||||
"operationId": "localeListCountriesPhones",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5716,9 +5663,7 @@
|
|||
"get": {
|
||||
"summary": "List currencies",
|
||||
"operationId": "localeListCurrencies",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5770,9 +5715,7 @@
|
|||
"get": {
|
||||
"summary": "List languages",
|
||||
"operationId": "localeListLanguages",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5982,9 +5925,7 @@
|
|||
"get": {
|
||||
"summary": "List files",
|
||||
"operationId": "storageListFiles",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -6157,9 +6098,7 @@
|
|||
"get": {
|
||||
"summary": "Get file",
|
||||
"operationId": "storageGetFile",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -6388,9 +6327,7 @@
|
|||
"get": {
|
||||
"summary": "Get file for download",
|
||||
"operationId": "storageGetFileDownload",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"*\/*"
|
||||
],
|
||||
|
|
@ -6460,9 +6397,7 @@
|
|||
"get": {
|
||||
"summary": "Get file preview",
|
||||
"operationId": "storageGetFilePreview",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/*"
|
||||
],
|
||||
|
|
@ -6660,9 +6595,7 @@
|
|||
"get": {
|
||||
"summary": "Get file for view",
|
||||
"operationId": "storageGetFileView",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"*\/*"
|
||||
],
|
||||
|
|
@ -6732,9 +6665,7 @@
|
|||
"get": {
|
||||
"summary": "List teams",
|
||||
"operationId": "teamsList",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -6899,9 +6830,7 @@
|
|||
"get": {
|
||||
"summary": "Get team",
|
||||
"operationId": "teamsGet",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -7100,9 +7029,7 @@
|
|||
"get": {
|
||||
"summary": "List team memberships",
|
||||
"operationId": "teamsListMemberships",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -7298,9 +7225,7 @@
|
|||
"get": {
|
||||
"summary": "Get team membership",
|
||||
"operationId": "teamsGetMembership",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -7622,9 +7547,7 @@
|
|||
"get": {
|
||||
"summary": "Get team preferences",
|
||||
"operationId": "teamsGetPrefs",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -15,7 +15,8 @@
|
|||
"url": "https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"
|
||||
}
|
||||
},
|
||||
"host": "<REGION>.cloud.appwrite.io",
|
||||
"host": "cloud.appwrite.io",
|
||||
"x-host-docs": "<REGION>.cloud.appwrite.io",
|
||||
"basePath": "\/v1",
|
||||
"schemes": [
|
||||
"https"
|
||||
|
|
@ -67,9 +68,7 @@
|
|||
"get": {
|
||||
"summary": "Get account",
|
||||
"operationId": "accountGet",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -289,9 +288,7 @@
|
|||
"get": {
|
||||
"summary": "List identities",
|
||||
"operationId": "accountListIdentities",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -465,9 +462,7 @@
|
|||
"get": {
|
||||
"summary": "List logs",
|
||||
"operationId": "accountListLogs",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -975,9 +970,7 @@
|
|||
"get": {
|
||||
"summary": "List factors",
|
||||
"operationId": "accountListMfaFactors",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -1028,9 +1021,7 @@
|
|||
"get": {
|
||||
"summary": "List MFA recovery codes",
|
||||
"operationId": "accountGetMfaRecoveryCodes",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -1415,9 +1406,7 @@
|
|||
"get": {
|
||||
"summary": "Get account preferences",
|
||||
"operationId": "accountGetPrefs",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -1707,9 +1696,7 @@
|
|||
"get": {
|
||||
"summary": "List sessions",
|
||||
"operationId": "accountListSessions",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -2013,9 +2000,7 @@
|
|||
"get": {
|
||||
"summary": "Create OAuth2 session",
|
||||
"operationId": "accountCreateOAuth2Session",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"text\/html"
|
||||
],
|
||||
|
|
@ -2303,9 +2288,7 @@
|
|||
"get": {
|
||||
"summary": "Get session",
|
||||
"operationId": "accountGetSession",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -2930,9 +2913,7 @@
|
|||
"get": {
|
||||
"summary": "Create OAuth2 token",
|
||||
"operationId": "accountCreateOAuth2Token",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"text\/html"
|
||||
],
|
||||
|
|
@ -3430,9 +3411,7 @@
|
|||
"get": {
|
||||
"summary": "Get browser icon",
|
||||
"operationId": "avatarsGetBrowser",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -3557,9 +3536,7 @@
|
|||
"get": {
|
||||
"summary": "Get credit card icon",
|
||||
"operationId": "avatarsGetCreditCard",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -3690,9 +3667,7 @@
|
|||
"get": {
|
||||
"summary": "Get favicon",
|
||||
"operationId": "avatarsGetFavicon",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/*"
|
||||
],
|
||||
|
|
@ -3755,9 +3730,7 @@
|
|||
"get": {
|
||||
"summary": "Get country flag",
|
||||
"operationId": "avatarsGetFlag",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -4244,9 +4217,7 @@
|
|||
"get": {
|
||||
"summary": "Get image from URL",
|
||||
"operationId": "avatarsGetImage",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/*"
|
||||
],
|
||||
|
|
@ -4329,9 +4300,7 @@
|
|||
"get": {
|
||||
"summary": "Get user initials",
|
||||
"operationId": "avatarsGetInitials",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -4422,9 +4391,7 @@
|
|||
"get": {
|
||||
"summary": "Get QR code",
|
||||
"operationId": "avatarsGetQR",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/png"
|
||||
],
|
||||
|
|
@ -4515,9 +4482,7 @@
|
|||
"get": {
|
||||
"summary": "List documents",
|
||||
"operationId": "databasesListDocuments",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -4703,9 +4668,7 @@
|
|||
"get": {
|
||||
"summary": "Get document",
|
||||
"operationId": "databasesGetDocument",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -4970,9 +4933,7 @@
|
|||
"get": {
|
||||
"summary": "List executions",
|
||||
"operationId": "functionsListExecutions",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5172,9 +5133,7 @@
|
|||
"get": {
|
||||
"summary": "Get execution",
|
||||
"operationId": "functionsGetExecution",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5392,9 +5351,7 @@
|
|||
"get": {
|
||||
"summary": "Get user locale",
|
||||
"operationId": "localeGet",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5446,9 +5403,7 @@
|
|||
"get": {
|
||||
"summary": "List locale codes",
|
||||
"operationId": "localeListCodes",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5500,9 +5455,7 @@
|
|||
"get": {
|
||||
"summary": "List continents",
|
||||
"operationId": "localeListContinents",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5554,9 +5507,7 @@
|
|||
"get": {
|
||||
"summary": "List countries",
|
||||
"operationId": "localeListCountries",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5608,9 +5559,7 @@
|
|||
"get": {
|
||||
"summary": "List EU countries",
|
||||
"operationId": "localeListCountriesEU",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5662,9 +5611,7 @@
|
|||
"get": {
|
||||
"summary": "List countries phone codes",
|
||||
"operationId": "localeListCountriesPhones",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5716,9 +5663,7 @@
|
|||
"get": {
|
||||
"summary": "List currencies",
|
||||
"operationId": "localeListCurrencies",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5770,9 +5715,7 @@
|
|||
"get": {
|
||||
"summary": "List languages",
|
||||
"operationId": "localeListLanguages",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -5982,9 +5925,7 @@
|
|||
"get": {
|
||||
"summary": "List files",
|
||||
"operationId": "storageListFiles",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -6157,9 +6098,7 @@
|
|||
"get": {
|
||||
"summary": "Get file",
|
||||
"operationId": "storageGetFile",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -6388,9 +6327,7 @@
|
|||
"get": {
|
||||
"summary": "Get file for download",
|
||||
"operationId": "storageGetFileDownload",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"*\/*"
|
||||
],
|
||||
|
|
@ -6460,9 +6397,7 @@
|
|||
"get": {
|
||||
"summary": "Get file preview",
|
||||
"operationId": "storageGetFilePreview",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"image\/*"
|
||||
],
|
||||
|
|
@ -6660,9 +6595,7 @@
|
|||
"get": {
|
||||
"summary": "Get file for view",
|
||||
"operationId": "storageGetFileView",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"*\/*"
|
||||
],
|
||||
|
|
@ -6732,9 +6665,7 @@
|
|||
"get": {
|
||||
"summary": "List teams",
|
||||
"operationId": "teamsList",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -6899,9 +6830,7 @@
|
|||
"get": {
|
||||
"summary": "Get team",
|
||||
"operationId": "teamsGet",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -7100,9 +7029,7 @@
|
|||
"get": {
|
||||
"summary": "List team memberships",
|
||||
"operationId": "teamsListMemberships",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -7298,9 +7225,7 @@
|
|||
"get": {
|
||||
"summary": "Get team membership",
|
||||
"operationId": "teamsGetMembership",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
@ -7622,9 +7547,7 @@
|
|||
"get": {
|
||||
"summary": "Get team preferences",
|
||||
"operationId": "teamsGetPrefs",
|
||||
"consumes": [
|
||||
"application\/json"
|
||||
],
|
||||
"consumes": [],
|
||||
"produces": [
|
||||
"application\/json"
|
||||
],
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -800,7 +800,7 @@ return [
|
|||
],
|
||||
[
|
||||
'name' => '_APP_FUNCTIONS_CPUS',
|
||||
'description' => 'The maximum number of CPU core a single cloud function is allowed to use. Please note that setting a value higher than available cores will result in a function error, which might result in an error. The default value is empty. When it\'s empty, CPU limit will be disabled.',
|
||||
'description' => 'The maximum number of CPU core a single cloud function is allowed to use. Please note that setting a value higher than available cores will result in a function error, which might result in an error. The default value is empty. When it\'s empty or 0, CPU limit will be disabled.',
|
||||
'introduction' => '0.7.0',
|
||||
'default' => '0',
|
||||
'required' => false,
|
||||
|
|
@ -809,7 +809,7 @@ return [
|
|||
],
|
||||
[
|
||||
'name' => '_APP_FUNCTIONS_MEMORY',
|
||||
'description' => 'The maximum amount of memory a single cloud function is allowed to use in megabytes. The default value is empty. When it\'s empty, memory limit will be disabled.',
|
||||
'description' => 'The maximum amount of memory a single cloud function is allowed to use in megabytes. The default value is empty. When it\'s empty or 0, memory limit will be disabled.',
|
||||
'introduction' => '0.7.0',
|
||||
'default' => '0',
|
||||
'required' => false,
|
||||
|
|
|
|||
|
|
@ -1445,7 +1445,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
|||
Query::notEqual('userInternalId', $user->getInternalId()),
|
||||
]);
|
||||
if (!$identityWithMatchingEmail->isEmpty()) {
|
||||
throw new Exception(Exception::USER_ALREADY_EXISTS);
|
||||
$failureRedirect(Exception::USER_ALREADY_EXISTS);
|
||||
}
|
||||
|
||||
$userWithMatchingEmail = $dbForProject->find('users', [
|
||||
|
|
@ -1453,7 +1453,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
|||
Query::notEqual('$id', $userId),
|
||||
]);
|
||||
if (!empty($userWithMatchingEmail)) {
|
||||
throw new Exception(Exception::USER_ALREADY_EXISTS);
|
||||
$failureRedirect(Exception::USER_ALREADY_EXISTS);
|
||||
}
|
||||
|
||||
$sessionUpgrade = true;
|
||||
|
|
@ -1482,7 +1482,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
|||
|
||||
if ($user === false || $user->isEmpty()) { // No user logged in or with OAuth2 provider ID, create new one or connect with account with same email
|
||||
if (empty($email)) {
|
||||
throw new Exception(Exception::USER_UNAUTHORIZED, 'OAuth provider failed to return email.');
|
||||
$failureRedirect(Exception::USER_UNAUTHORIZED, 'OAuth provider failed to return email.');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1525,7 +1525,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
|||
Query::equal('providerEmail', [$email]),
|
||||
]);
|
||||
if (!$identityWithMatchingEmail->isEmpty()) {
|
||||
throw new Exception(Exception::GENERAL_BAD_REQUEST); /** Return a generic bad request to prevent exposing existing accounts */
|
||||
$failureRedirect(Exception::GENERAL_BAD_REQUEST); /** Return a generic bad request to prevent exposing existing accounts */
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
@ -1597,7 +1597,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
|||
Query::notEqual('userInternalId', $user->getInternalId()),
|
||||
]);
|
||||
if (!empty($identitiesWithMatchingEmail)) {
|
||||
throw new Exception(Exception::GENERAL_BAD_REQUEST); /** Return a generic bad request to prevent exposing existing accounts */
|
||||
$failureRedirect(Exception::GENERAL_BAD_REQUEST); /** Return a generic bad request to prevent exposing existing accounts */
|
||||
}
|
||||
|
||||
$dbForProject->createDocument('identities', new Document([
|
||||
|
|
|
|||
|
|
@ -186,8 +186,8 @@ App::post('/v1/functions')
|
|||
->param('specification', APP_FUNCTION_SPECIFICATION_DEFAULT, fn (array $plan) => new RuntimeSpecification(
|
||||
$plan,
|
||||
Config::getParam('runtime-specifications', []),
|
||||
App::getEnv('_APP_FUNCTIONS_CPUS', APP_FUNCTION_CPUS_DEFAULT),
|
||||
App::getEnv('_APP_FUNCTIONS_MEMORY', APP_FUNCTION_MEMORY_DEFAULT)
|
||||
System::getEnv('_APP_FUNCTIONS_CPUS', 0),
|
||||
System::getEnv('_APP_FUNCTIONS_MEMORY', 0)
|
||||
), 'Runtime specification for the function and builds.', true, ['plan'])
|
||||
->inject('request')
|
||||
->inject('response')
|
||||
|
|
@ -569,8 +569,12 @@ App::get('/v1/functions/specifications')
|
|||
$spec['enabled'] = in_array($spec['slug'], $plan['runtimeSpecifications']);
|
||||
}
|
||||
|
||||
$maxCpus = System::getEnv('_APP_FUNCTIONS_CPUS', 0);
|
||||
$maxMemory = System::getEnv('_APP_FUNCTIONS_MEMORY', 0);
|
||||
|
||||
// Only add specs that are within the limits set by environment variables
|
||||
if ($spec['cpus'] <= System::getEnv('_APP_FUNCTIONS_CPUS', 1) && $spec['memory'] <= System::getEnv('_APP_FUNCTIONS_MEMORY', 512)) {
|
||||
// Treat 0 as no limit
|
||||
if ((empty($maxCpus) || $spec['cpus'] <= $maxCpus) && (empty($maxMemory) || $spec['memory'] <= $maxMemory)) {
|
||||
$runtimeSpecs[] = $spec;
|
||||
}
|
||||
}
|
||||
|
|
@ -872,8 +876,8 @@ App::put('/v1/functions/:functionId')
|
|||
->param('specification', APP_FUNCTION_SPECIFICATION_DEFAULT, fn (array $plan) => new RuntimeSpecification(
|
||||
$plan,
|
||||
Config::getParam('runtime-specifications', []),
|
||||
App::getEnv('_APP_FUNCTIONS_CPUS', APP_FUNCTION_CPUS_DEFAULT),
|
||||
App::getEnv('_APP_FUNCTIONS_MEMORY', APP_FUNCTION_MEMORY_DEFAULT)
|
||||
System::getEnv('_APP_FUNCTIONS_CPUS', 0),
|
||||
System::getEnv('_APP_FUNCTIONS_MEMORY', 0)
|
||||
), 'Runtime specification for the function and builds.', true, ['plan'])
|
||||
->inject('request')
|
||||
->inject('response')
|
||||
|
|
@ -1296,8 +1300,7 @@ App::post('/v1/functions/:functionId/deployments')
|
|||
->inject('deviceForFunctions')
|
||||
->inject('deviceForLocal')
|
||||
->inject('queueForBuilds')
|
||||
->inject('plan')
|
||||
->action(function (string $functionId, ?string $entrypoint, ?string $commands, mixed $code, mixed $activate, Request $request, Response $response, Database $dbForProject, Event $queueForEvents, Document $project, Device $deviceForFunctions, Device $deviceForLocal, Build $queueForBuilds, array $plan) {
|
||||
->action(function (string $functionId, ?string $entrypoint, ?string $commands, mixed $code, mixed $activate, Request $request, Response $response, Database $dbForProject, Event $queueForEvents, Document $project, Device $deviceForFunctions, Device $deviceForLocal, Build $queueForBuilds) {
|
||||
|
||||
$activate = \strval($activate) === 'true' || \strval($activate) === '1';
|
||||
|
||||
|
|
@ -1330,14 +1333,8 @@ App::post('/v1/functions/:functionId/deployments')
|
|||
throw new Exception(Exception::STORAGE_FILE_EMPTY, 'No file sent');
|
||||
}
|
||||
|
||||
$functionSizeLimit = (int) System::getEnv('_APP_FUNCTIONS_SIZE_LIMIT', '30000000');
|
||||
|
||||
if (isset($plan['functionSize'])) {
|
||||
$functionSizeLimit = $plan['functionSize'] * 1000 * 1000;
|
||||
}
|
||||
|
||||
$fileExt = new FileExt([FileExt::TYPE_GZIP]);
|
||||
$fileSizeValidator = new FileSize($functionSizeLimit);
|
||||
$fileSizeValidator = new FileSize(System::getEnv('_APP_FUNCTIONS_SIZE_LIMIT', '30000000'));
|
||||
$upload = new Upload();
|
||||
|
||||
// Make sure we handle a single file and multiple files the same way
|
||||
|
|
|
|||
172
app/http.php
172
app/http.php
|
|
@ -43,29 +43,6 @@ $http = new Server(
|
|||
$payloadSize = 12 * (1024 * 1024); // 12MB - adding slight buffer for headers and other data that might be sent with the payload - update later with valid testing
|
||||
$totalWorkers = intval(System::getEnv('_APP_CPU_NUM', swoole_cpu_num())) * intval(System::getEnv('_APP_WORKER_PER_CORE', 6));
|
||||
|
||||
$http
|
||||
->set([
|
||||
'worker_num' => $totalWorkers,
|
||||
'dispatch_func' => 'dispatch',
|
||||
'open_http2_protocol' => true,
|
||||
'http_compression' => false,
|
||||
'package_max_length' => $payloadSize,
|
||||
'buffer_output_size' => $payloadSize,
|
||||
'task_worker_num' => 1, // required for the task to fetch domains background
|
||||
]);
|
||||
|
||||
$http->on(Constant::EVENT_WORKER_START, function ($server, $workerId) {
|
||||
Console::success('Worker ' . ++$workerId . ' started successfully');
|
||||
});
|
||||
|
||||
$http->on(Constant::EVENT_BEFORE_RELOAD, function ($server, $workerId) {
|
||||
Console::success('Starting reload...');
|
||||
});
|
||||
|
||||
$http->on(Constant::EVENT_AFTER_RELOAD, function ($server, $workerId) {
|
||||
Console::success('Reload completed...');
|
||||
});
|
||||
|
||||
/**
|
||||
* Assigns HTTP requests to worker threads by analyzing its payload/content.
|
||||
*
|
||||
|
|
@ -83,76 +60,105 @@ $http->on(Constant::EVENT_AFTER_RELOAD, function ($server, $workerId) {
|
|||
*/
|
||||
function dispatch(Server $server, int $fd, int $type, $data = null): int
|
||||
{
|
||||
global $totalWorkers, $domains;
|
||||
$resolveWorkerId = function (Server $server, $data = null) {
|
||||
global $totalWorkers, $domains;
|
||||
|
||||
// If data is not set we can send request to any worker
|
||||
// first we try to pick idle worker, if not we randomly pick a worker
|
||||
if ($data === null) {
|
||||
// If data is not set we can send request to any worker
|
||||
// first we try to pick idle worker, if not we randomly pick a worker
|
||||
if ($data === null) {
|
||||
for ($i = 0; $i < $totalWorkers; $i++) {
|
||||
if ($server->getWorkerStatus($i) === SWOOLE_WORKER_IDLE) {
|
||||
return $i;
|
||||
}
|
||||
}
|
||||
return rand(0, $totalWorkers - 1);
|
||||
}
|
||||
|
||||
$riskyWorkersPercent = intval(System::getEnv('_APP_RISKY_WORKERS_PERCENT', 80)) / 100; // Decimal form 0 to 1
|
||||
|
||||
// Each worker has numeric ID, starting from 0 and incrementing
|
||||
// From 0 to riskyWorkers, we consider safe workers
|
||||
// From riskyWorkers to totalWorkers, we consider risky workers
|
||||
$riskyWorkers = (int)floor($totalWorkers * $riskyWorkersPercent); // Absolute amount of risky workers
|
||||
|
||||
$domain = '';
|
||||
// max up to 3 as first line has request details and second line has host
|
||||
$lines = explode("\n", $data, 3);
|
||||
$request = $lines[0];
|
||||
if (count($lines) > 1) {
|
||||
$domain = trim(explode('Host: ', $lines[1])[1]);
|
||||
}
|
||||
|
||||
// Sync executions are considered risky
|
||||
$risky = false;
|
||||
if (str_starts_with($request, 'POST') && str_contains($request, '/executions')) {
|
||||
$risky = true;
|
||||
} elseif (str_ends_with($domain, System::getEnv('_APP_DOMAIN_FUNCTIONS'))) {
|
||||
$risky = true;
|
||||
} elseif ($domains->get(md5($domain), 'value') === 1) {
|
||||
// executions request coming from custom domain
|
||||
$risky = true;
|
||||
}
|
||||
|
||||
if ($risky) {
|
||||
// If risky request, only consider risky workers
|
||||
for ($j = $riskyWorkers; $j < $totalWorkers; $j++) {
|
||||
/** Reference https://openswoole.com/docs/modules/swoole-server-getWorkerStatus#description */
|
||||
if ($server->getWorkerStatus($j) === SWOOLE_WORKER_IDLE) {
|
||||
// If idle worker found, give to him
|
||||
return $j;
|
||||
}
|
||||
}
|
||||
|
||||
// If no idle workers, give to random risky worker
|
||||
$worker = rand($riskyWorkers, $totalWorkers - 1);
|
||||
Console::warning("swoole_dispatch: Risky branch: did not find a idle worker, picking random worker {$worker}");
|
||||
return $worker;
|
||||
}
|
||||
|
||||
// If safe request, give to any idle worker
|
||||
// Its fine to pick risky worker here, because it's idle. Idle is never actually risky
|
||||
for ($i = 0; $i < $totalWorkers; $i++) {
|
||||
if ($server->getWorkerStatus($i) === SWOOLE_WORKER_IDLE) {
|
||||
return $i;
|
||||
}
|
||||
}
|
||||
return rand(0, $totalWorkers - 1);
|
||||
}
|
||||
|
||||
$riskyWorkersPercent = intval(System::getEnv('_APP_RISKY_WORKERS_PERCENT', 80)) / 100; // Decimal form 0 to 1
|
||||
|
||||
// Each worker has numeric ID, starting from 0 and incrementing
|
||||
// From 0 to riskyWorkers, we consider safe workers
|
||||
// From riskyWorkers to totalWorkers, we consider risky workers
|
||||
$riskyWorkers = (int) floor($totalWorkers * $riskyWorkersPercent); // Absolute amount of risky workers
|
||||
|
||||
$domain = '';
|
||||
// max up to 3 as first line has request details and second line has host
|
||||
$lines = explode("\n", $data, 3);
|
||||
$request = $lines[0];
|
||||
if (count($lines) > 1) {
|
||||
$domain = trim(explode('Host: ', $lines[1])[1]);
|
||||
}
|
||||
|
||||
// Sync executions are considered risky
|
||||
$risky = false;
|
||||
if (str_starts_with($request, 'POST') && str_contains($request, '/executions')) {
|
||||
$risky = true;
|
||||
} elseif (str_ends_with($domain, System::getEnv('_APP_DOMAIN_FUNCTIONS'))) {
|
||||
$risky = true;
|
||||
} elseif ($domains->get(md5($domain), 'value') === 1) {
|
||||
// executions request coming from custom domain
|
||||
$risky = true;
|
||||
}
|
||||
|
||||
if ($risky) {
|
||||
// If risky request, only consider risky workers
|
||||
for ($j = $riskyWorkers; $j < $totalWorkers; $j++) {
|
||||
/** Reference https://openswoole.com/docs/modules/swoole-server-getWorkerStatus#description */
|
||||
if ($server->getWorkerStatus($j) === SWOOLE_WORKER_IDLE) {
|
||||
// If idle worker found, give to him
|
||||
return $j;
|
||||
}
|
||||
}
|
||||
|
||||
// If no idle workers, give to random risky worker
|
||||
$worker = rand($riskyWorkers, $totalWorkers - 1);
|
||||
Console::warning("swoole_dispatch: Risky branch: did not find a idle worker, picking random worker {$worker}");
|
||||
// If no idle worker found, give to random safe worker
|
||||
// We avoid risky workers here, as it could be in work - not idle. Thats exactly when they are risky.
|
||||
$worker = rand(0, $riskyWorkers - 1);
|
||||
Console::warning("swoole_dispatch: Non-risky branch: did not find a idle worker, picking random worker {$worker}");
|
||||
return $worker;
|
||||
}
|
||||
|
||||
// If safe request, give to any idle worker
|
||||
// Its fine to pick risky worker here, because it's idle. Idle is never actually risky
|
||||
for ($i = 0; $i < $totalWorkers; $i++) {
|
||||
if ($server->getWorkerStatus($i) === SWOOLE_WORKER_IDLE) {
|
||||
return $i;
|
||||
}
|
||||
}
|
||||
|
||||
// If no idle worker found, give to random safe worker
|
||||
// We avoid risky workers here, as it could be in work - not idle. Thats exactly when they are risky.
|
||||
$worker = rand(0, $riskyWorkers - 1);
|
||||
Console::warning("swoole_dispatch: Non-risky branch: did not find a idle worker, picking random worker {$worker}");
|
||||
return $worker;
|
||||
};
|
||||
$workerId = $resolveWorkerId($server, $data);
|
||||
$server->bind($fd, $workerId);
|
||||
return $workerId;
|
||||
}
|
||||
|
||||
|
||||
$http
|
||||
->set([
|
||||
Constant::OPTION_WORKER_NUM => $totalWorkers,
|
||||
Constant::OPTION_DISPATCH_FUNC => dispatch(...),
|
||||
Constant::OPTION_DISPATCH_MODE => SWOOLE_DISPATCH_UIDMOD,
|
||||
Constant::OPTION_HTTP_COMPRESSION => false,
|
||||
Constant::OPTION_PACKAGE_MAX_LENGTH => $payloadSize,
|
||||
Constant::OPTION_OUTPUT_BUFFER_SIZE => $payloadSize,
|
||||
Constant::OPTION_TASK_WORKER_NUM => 1, // required for the task to fetch domains background
|
||||
]);
|
||||
|
||||
$http->on(Constant::EVENT_WORKER_START, function ($server, $workerId) {
|
||||
Console::success('Worker ' . ++$workerId . ' started successfully');
|
||||
});
|
||||
|
||||
$http->on(Constant::EVENT_BEFORE_RELOAD, function ($server, $workerId) {
|
||||
Console::success('Starting reload...');
|
||||
});
|
||||
|
||||
$http->on(Constant::EVENT_AFTER_RELOAD, function ($server, $workerId) {
|
||||
Console::success('Reload completed...');
|
||||
});
|
||||
|
||||
include __DIR__ . '/controllers/general.php';
|
||||
|
||||
function createDatabase(App $app, string $resourceKey, string $dbName, array $collections, mixed $pools, callable $extraSetup = null): void
|
||||
|
|
|
|||
|
|
@ -266,10 +266,6 @@ Server::setResource('timelimit', function (\Redis $redis) {
|
|||
|
||||
Server::setResource('log', fn () => new Log());
|
||||
|
||||
Server::setResource('plan', function (array $plan = []) {
|
||||
return [];
|
||||
});
|
||||
|
||||
Server::setResource('publisher', function (Group $pools) {
|
||||
return $pools->get('publisher')->pop()->getResource();
|
||||
}, ['pools']);
|
||||
|
|
|
|||
24
composer.lock
generated
24
composer.lock
generated
|
|
@ -3660,16 +3660,16 @@
|
|||
},
|
||||
{
|
||||
"name": "utopia-php/fetch",
|
||||
"version": "0.4.1",
|
||||
"version": "0.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/utopia-php/fetch.git",
|
||||
"reference": "65095dac14037db0c822fb5e209e5bd3187a0303"
|
||||
"reference": "83986d1be75a2fae4e684107fe70dd78a8e19b77"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/utopia-php/fetch/zipball/65095dac14037db0c822fb5e209e5bd3187a0303",
|
||||
"reference": "65095dac14037db0c822fb5e209e5bd3187a0303",
|
||||
"url": "https://api.github.com/repos/utopia-php/fetch/zipball/83986d1be75a2fae4e684107fe70dd78a8e19b77",
|
||||
"reference": "83986d1be75a2fae4e684107fe70dd78a8e19b77",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -3693,9 +3693,9 @@
|
|||
"description": "A simple library that provides an interface for making HTTP Requests.",
|
||||
"support": {
|
||||
"issues": "https://github.com/utopia-php/fetch/issues",
|
||||
"source": "https://github.com/utopia-php/fetch/tree/0.4.1"
|
||||
"source": "https://github.com/utopia-php/fetch/tree/0.4.2"
|
||||
},
|
||||
"time": "2025-04-14T07:34:27+00:00"
|
||||
"time": "2025-04-25T13:48:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "utopia-php/framework",
|
||||
|
|
@ -4767,16 +4767,16 @@
|
|||
"packages-dev": [
|
||||
{
|
||||
"name": "appwrite/sdk-generator",
|
||||
"version": "0.40.12",
|
||||
"version": "0.40.15",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/appwrite/sdk-generator.git",
|
||||
"reference": "182ec17848f81b78c336379bac94ff92b7a73365"
|
||||
"reference": "65c708b931b29b3e01c5cc7504a734ce2cc3dc95"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/182ec17848f81b78c336379bac94ff92b7a73365",
|
||||
"reference": "182ec17848f81b78c336379bac94ff92b7a73365",
|
||||
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/65c708b931b29b3e01c5cc7504a734ce2cc3dc95",
|
||||
"reference": "65c708b931b29b3e01c5cc7504a734ce2cc3dc95",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -4812,9 +4812,9 @@
|
|||
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
|
||||
"support": {
|
||||
"issues": "https://github.com/appwrite/sdk-generator/issues",
|
||||
"source": "https://github.com/appwrite/sdk-generator/tree/0.40.12"
|
||||
"source": "https://github.com/appwrite/sdk-generator/tree/0.40.15"
|
||||
},
|
||||
"time": "2025-04-02T23:36:11+00:00"
|
||||
"time": "2025-04-25T08:50:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/annotations",
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.services.Account;
|
|||
import io.appwrite.enums.AuthenticatorType;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.services.Account;
|
|||
import io.appwrite.enums.AuthenticationFactor;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.services.Account;
|
|||
import io.appwrite.enums.OAuthProvider;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.services.Account;
|
|||
import io.appwrite.enums.OAuthProvider;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.services.Account;
|
|||
import io.appwrite.enums.AuthenticatorType;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.services.Account;
|
|||
import io.appwrite.enums.AuthenticatorType;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Account;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Account account = new Account(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.services.Avatars;
|
|||
import io.appwrite.enums.Browser;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Avatars avatars = new Avatars(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.services.Avatars;
|
|||
import io.appwrite.enums.CreditCard;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Avatars avatars = new Avatars(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Avatars;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Avatars avatars = new Avatars(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.services.Avatars;
|
|||
import io.appwrite.enums.Flag;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Avatars avatars = new Avatars(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Avatars;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Avatars avatars = new Avatars(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Avatars;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Avatars avatars = new Avatars(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Avatars;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Avatars avatars = new Avatars(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Databases;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Databases databases = new Databases(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Databases;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Databases databases = new Databases(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Databases;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Databases databases = new Databases(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Databases;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Databases databases = new Databases(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Databases;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Databases databases = new Databases(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Functions;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Functions functions = new Functions(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Functions;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Functions functions = new Functions(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Functions;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Functions functions = new Functions(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Graphql;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Graphql graphql = new Graphql(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Graphql;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Graphql graphql = new Graphql(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Locale;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Locale locale = new Locale(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Locale;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Locale locale = new Locale(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Locale;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Locale locale = new Locale(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Locale;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Locale locale = new Locale(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Locale;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Locale locale = new Locale(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Locale;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Locale locale = new Locale(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Locale;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Locale locale = new Locale(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Locale;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Locale locale = new Locale(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Messaging;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Messaging messaging = new Messaging(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Messaging;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Messaging messaging = new Messaging(client);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import io.appwrite.models.InputFile;
|
|||
import io.appwrite.services.Storage;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Storage storage = new Storage(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Storage;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Storage storage = new Storage(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Storage;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Storage storage = new Storage(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Storage;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Storage storage = new Storage(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Storage;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Storage storage = new Storage(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Storage;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Storage storage = new Storage(client);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import io.appwrite.coroutines.CoroutineCallback;
|
|||
import io.appwrite.services.Storage;
|
||||
|
||||
Client client = new Client(context)
|
||||
.setEndpoint("https://cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint
|
||||
.setProject("<YOUR_PROJECT_ID>"); // Your project ID
|
||||
|
||||
Storage storage = new Storage(client);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue