mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Merge branch '0.16.x' of https://github.com/appwrite/appwrite into fix-delete-collection-redirect
This commit is contained in:
+1
-1
@@ -503,7 +503,7 @@ App::post('/v1/execution')
|
||||
|
||||
$ch = \curl_init();
|
||||
$body = \json_encode([
|
||||
'env' => $vars,
|
||||
'variables' => $vars,
|
||||
'payload' => $data,
|
||||
'timeout' => $timeout
|
||||
]);
|
||||
|
||||
@@ -46,8 +46,20 @@ $escapedPermissions = \array_map(function ($perm) {
|
||||
<?php endif; ?>
|
||||
:value="rawPermissions"/>
|
||||
|
||||
<table class="u-table-layout-normal" data-ls-attrs="x-init=load({{<?php if (!empty($data)) echo $data . '.$permissions' ?>}})">
|
||||
<thead>
|
||||
<datalist id="types">
|
||||
<option value="user:">
|
||||
<option value="team:">
|
||||
<option value="member:">
|
||||
<option value="users">
|
||||
<option value="guests">
|
||||
<option value="any">
|
||||
</datalist>
|
||||
|
||||
<table
|
||||
class="u-table-layout-normal"
|
||||
data-ls-attrs="x-init=load({{<?php if (!empty($data)) echo $data . '.$permissions' ?>}})">
|
||||
|
||||
<thead x-show="permissions.length > 0">
|
||||
<tr>
|
||||
<th>Role</th>
|
||||
<?php foreach ($permissions as $permission): ?>
|
||||
@@ -60,7 +72,16 @@ $escapedPermissions = \array_map(function ($perm) {
|
||||
<template x-for="(permission, index) in permissions">
|
||||
<tr>
|
||||
<td>
|
||||
<p x-text="permission.role"></p>
|
||||
<input
|
||||
required
|
||||
autocomplete="off"
|
||||
:id="'<?php echo $form; ?>Input' + index"
|
||||
name="<?php echo $form; ?>"
|
||||
form="<?php echo $form ?>"
|
||||
list="types"
|
||||
type="text"
|
||||
x-model="permission.role"
|
||||
@keyup="updatePermission(index)"/>
|
||||
</td>
|
||||
<?php foreach ($escapedPermissions as $permission): ?>
|
||||
<td>
|
||||
@@ -78,38 +99,11 @@ $escapedPermissions = \array_map(function ($perm) {
|
||||
</td>
|
||||
</tr>
|
||||
</template>
|
||||
<tr x-data="permissionsRow"
|
||||
@addrow<?php echo \strtolower($form); ?>.window="addPermission('<?php echo $form; ?>', role, { <?php echo \implode(',', $escapedPermissions) ?> })">
|
||||
<td>
|
||||
<datalist id="types">
|
||||
<option value="user:">
|
||||
<option value="team:">
|
||||
<option value="users">
|
||||
<option value="guests">
|
||||
<option value="any">
|
||||
</datalist>
|
||||
|
||||
<input
|
||||
required
|
||||
id="<?php echo $form; ?>Input"
|
||||
name="<?php echo $form; ?>"
|
||||
form="<?php echo $form ?>"
|
||||
list="types"
|
||||
type="text"
|
||||
x-model="role" />
|
||||
</td>
|
||||
<?php foreach ($escapedPermissions as $permission): ?>
|
||||
<td>
|
||||
<input type="checkbox" name="<?php echo $permission ?>" x-model="<?php echo $permission; ?>"/>
|
||||
</td>
|
||||
<?php endforeach; ?>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="<?php \count($permissions) + 2 ?>">
|
||||
<button type="button" class="margin-top-small reverse" @click="$dispatch('addrow<?php echo \strtolower($form); ?>')">Add</button>
|
||||
<button type="button" class="margin-top-small reverse" @click="addPermission('<?php echo $form ?>')">Add Role</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
|
||||
@@ -416,7 +416,7 @@ sort($patterns);
|
||||
<span data-ls-bind="{{execution.trigger}}"></span>
|
||||
</td>
|
||||
<td data-title="Time: ">
|
||||
<span data-ls-if="{{execution.status}} === 'completed' || {{execution.status}} === 'failed'" data-ls-bind="{{execution.time|seconds2hum}}"></span>
|
||||
<span data-ls-if="{{execution.status}} === 'completed' || {{execution.status}} === 'failed'" data-ls-bind="{{execution.duration|seconds2hum}}"></span>
|
||||
<span data-ls-if="{{execution.status}} === 'waiting' || {{execution.status}} === 'processing'">-</span>
|
||||
</td>
|
||||
<td data-title="">
|
||||
|
||||
Vendored
+5
-6
@@ -4015,14 +4015,13 @@ if(this.action){event+=`.${this.action}`;}
|
||||
if(this.attribute){event+=`.${this.attribute}`;}
|
||||
this.events.add(event);this.reset();},removeEvent(value){this.events.delete(value);}}));});})(window);(function(window){document.addEventListener('alpine:init',()=>{Alpine.data('permissionsMatrix',()=>({permissions:[],rawPermissions:[],load(permissions){if(permissions===undefined){return;}
|
||||
this.rawPermissions=permissions;permissions.map(p=>{let{type,role}=this.parsePermission(p);type=this.parseInputPermission(type);let index=-1;let existing=this.permissions.find((p,idx)=>{if(p.role===role){index=idx;return true;}})
|
||||
if(existing===undefined){this.permissions.push({role,[type]:true,});}
|
||||
if(index!==-1){existing[type]=true;this.permissions[index]=existing;}});},addPermission(formId,role,permissions){if(!this.validate(formId,role,permissions)){return;}
|
||||
Object.entries(permissions).forEach(entry=>{let[type,enabled]=entry;type=this.parseOutputPermission(type);if(enabled){this.rawPermissions.push(this.buildPermission(type,role));}});this.permissions.push({role,...permissions,});this.reset();},updatePermission(index){setTimeout(()=>{const permission=this.permissions[index];Object.keys(permission).forEach(key=>{if(key==='role'){return;}
|
||||
if(existing===undefined){let newPermission={role,create:false,read:false,update:false,xdelete:false,};newPermission[type]=true;this.permissions.push(newPermission);}
|
||||
if(index!==-1){existing[type]=true;this.permissions[index]=existing;}});},addPermission(formId){if(this.permissions.length>0&&!this.validate(formId,this.permissions.length-1)){return;}
|
||||
this.permissions.push({role:'',create:false,read:false,update:false,xdelete:false,});},updatePermission(index){setTimeout(()=>{const permission=this.permissions[index];Object.keys(permission).forEach(key=>{if(key==='role'){return;}
|
||||
const parsedKey=this.parseOutputPermission(key);const permissionString=this.buildPermission(parsedKey,permission.role);if(permission[key]){if(!this.rawPermissions.includes(permissionString)){this.rawPermissions.push(permissionString);}}else{this.rawPermissions=this.rawPermissions.filter(p=>{return!p.includes(permissionString);});}});});},removePermission(index){let row=this.permissions.splice(index,1);if(row.length===1){this.rawPermissions=this.rawPermissions.filter(p=>!p.includes(row[0].role));}},parsePermission(permission){let parts=permission.split('(');let type=parts[0];let role=parts[1].replace(')','').replace(' ','').replaceAll('"','');return{type,role};},buildPermission(type,role){return`${type}("${role}")`},parseInputPermission(key){if(key==='delete'){return'xdelete';}
|
||||
return key;},parseOutputPermission(key){if(key==='xdelete'){return'delete';}
|
||||
return key;},validate(formId,role,permissions){const form=document.getElementById(formId);const input=document.getElementById(`${formId}Input`);input.setCustomValidity('');if(!Object.values(permissions).some(p=>p)){input.setCustomValidity('No permissions selected');}
|
||||
if(this.permissions.some(p=>p.role===role)){input.setCustomValidity('Role entry already exists');}
|
||||
return form.reportValidity();}}));Alpine.data('permissionsRow',()=>({role:'',read:false,create:false,update:false,xdelete:false,reset(){this.role='';this.read=this.create=this.update=this.xdelete=false;}}));});})(window);(function(window){"use strict";window.ls.view.add({selector:"data-service",controller:function(element,view,container,form,alerts,expression,window){let action=element.dataset["service"];let service=element.dataset["name"]||null;let event=expression.parse(element.dataset["event"]);let confirm=element.dataset["confirm"]||"";let loading=element.dataset["loading"]||"";let loaderId=null;let scope=element.dataset["scope"]||"sdk";let success=element.dataset["success"]||"";let failure=element.dataset["failure"]||"";let running=false;let callbacks={hide:function(){return function(){return element.style.opacity='0';};},reset:function(){return function(){if("FORM"===element.tagName){return element.reset();}
|
||||
return key;},validate(formId,index){const form=document.getElementById(formId);const input=document.getElementById(`${formId}Input${index}`);const permission=this.permissions[index];input.setCustomValidity('');if(permission.role===''){input.setCustomValidity('Role is required');}else if(!Object.entries(permission).some(([k,v])=>!k.includes('role')&&v)){input.setCustomValidity('No permissions selected');}else if(this.permissions.some(p=>p.role===permission.role&&p!==permission)){input.setCustomValidity('Role entry already exists');}
|
||||
return form.reportValidity();},prevent(event){event.preventDefault();event.stopPropagation();}}));});})(window);(function(window){"use strict";window.ls.view.add({selector:"data-service",controller:function(element,view,container,form,alerts,expression,window){let action=element.dataset["service"];let service=element.dataset["name"]||null;let event=expression.parse(element.dataset["event"]);let confirm=element.dataset["confirm"]||"";let loading=element.dataset["loading"]||"";let loaderId=null;let scope=element.dataset["scope"]||"sdk";let success=element.dataset["success"]||"";let failure=element.dataset["failure"]||"";let running=false;let callbacks={hide:function(){return function(){return element.style.opacity='0';};},reset:function(){return function(){if("FORM"===element.tagName){return element.reset();}
|
||||
throw new Error("This callback is only valid for forms");};},alert:function(text,classname){return function(alerts){alerts.add({text:text,class:classname||"success"},6000);};},redirect:function(url){return function(router){if(url==="/console"){window.location=url;return;}
|
||||
router.change(url||"/");};},reload:function(){return function(router){router.reload();};},state:function(keys){let updateQueryString=function(key,value,url){var re=new RegExp("([?&])"+key+"=.*?(&|#|$)(.*)","gi"),hash;if(re.test(url)){if(typeof value!=="undefined"&&value!==null){return url.replace(re,"$1"+key+"="+value+"$2$3");}else{hash=url.split("#");url=hash[0].replace(re,"$1$3").replace(/(&|\?)$/,"");if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];}
|
||||
return url;}}else{if(typeof value!=="undefined"&&value!==null){var separator=url.indexOf("?")!==-1?"&":"?";hash=url.split("#");url=hash[0]+separator+key+"="+value;if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];}
|
||||
|
||||
Vendored
+5
-6
@@ -603,14 +603,13 @@ if(this.action){event+=`.${this.action}`;}
|
||||
if(this.attribute){event+=`.${this.attribute}`;}
|
||||
this.events.add(event);this.reset();},removeEvent(value){this.events.delete(value);}}));});})(window);(function(window){document.addEventListener('alpine:init',()=>{Alpine.data('permissionsMatrix',()=>({permissions:[],rawPermissions:[],load(permissions){if(permissions===undefined){return;}
|
||||
this.rawPermissions=permissions;permissions.map(p=>{let{type,role}=this.parsePermission(p);type=this.parseInputPermission(type);let index=-1;let existing=this.permissions.find((p,idx)=>{if(p.role===role){index=idx;return true;}})
|
||||
if(existing===undefined){this.permissions.push({role,[type]:true,});}
|
||||
if(index!==-1){existing[type]=true;this.permissions[index]=existing;}});},addPermission(formId,role,permissions){if(!this.validate(formId,role,permissions)){return;}
|
||||
Object.entries(permissions).forEach(entry=>{let[type,enabled]=entry;type=this.parseOutputPermission(type);if(enabled){this.rawPermissions.push(this.buildPermission(type,role));}});this.permissions.push({role,...permissions,});this.reset();},updatePermission(index){setTimeout(()=>{const permission=this.permissions[index];Object.keys(permission).forEach(key=>{if(key==='role'){return;}
|
||||
if(existing===undefined){let newPermission={role,create:false,read:false,update:false,xdelete:false,};newPermission[type]=true;this.permissions.push(newPermission);}
|
||||
if(index!==-1){existing[type]=true;this.permissions[index]=existing;}});},addPermission(formId){if(this.permissions.length>0&&!this.validate(formId,this.permissions.length-1)){return;}
|
||||
this.permissions.push({role:'',create:false,read:false,update:false,xdelete:false,});},updatePermission(index){setTimeout(()=>{const permission=this.permissions[index];Object.keys(permission).forEach(key=>{if(key==='role'){return;}
|
||||
const parsedKey=this.parseOutputPermission(key);const permissionString=this.buildPermission(parsedKey,permission.role);if(permission[key]){if(!this.rawPermissions.includes(permissionString)){this.rawPermissions.push(permissionString);}}else{this.rawPermissions=this.rawPermissions.filter(p=>{return!p.includes(permissionString);});}});});},removePermission(index){let row=this.permissions.splice(index,1);if(row.length===1){this.rawPermissions=this.rawPermissions.filter(p=>!p.includes(row[0].role));}},parsePermission(permission){let parts=permission.split('(');let type=parts[0];let role=parts[1].replace(')','').replace(' ','').replaceAll('"','');return{type,role};},buildPermission(type,role){return`${type}("${role}")`},parseInputPermission(key){if(key==='delete'){return'xdelete';}
|
||||
return key;},parseOutputPermission(key){if(key==='xdelete'){return'delete';}
|
||||
return key;},validate(formId,role,permissions){const form=document.getElementById(formId);const input=document.getElementById(`${formId}Input`);input.setCustomValidity('');if(!Object.values(permissions).some(p=>p)){input.setCustomValidity('No permissions selected');}
|
||||
if(this.permissions.some(p=>p.role===role)){input.setCustomValidity('Role entry already exists');}
|
||||
return form.reportValidity();}}));Alpine.data('permissionsRow',()=>({role:'',read:false,create:false,update:false,xdelete:false,reset(){this.role='';this.read=this.create=this.update=this.xdelete=false;}}));});})(window);(function(window){"use strict";window.ls.view.add({selector:"data-service",controller:function(element,view,container,form,alerts,expression,window){let action=element.dataset["service"];let service=element.dataset["name"]||null;let event=expression.parse(element.dataset["event"]);let confirm=element.dataset["confirm"]||"";let loading=element.dataset["loading"]||"";let loaderId=null;let scope=element.dataset["scope"]||"sdk";let success=element.dataset["success"]||"";let failure=element.dataset["failure"]||"";let running=false;let callbacks={hide:function(){return function(){return element.style.opacity='0';};},reset:function(){return function(){if("FORM"===element.tagName){return element.reset();}
|
||||
return key;},validate(formId,index){const form=document.getElementById(formId);const input=document.getElementById(`${formId}Input${index}`);const permission=this.permissions[index];input.setCustomValidity('');if(permission.role===''){input.setCustomValidity('Role is required');}else if(!Object.entries(permission).some(([k,v])=>!k.includes('role')&&v)){input.setCustomValidity('No permissions selected');}else if(this.permissions.some(p=>p.role===permission.role&&p!==permission)){input.setCustomValidity('Role entry already exists');}
|
||||
return form.reportValidity();},prevent(event){event.preventDefault();event.stopPropagation();}}));});})(window);(function(window){"use strict";window.ls.view.add({selector:"data-service",controller:function(element,view,container,form,alerts,expression,window){let action=element.dataset["service"];let service=element.dataset["name"]||null;let event=expression.parse(element.dataset["event"]);let confirm=element.dataset["confirm"]||"";let loading=element.dataset["loading"]||"";let loaderId=null;let scope=element.dataset["scope"]||"sdk";let success=element.dataset["success"]||"";let failure=element.dataset["failure"]||"";let running=false;let callbacks={hide:function(){return function(){return element.style.opacity='0';};},reset:function(){return function(){if("FORM"===element.tagName){return element.reset();}
|
||||
throw new Error("This callback is only valid for forms");};},alert:function(text,classname){return function(alerts){alerts.add({text:text,class:classname||"success"},6000);};},redirect:function(url){return function(router){if(url==="/console"){window.location=url;return;}
|
||||
router.change(url||"/");};},reload:function(){return function(router){router.reload();};},state:function(keys){let updateQueryString=function(key,value,url){var re=new RegExp("([?&])"+key+"=.*?(&|#|$)(.*)","gi"),hash;if(re.test(url)){if(typeof value!=="undefined"&&value!==null){return url.replace(re,"$1"+key+"="+value+"$2$3");}else{hash=url.split("#");url=hash[0].replace(re,"$1$3").replace(/(&|\?)$/,"");if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];}
|
||||
return url;}}else{if(typeof value!=="undefined"&&value!==null){var separator=url.indexOf("?")!==-1?"&":"?";hash=url.split("#");url=hash[0]+separator+key+"="+value;if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];}
|
||||
|
||||
@@ -22,10 +22,15 @@
|
||||
}
|
||||
})
|
||||
if (existing === undefined) {
|
||||
this.permissions.push({
|
||||
let newPermission = {
|
||||
role,
|
||||
[type]: true,
|
||||
});
|
||||
create: false,
|
||||
read: false,
|
||||
update: false,
|
||||
xdelete: false,
|
||||
};
|
||||
newPermission[type] = true;
|
||||
this.permissions.push(newPermission);
|
||||
}
|
||||
if (index !== -1) {
|
||||
existing[type] = true;
|
||||
@@ -33,22 +38,18 @@
|
||||
}
|
||||
});
|
||||
},
|
||||
addPermission(formId, role, permissions) {
|
||||
if (!this.validate(formId, role, permissions)) {
|
||||
addPermission(formId) {
|
||||
if (this.permissions.length > 0
|
||||
&& !this.validate(formId, this.permissions.length - 1)) {
|
||||
return;
|
||||
}
|
||||
Object.entries(permissions).forEach(entry => {
|
||||
let [type, enabled] = entry;
|
||||
type = this.parseOutputPermission(type);
|
||||
if (enabled) {
|
||||
this.rawPermissions.push(this.buildPermission(type, role));
|
||||
}
|
||||
});
|
||||
this.permissions.push({
|
||||
role,
|
||||
...permissions,
|
||||
role: '',
|
||||
create: false,
|
||||
read: false,
|
||||
update: false,
|
||||
xdelete: false,
|
||||
});
|
||||
this.reset();
|
||||
},
|
||||
updatePermission(index) {
|
||||
// Because the x-model does not update before the click event,
|
||||
@@ -106,31 +107,26 @@
|
||||
}
|
||||
return key;
|
||||
},
|
||||
validate(formId, role, permissions) {
|
||||
validate(formId, index) {
|
||||
const form = document.getElementById(formId);
|
||||
const input = document.getElementById(`${formId}Input`);
|
||||
const input = document.getElementById(`${formId}Input${index}`);
|
||||
const permission = this.permissions[index];
|
||||
|
||||
input.setCustomValidity('');
|
||||
|
||||
if (!Object.values(permissions).some(p => p)) {
|
||||
if (permission.role === '') {
|
||||
input.setCustomValidity('Role is required');
|
||||
} else if (!Object.entries(permission).some(([k, v]) => !k.includes('role') && v)) {
|
||||
input.setCustomValidity('No permissions selected');
|
||||
}
|
||||
if (this.permissions.some(p => p.role === role)) {
|
||||
} else if (this.permissions.some(p => p.role === permission.role && p !== permission)) {
|
||||
input.setCustomValidity('Role entry already exists');
|
||||
}
|
||||
|
||||
|
||||
return form.reportValidity();
|
||||
}
|
||||
}));
|
||||
Alpine.data('permissionsRow', () => ({
|
||||
role: '',
|
||||
read: false,
|
||||
create: false,
|
||||
update: false,
|
||||
xdelete: false,
|
||||
reset() {
|
||||
this.role = '';
|
||||
this.read = this.create = this.update = this.xdelete = false;
|
||||
},
|
||||
prevent(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}
|
||||
}));
|
||||
});
|
||||
|
||||
@@ -26,8 +26,7 @@ class UsageTest extends Scope
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
#[Retry(count: 1)]
|
||||
public function testUsersStats(): array
|
||||
public function testPrepareUsersStats(): array
|
||||
{
|
||||
$project = $this->getProject(true);
|
||||
$projectId = $project['$id'];
|
||||
@@ -63,8 +62,27 @@ class UsageTest extends Scope
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'projectId' => $projectId,
|
||||
'headers' => $headers,
|
||||
'usersCount' => $usersCount,
|
||||
'requestsCount' => $requestsCount
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testPrepareUsersStats
|
||||
*/
|
||||
#[Retry(count: 1)]
|
||||
public function testUsersStats(array $data): array
|
||||
{
|
||||
sleep(35);
|
||||
|
||||
$projectId = $data['projectId'];
|
||||
$headers = $data['headers'];
|
||||
$usersCount = $data['usersCount'];
|
||||
$requestsCount = $data['requestsCount'];
|
||||
|
||||
// console request
|
||||
$cheaders = [
|
||||
'origin' => 'http://localhost',
|
||||
@@ -94,8 +112,7 @@ class UsageTest extends Scope
|
||||
}
|
||||
|
||||
/** @depends testUsersStats */
|
||||
#[Retry(count: 1)]
|
||||
public function testStorageStats(array $data): array
|
||||
public function testPrepareStorageStats(array $data): array
|
||||
{
|
||||
$projectId = $data['projectId'];
|
||||
$headers = $data['headers'];
|
||||
@@ -190,6 +207,40 @@ class UsageTest extends Scope
|
||||
}
|
||||
}
|
||||
|
||||
return array_merge($data, [
|
||||
'bucketId' => $bucketId,
|
||||
'bucketsCount' => $bucketsCount,
|
||||
'requestsCount' => $requestsCount,
|
||||
'storageTotal' => $storageTotal,
|
||||
'bucketsCreate' => $bucketsCreate,
|
||||
'bucketsDelete' => $bucketsDelete,
|
||||
'bucketsRead' => $bucketsRead,
|
||||
'filesCount' => $filesCount,
|
||||
'filesRead' => $filesRead,
|
||||
'filesCreate' => $filesCreate,
|
||||
'filesDelete' => $filesDelete,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testPrepareStorageStats
|
||||
*/
|
||||
#[Retry(count: 1)]
|
||||
public function testStorageStats(array $data): array
|
||||
{
|
||||
$projectId = $data['projectId'];
|
||||
$bucketId = $data['bucketId'];
|
||||
$bucketsCount = $data['bucketsCount'];
|
||||
$requestsCount = $data['requestsCount'];
|
||||
$storageTotal = $data['storageTotal'];
|
||||
$bucketsCreate = $data['bucketsCreate'];
|
||||
$bucketsDelete = $data['bucketsDelete'];
|
||||
$bucketsRead = $data['bucketsRead'];
|
||||
$filesCount = $data['filesCount'];
|
||||
$filesRead = $data['filesRead'];
|
||||
$filesCreate = $data['filesCreate'];
|
||||
$filesDelete = $data['filesDelete'];
|
||||
|
||||
sleep(35);
|
||||
|
||||
// console request
|
||||
@@ -239,8 +290,7 @@ class UsageTest extends Scope
|
||||
}
|
||||
|
||||
/** @depends testStorageStats */
|
||||
#[Retry(count: 1)]
|
||||
public function testDatabaseStats(array $data): array
|
||||
public function testPrepareDatabaseStats(array $data): array
|
||||
{
|
||||
$headers = $data['headers'];
|
||||
$projectId = $data['projectId'];
|
||||
@@ -366,6 +416,58 @@ class UsageTest extends Scope
|
||||
}
|
||||
}
|
||||
|
||||
$data = array_merge($data, [
|
||||
'databaseId' => $databaseId,
|
||||
'collectionId' => $collectionId,
|
||||
|
||||
'requestsCount' => $requestsCount,
|
||||
'databasesCount' => $databasesCount,
|
||||
'databasesCreate' => $databasesCreate,
|
||||
'databasesRead' => $databasesRead,
|
||||
'databasesDelete' => $databasesDelete,
|
||||
|
||||
'collectionsCount' => $collectionsCount,
|
||||
'collectionsCreate' => $collectionsCreate,
|
||||
'collectionsRead' => $collectionsRead,
|
||||
'collectionsUpdate' => $collectionsUpdate,
|
||||
'collectionsDelete' => $collectionsDelete,
|
||||
|
||||
'documentsCount' => $documentsCount,
|
||||
'documentsCreate' => $documentsCreate,
|
||||
'documentsRead' => $documentsRead,
|
||||
'documentsDelete' => $documentsDelete,
|
||||
]);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/** @depends testPrepareDatabaseStats */
|
||||
#[Retry(count: 1)]
|
||||
public function testDatabaseStats(array $data): array
|
||||
{
|
||||
$headers = $data['headers'];
|
||||
$projectId = $data['projectId'];
|
||||
|
||||
$databaseId = $data['databaseId'];
|
||||
$collectionId = $data['collectionId'];
|
||||
|
||||
$requestsCount = $data['requestsCount'];
|
||||
$databasesCount = $data['databasesCount'];
|
||||
$databasesCreate = $data['databasesCreate'];
|
||||
$databasesRead = $data['databasesRead'];
|
||||
$databasesDelete = $data['databasesDelete'];
|
||||
|
||||
$collectionsCount = $data['collectionsCount'];
|
||||
$collectionsCreate = $data['collectionsCreate'];
|
||||
$collectionsRead = $data['collectionsRead'];
|
||||
$collectionsUpdate = $data['collectionsUpdate'];
|
||||
$collectionsDelete = $data['collectionsDelete'];
|
||||
|
||||
$documentsCount = $data['documentsCount'];
|
||||
$documentsCreate = $data['documentsCreate'];
|
||||
$documentsRead = $data['documentsRead'];
|
||||
$documentsDelete = $data['documentsDelete'];
|
||||
|
||||
sleep(35);
|
||||
|
||||
// check datbase stats
|
||||
@@ -440,8 +542,7 @@ class UsageTest extends Scope
|
||||
|
||||
|
||||
/** @depends testDatabaseStats */
|
||||
#[Retry(count: 1)]
|
||||
public function testFunctionsStats(array $data): void
|
||||
public function testPrepareFunctionsStats(array $data): array
|
||||
{
|
||||
$headers = $data['headers'];
|
||||
$functionId = '';
|
||||
@@ -526,6 +627,26 @@ class UsageTest extends Scope
|
||||
}
|
||||
$executionTime += (int) ($execution['body']['duration'] * 1000);
|
||||
|
||||
$data = array_merge($data, [
|
||||
'functionId' => $functionId,
|
||||
'executionTime' => $executionTime,
|
||||
'executions' => $executions,
|
||||
'failures' => $failures,
|
||||
]);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/** @depends testPrepareFunctionsStats */
|
||||
#[Retry(count: 1)]
|
||||
public function testFunctionsStats(array $data): void
|
||||
{
|
||||
$headers = $data['headers'];
|
||||
$functionId = $data['functionId'];
|
||||
$executionTime = $data['executionTime'];
|
||||
$executions = $data['executions'];
|
||||
$failures = $data['failures'];
|
||||
|
||||
sleep(25);
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/functions/' . $functionId . '/usage', $headers, [
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
'req' variable has:
|
||||
'headers' - object with request headers
|
||||
'payload' - object with request body data
|
||||
'env' - object with environment variables
|
||||
'variables' - object with function variables
|
||||
'res' variable has:
|
||||
'send(text, status)' - function to return text response. Status code defaults to 200
|
||||
'json(obj, status)' - function to return JSON response. Status code defaults to 200
|
||||
@@ -12,18 +12,18 @@
|
||||
|
||||
Future<void> start(final request, final response) async {
|
||||
response.json({
|
||||
'APPWRITE_FUNCTION_ID' : request.env['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' : request.env['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' : request.env['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' : request.env['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' : request.env['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' : request.env['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' : request.env['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' : request.env['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_DATA' : request.env['APPWRITE_FUNCTION_DATA'],
|
||||
'APPWRITE_FUNCTION_USER_ID' : request.env['APPWRITE_FUNCTION_USER_ID'],
|
||||
'APPWRITE_FUNCTION_JWT' : request.env['APPWRITE_FUNCTION_JWT'],
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' : request.env['APPWRITE_FUNCTION_PROJECT_ID'],
|
||||
'CUSTOM_VARIABLE' : request.env['CUSTOM_VARIABLE']
|
||||
'APPWRITE_FUNCTION_ID' : request.variables['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' : request.variables['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' : request.variables['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' : request.variables['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' : request.variables['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' : request.variables['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' : request.variables['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' : request.variables['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_DATA' : request.variables['APPWRITE_FUNCTION_DATA'],
|
||||
'APPWRITE_FUNCTION_USER_ID' : request.variables['APPWRITE_FUNCTION_USER_ID'],
|
||||
'APPWRITE_FUNCTION_JWT' : request.variables['APPWRITE_FUNCTION_JWT'],
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' : request.variables['APPWRITE_FUNCTION_PROJECT_ID'],
|
||||
'CUSTOM_VARIABLE' : request.variables['CUSTOM_VARIABLE']
|
||||
});
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
'req' variable has:
|
||||
'headers' - object with request headers
|
||||
'payload' - object with request body data
|
||||
'env' - object with environment variables
|
||||
'variables' - object with function variables
|
||||
'res' variable has:
|
||||
'send(text, status)' - function to return text response. Status code defaults to 200
|
||||
'json(obj, status)' - function to return JSON response. Status code defaults to 200
|
||||
@@ -12,18 +12,18 @@
|
||||
|
||||
module.exports = async(req, res) => {
|
||||
res.json({
|
||||
'APPWRITE_FUNCTION_ID' : req.env.APPWRITE_FUNCTION_ID,
|
||||
'APPWRITE_FUNCTION_NAME' : req.env.APPWRITE_FUNCTION_NAME,
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' : req.env.APPWRITE_FUNCTION_DEPLOYMENT,
|
||||
'APPWRITE_FUNCTION_TRIGGER' : req.env.APPWRITE_FUNCTION_TRIGGER,
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' : req.env.APPWRITE_FUNCTION_RUNTIME_NAME,
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' : req.env.APPWRITE_FUNCTION_RUNTIME_VERSION,
|
||||
'APPWRITE_FUNCTION_EVENT' : req.env.APPWRITE_FUNCTION_EVENT,
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' : req.env.APPWRITE_FUNCTION_EVENT_DATA,
|
||||
'APPWRITE_FUNCTION_DATA' : req.env.APPWRITE_FUNCTION_DATA,
|
||||
'APPWRITE_FUNCTION_USER_ID' : req.env.APPWRITE_FUNCTION_USER_ID,
|
||||
'APPWRITE_FUNCTION_JWT' : req.env.APPWRITE_FUNCTION_JWT,
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' : req.env.APPWRITE_FUNCTION_PROJECT_ID,
|
||||
'CUSTOM_VARIABLE' : req.env.CUSTOM_VARIABLE
|
||||
'APPWRITE_FUNCTION_ID' : req.variables.APPWRITE_FUNCTION_ID,
|
||||
'APPWRITE_FUNCTION_NAME' : req.variables.APPWRITE_FUNCTION_NAME,
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' : req.variables.APPWRITE_FUNCTION_DEPLOYMENT,
|
||||
'APPWRITE_FUNCTION_TRIGGER' : req.variables.APPWRITE_FUNCTION_TRIGGER,
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' : req.variables.APPWRITE_FUNCTION_RUNTIME_NAME,
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' : req.variables.APPWRITE_FUNCTION_RUNTIME_VERSION,
|
||||
'APPWRITE_FUNCTION_EVENT' : req.variables.APPWRITE_FUNCTION_EVENT,
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' : req.variables.APPWRITE_FUNCTION_EVENT_DATA,
|
||||
'APPWRITE_FUNCTION_DATA' : req.variables.APPWRITE_FUNCTION_DATA,
|
||||
'APPWRITE_FUNCTION_USER_ID' : req.variables.APPWRITE_FUNCTION_USER_ID,
|
||||
'APPWRITE_FUNCTION_JWT' : req.variables.APPWRITE_FUNCTION_JWT,
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' : req.variables.APPWRITE_FUNCTION_PROJECT_ID,
|
||||
'CUSTOM_VARIABLE' : req.variables.CUSTOM_VARIABLE
|
||||
});
|
||||
}
|
||||
@@ -4,17 +4,17 @@ return function ($request, $response) {
|
||||
\var_dump("Amazing Function Log"); // We test logs (stdout) visibility with this
|
||||
|
||||
$response->json([
|
||||
'APPWRITE_FUNCTION_ID' => $request['env']['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' => $request['env']['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' => $request['env']['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' => $request['env']['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' => $request['env']['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' => $request['env']['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' => $request['env']['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' => $request['env']['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_DATA' => $request['env']['APPWRITE_FUNCTION_DATA'],
|
||||
'APPWRITE_FUNCTION_USER_ID' => $request['env']['APPWRITE_FUNCTION_USER_ID'],
|
||||
'APPWRITE_FUNCTION_JWT' => $request['env']['APPWRITE_FUNCTION_JWT'],
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' => $request['env']['APPWRITE_FUNCTION_PROJECT_ID'],
|
||||
'APPWRITE_FUNCTION_ID' => $request['variables']['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' => $request['variables']['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' => $request['variables']['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' => $request['variables']['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' => $request['variables']['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' => $request['variables']['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' => $request['variables']['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' => $request['variables']['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_DATA' => $request['variables']['APPWRITE_FUNCTION_DATA'],
|
||||
'APPWRITE_FUNCTION_USER_ID' => $request['variables']['APPWRITE_FUNCTION_USER_ID'],
|
||||
'APPWRITE_FUNCTION_JWT' => $request['variables']['APPWRITE_FUNCTION_JWT'],
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' => $request['variables']['APPWRITE_FUNCTION_PROJECT_ID'],
|
||||
]);
|
||||
};
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
|
||||
return function ($request, $response) {
|
||||
return $response->json([
|
||||
'APPWRITE_FUNCTION_ID' => $request['env']['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' => $request['env']['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' => $request['env']['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' => $request['env']['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' => $request['env']['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' => $request['env']['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' => $request['env']['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' => $request['env']['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_ID' => $request['variables']['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' => $request['variables']['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' => $request['variables']['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' => $request['variables']['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' => $request['variables']['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' => $request['variables']['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' => $request['variables']['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' => $request['variables']['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'UNICODE_TEST' => "êä"
|
||||
]);
|
||||
};
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
|
||||
return function ($request, $response) {
|
||||
return $response->json([
|
||||
'APPWRITE_FUNCTION_ID' => $request['env']['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' => $request['env']['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' => $request['env']['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' => $request['env']['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' => $request['env']['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' => $request['env']['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' => $request['env']['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' => $request['env']['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_ID' => $request['variables']['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' => $request['variables']['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' => $request['variables']['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' => $request['variables']['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' => $request['variables']['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' => $request['variables']['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' => $request['variables']['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' => $request['variables']['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'UNICODE_TEST' => "êä"
|
||||
]);
|
||||
};
|
||||
|
||||
@@ -3,7 +3,7 @@ import json
|
||||
# 'req' variable has:
|
||||
# 'headers' - object with request headers
|
||||
# 'payload' - object with request body data
|
||||
# 'env' - object with environment variables
|
||||
# 'variables' - object with function variables
|
||||
# 'res' variable has:
|
||||
# 'send(text, status)' - function to return text response. Status code defaults to 200
|
||||
# 'json(obj, status)' - function to return JSON response. Status code defaults to 200
|
||||
@@ -12,17 +12,17 @@ import json
|
||||
|
||||
def main(request, response):
|
||||
return response.json({
|
||||
'APPWRITE_FUNCTION_ID' : request.env['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' : request.env['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' : request.env['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' : request.env['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' : request.env['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' : request.env['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' : request.env['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' : request.env['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_DATA' : request.env['APPWRITE_FUNCTION_DATA'],
|
||||
'APPWRITE_FUNCTION_USER_ID' : request.env['APPWRITE_FUNCTION_USER_ID'],
|
||||
'APPWRITE_FUNCTION_JWT' : request.env['APPWRITE_FUNCTION_JWT'],
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' : request.env['APPWRITE_FUNCTION_PROJECT_ID'],
|
||||
'CUSTOM_VARIABLE' : request.env['CUSTOM_VARIABLE'],
|
||||
'APPWRITE_FUNCTION_ID' : request.variables['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' : request.variables['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' : request.variables['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' : request.variables['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' : request.variables['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' : request.variables['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' : request.variables['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' : request.variables['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_DATA' : request.variables['APPWRITE_FUNCTION_DATA'],
|
||||
'APPWRITE_FUNCTION_USER_ID' : request.variables['APPWRITE_FUNCTION_USER_ID'],
|
||||
'APPWRITE_FUNCTION_JWT' : request.variables['APPWRITE_FUNCTION_JWT'],
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' : request.variables['APPWRITE_FUNCTION_PROJECT_ID'],
|
||||
'CUSTOM_VARIABLE' : request.variables['CUSTOM_VARIABLE'],
|
||||
})
|
||||
@@ -2,7 +2,7 @@
|
||||
'req' variable has:
|
||||
'headers' - object with request headers
|
||||
'payload' - object with request body data
|
||||
'env' - object with environment variables
|
||||
'variables' - object with function variables
|
||||
'res' variable has:
|
||||
'send(text, status)' - function to return text response. Status code defaults to 200
|
||||
'json(obj, status)' - function to return JSON response. Status code defaults to 200
|
||||
@@ -12,18 +12,18 @@
|
||||
|
||||
def main(request, response)
|
||||
return response.json({
|
||||
'APPWRITE_FUNCTION_ID' => request.env['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' => request.env['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' => request.env['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' => request.env['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' => request.env['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' => request.env['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' => request.env['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' => request.env['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_DATA' => request.env['APPWRITE_FUNCTION_DATA'],
|
||||
'APPWRITE_FUNCTION_USER_ID' => request.env['APPWRITE_FUNCTION_USER_ID'],
|
||||
'APPWRITE_FUNCTION_JWT' => request.env['APPWRITE_FUNCTION_JWT'],
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' => request.env['APPWRITE_FUNCTION_PROJECT_ID'],
|
||||
'CUSTOM_VARIABLE' => request.env['CUSTOM_VARIABLE']
|
||||
'APPWRITE_FUNCTION_ID' => request.variables['APPWRITE_FUNCTION_ID'],
|
||||
'APPWRITE_FUNCTION_NAME' => request.variables['APPWRITE_FUNCTION_NAME'],
|
||||
'APPWRITE_FUNCTION_DEPLOYMENT' => request.variables['APPWRITE_FUNCTION_DEPLOYMENT'],
|
||||
'APPWRITE_FUNCTION_TRIGGER' => request.variables['APPWRITE_FUNCTION_TRIGGER'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_NAME' => request.variables['APPWRITE_FUNCTION_RUNTIME_NAME'],
|
||||
'APPWRITE_FUNCTION_RUNTIME_VERSION' => request.variables['APPWRITE_FUNCTION_RUNTIME_VERSION'],
|
||||
'APPWRITE_FUNCTION_EVENT' => request.variables['APPWRITE_FUNCTION_EVENT'],
|
||||
'APPWRITE_FUNCTION_EVENT_DATA' => request.variables['APPWRITE_FUNCTION_EVENT_DATA'],
|
||||
'APPWRITE_FUNCTION_DATA' => request.variables['APPWRITE_FUNCTION_DATA'],
|
||||
'APPWRITE_FUNCTION_USER_ID' => request.variables['APPWRITE_FUNCTION_USER_ID'],
|
||||
'APPWRITE_FUNCTION_JWT' => request.variables['APPWRITE_FUNCTION_JWT'],
|
||||
'APPWRITE_FUNCTION_PROJECT_ID' => request.variables['APPWRITE_FUNCTION_PROJECT_ID'],
|
||||
'CUSTOM_VARIABLE' => request.variables['CUSTOM_VARIABLE']
|
||||
})
|
||||
end
|
||||
@@ -1,17 +1,17 @@
|
||||
func main(req: RequestValue, res: RequestResponse) throws -> RequestResponse {
|
||||
return res.json(data: [
|
||||
"APPWRITE_FUNCTION_ID": req.env["APPWRITE_FUNCTION_ID"],
|
||||
"APPWRITE_FUNCTION_NAME": req.env["APPWRITE_FUNCTION_NAME"],
|
||||
"APPWRITE_FUNCTION_DEPLOYMENT": req.env["APPWRITE_FUNCTION_DEPLOYMENT"],
|
||||
"APPWRITE_FUNCTION_TRIGGER": req.env["APPWRITE_FUNCTION_TRIGGER"],
|
||||
"APPWRITE_FUNCTION_RUNTIME_NAME": req.env["APPWRITE_FUNCTION_RUNTIME_NAME"],
|
||||
"APPWRITE_FUNCTION_RUNTIME_VERSION": req.env["APPWRITE_FUNCTION_RUNTIME_VERSION"],
|
||||
"APPWRITE_FUNCTION_EVENT": req.env["APPWRITE_FUNCTION_EVENT"],
|
||||
"APPWRITE_FUNCTION_EVENT_DATA": req.env["APPWRITE_FUNCTION_EVENT_DATA"],
|
||||
"APPWRITE_FUNCTION_DATA": req.env["APPWRITE_FUNCTION_DATA"],
|
||||
"APPWRITE_FUNCTION_USER_ID": req.env["APPWRITE_FUNCTION_USER_ID"],
|
||||
"APPWRITE_FUNCTION_JWT": req.env["APPWRITE_FUNCTION_JWT"],
|
||||
"APPWRITE_FUNCTION_PROJECT_ID": req.env["APPWRITE_FUNCTION_PROJECT_ID"],
|
||||
"CUSTOM_VARIABLE": req.env["CUSTOM_VARIABLE"]
|
||||
"APPWRITE_FUNCTION_ID": req.variables["APPWRITE_FUNCTION_ID"],
|
||||
"APPWRITE_FUNCTION_NAME": req.variables["APPWRITE_FUNCTION_NAME"],
|
||||
"APPWRITE_FUNCTION_DEPLOYMENT": req.variables["APPWRITE_FUNCTION_DEPLOYMENT"],
|
||||
"APPWRITE_FUNCTION_TRIGGER": req.variables["APPWRITE_FUNCTION_TRIGGER"],
|
||||
"APPWRITE_FUNCTION_RUNTIME_NAME": req.variables["APPWRITE_FUNCTION_RUNTIME_NAME"],
|
||||
"APPWRITE_FUNCTION_RUNTIME_VERSION": req.variables["APPWRITE_FUNCTION_RUNTIME_VERSION"],
|
||||
"APPWRITE_FUNCTION_EVENT": req.variables["APPWRITE_FUNCTION_EVENT"],
|
||||
"APPWRITE_FUNCTION_EVENT_DATA": req.variables["APPWRITE_FUNCTION_EVENT_DATA"],
|
||||
"APPWRITE_FUNCTION_DATA": req.variables["APPWRITE_FUNCTION_DATA"],
|
||||
"APPWRITE_FUNCTION_USER_ID": req.variables["APPWRITE_FUNCTION_USER_ID"],
|
||||
"APPWRITE_FUNCTION_JWT": req.variables["APPWRITE_FUNCTION_JWT"],
|
||||
"APPWRITE_FUNCTION_PROJECT_ID": req.variables["APPWRITE_FUNCTION_PROJECT_ID"],
|
||||
"CUSTOM_VARIABLE": req.variables["CUSTOM_VARIABLE"]
|
||||
])
|
||||
}
|
||||
Reference in New Issue
Block a user