Merge branch 'master' of github.com:appwrite/appwrite into doctor-cli
This commit is contained in:
commit
7e2d909dd9
18 changed files with 403 additions and 107 deletions
|
@ -25,6 +25,8 @@
|
||||||
- Fixed a UI bug preventing float values in numeric fields
|
- Fixed a UI bug preventing float values in numeric fields
|
||||||
- Fixed scroll positioning when moving rules order up & down
|
- Fixed scroll positioning when moving rules order up & down
|
||||||
- Fixed missing validation for database documents key length (32 chars)
|
- Fixed missing validation for database documents key length (32 chars)
|
||||||
|
- Grammer fix for pt-br email templates (@rubensdemelo)
|
||||||
|
- Fixed update form labels and tooltips for Flutter Android apps
|
||||||
|
|
||||||
## Security
|
## Security
|
||||||
|
|
||||||
|
|
|
@ -187,7 +187,7 @@ $utopia->init(function () use ($utopia, $request, $response, &$user, $project, $
|
||||||
throw new Exception('Project not found', 404);
|
throw new Exception('Project not found', 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Exception($user->getAttribute('email', 'Guest').' (role: '.strtolower($roles[$role]['label']).') missing scope ('.$scope.')', 401);
|
throw new Exception($user->getAttribute('email', 'User').' (role: '.strtolower($roles[$role]['label']).') missing scope ('.$scope.')', 401);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Auth::USER_STATUS_BLOCKED == $user->getAttribute('status')) { // Account has not been activated
|
if (Auth::USER_STATUS_BLOCKED == $user->getAttribute('status')) { // Account has not been activated
|
||||||
|
|
10
app/sdks/client-web/docs/examples/avatars/get-initials.md
Normal file
10
app/sdks/client-web/docs/examples/avatars/get-initials.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
let sdk = new Appwrite();
|
||||||
|
|
||||||
|
sdk
|
||||||
|
.setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
|
||||||
|
.setProject('5df5acd0d48c2') // Your project ID
|
||||||
|
;
|
||||||
|
|
||||||
|
let result = sdk.avatars.getInitials();
|
||||||
|
|
||||||
|
console.log(result); // Resource URL
|
14
app/sdks/client-web/docs/examples/locale/get-languages.md
Normal file
14
app/sdks/client-web/docs/examples/locale/get-languages.md
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
let sdk = new Appwrite();
|
||||||
|
|
||||||
|
sdk
|
||||||
|
.setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
|
||||||
|
.setProject('5df5acd0d48c2') // Your project ID
|
||||||
|
;
|
||||||
|
|
||||||
|
let promise = sdk.locale.getLanguages();
|
||||||
|
|
||||||
|
promise.then(function (response) {
|
||||||
|
console.log(response); // Success
|
||||||
|
}, function (error) {
|
||||||
|
console.log(error); // Failure
|
||||||
|
});
|
|
@ -190,28 +190,27 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
request.onload = function () {
|
request.onload = function () {
|
||||||
|
let data = request.response;
|
||||||
|
let contentType = this.getResponseHeader('content-type') || '';
|
||||||
|
contentType = contentType.substring(0, contentType.indexOf(';'));
|
||||||
|
|
||||||
|
switch (contentType) {
|
||||||
|
case 'application/json':
|
||||||
|
data = JSON.parse(data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
let cookieFallback = this.getResponseHeader('X-Fallback-Cookies') || '';
|
||||||
|
|
||||||
|
if(window.localStorage && cookieFallback) {
|
||||||
|
window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');
|
||||||
|
window.localStorage.setItem('cookieFallback', cookieFallback);
|
||||||
|
}
|
||||||
|
|
||||||
if (4 === request.readyState && 399 >= request.status) {
|
if (4 === request.readyState && 399 >= request.status) {
|
||||||
let data = request.response;
|
|
||||||
let contentType = this.getResponseHeader('content-type') || '';
|
|
||||||
contentType = contentType.substring(0, contentType.indexOf(';'));
|
|
||||||
|
|
||||||
switch (contentType) {
|
|
||||||
case 'application/json':
|
|
||||||
data = JSON.parse(data);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
let cookieFallback = this.getResponseHeader('X-Fallback-Cookies') || '';
|
|
||||||
|
|
||||||
if(window.localStorage && cookieFallback) {
|
|
||||||
window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');
|
|
||||||
window.localStorage.setItem('cookieFallback', cookieFallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
resolve(data);
|
resolve(data);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
reject(new Error(request.statusText));
|
reject(data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1045,6 +1044,60 @@
|
||||||
return config.endpoint + path + ((query) ? '?' + query : '');
|
return config.endpoint + path + ((query) ? '?' + query : '');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get User Initials
|
||||||
|
*
|
||||||
|
* Use this endpoint to show your user initials avatar icon on your website or
|
||||||
|
* app. By default, this route will try to print your logged-in user name or
|
||||||
|
* email initials. You can also overwrite the user name if you pass the 'name'
|
||||||
|
* parameter. If no name is given and no user is logged, an empty avatar will
|
||||||
|
* be returned.
|
||||||
|
*
|
||||||
|
* You can use the color and background params to change the avatar colors. By
|
||||||
|
* default, a random theme will be selected. The random theme will persist for
|
||||||
|
* the user's initials when reloading the same theme will always return for
|
||||||
|
* the same initials.
|
||||||
|
*
|
||||||
|
* @param {string} name
|
||||||
|
* @param {number} width
|
||||||
|
* @param {number} height
|
||||||
|
* @param {string} color
|
||||||
|
* @param {string} background
|
||||||
|
* @throws {Error}
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
getInitials: function(name = '', width = 500, height = 500, color = '', background = '') {
|
||||||
|
let path = '/avatars/initials';
|
||||||
|
|
||||||
|
let payload = {};
|
||||||
|
|
||||||
|
if(name) {
|
||||||
|
payload['name'] = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(width) {
|
||||||
|
payload['width'] = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(height) {
|
||||||
|
payload['height'] = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(color) {
|
||||||
|
payload['color'] = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(background) {
|
||||||
|
payload['background'] = background;
|
||||||
|
}
|
||||||
|
|
||||||
|
payload['project'] = config.project;
|
||||||
|
|
||||||
|
let query = Object.keys(payload).map(key => key + '=' + encodeURIComponent(payload[key])).join('&');
|
||||||
|
|
||||||
|
return config.endpoint + path + ((query) ? '?' + query : '');
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get QR Code
|
* Get QR Code
|
||||||
*
|
*
|
||||||
|
@ -1460,9 +1513,9 @@
|
||||||
/**
|
/**
|
||||||
* List Currencies
|
* List Currencies
|
||||||
*
|
*
|
||||||
* List of all currencies, including currency symol, name, plural, and decimal
|
* List of all currencies, including currency symbol, name, plural, and
|
||||||
* digits for all major and minor currencies. You can use the locale header to
|
* decimal digits for all major and minor currencies. You can use the locale
|
||||||
* get the data in a supported language.
|
* header to get the data in a supported language.
|
||||||
*
|
*
|
||||||
* @throws {Error}
|
* @throws {Error}
|
||||||
* @return {Promise}
|
* @return {Promise}
|
||||||
|
@ -1472,6 +1525,26 @@
|
||||||
|
|
||||||
let payload = {};
|
let payload = {};
|
||||||
|
|
||||||
|
return http
|
||||||
|
.get(path, {
|
||||||
|
'content-type': 'application/json',
|
||||||
|
}, payload);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List Languages
|
||||||
|
*
|
||||||
|
* List of all languages classified by ISO 639-1 including 2-letter code, name
|
||||||
|
* in English, and name in the respective language.
|
||||||
|
*
|
||||||
|
* @throws {Error}
|
||||||
|
* @return {Promise}
|
||||||
|
*/
|
||||||
|
getLanguages: function() {
|
||||||
|
let path = '/locale/languages';
|
||||||
|
|
||||||
|
let payload = {};
|
||||||
|
|
||||||
return http
|
return http
|
||||||
.get(path, {
|
.get(path, {
|
||||||
'content-type': 'application/json',
|
'content-type': 'application/json',
|
||||||
|
|
11
app/sdks/client-web/src/sdk.min.js
vendored
11
app/sdks/client-web/src/sdk.min.js
vendored
|
@ -9,9 +9,9 @@ if(method==='GET'){for(let param in params){if(param.hasOwnProperty(key)){path=a
|
||||||
switch(headers['content-type']){case 'application/json':params=JSON.stringify(params);break;case 'multipart/form-data':let formData=new FormData();Object.keys(params).forEach(function(key){let param=params[key];formData.append(key+(Array.isArray(param)?'[]':''),param)});params=formData;break}
|
switch(headers['content-type']){case 'application/json':params=JSON.stringify(params);break;case 'multipart/form-data':let formData=new FormData();Object.keys(params).forEach(function(key){let param=params[key];formData.append(key+(Array.isArray(param)?'[]':''),param)});params=formData;break}
|
||||||
return new Promise(function(resolve,reject){let request=new XMLHttpRequest(),key;request.withCredentials=!0;request.open(method,path,!0);for(key in headers){if(headers.hasOwnProperty(key)){if(key==='content-type'&&headers[key]==='multipart/form-data'){continue}
|
return new Promise(function(resolve,reject){let request=new XMLHttpRequest(),key;request.withCredentials=!0;request.open(method,path,!0);for(key in headers){if(headers.hasOwnProperty(key)){if(key==='content-type'&&headers[key]==='multipart/form-data'){continue}
|
||||||
request.setRequestHeader(key,headers[key])}}
|
request.setRequestHeader(key,headers[key])}}
|
||||||
request.onload=function(){if(4===request.readyState&&399>=request.status){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case 'application/json':data=JSON.parse(data);break}
|
request.onload=function(){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case 'application/json':data=JSON.parse(data);break}
|
||||||
let cookieFallback=this.getResponseHeader('X-Fallback-Cookies')||'';if(window.localStorage&&cookieFallback){window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');window.localStorage.setItem('cookieFallback',cookieFallback)}
|
let cookieFallback=this.getResponseHeader('X-Fallback-Cookies')||'';if(window.localStorage&&cookieFallback){window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');window.localStorage.setItem('cookieFallback',cookieFallback)}
|
||||||
resolve(data)}else{reject(new Error(request.statusText))}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,!1)}
|
if(4===request.readyState&&399>=request.status){resolve(data)}else{reject(data)}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,!1)}
|
||||||
request.onerror=function(){reject(new Error("Network Error"))};request.send(params)})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{})},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress)},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress)},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress)},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress)},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let account={get:function(){let path='/account';let payload={};return http.get(path,{'content-type':'application/json',},payload)},create:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')}
|
request.onerror=function(){reject(new Error("Network Error"))};request.send(params)})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{})},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress)},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress)},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress)},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress)},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let account={get:function(){let path='/account';let payload={};return http.get(path,{'content-type':'application/json',},payload)},create:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')}
|
||||||
if(password===undefined){throw new Error('Missing required parameter: "password"')}
|
if(password===undefined){throw new Error('Missing required parameter: "password"')}
|
||||||
let path='/account';let payload={};if(email){payload.email=email}
|
let path='/account';let payload={};if(email){payload.email=email}
|
||||||
|
@ -73,6 +73,11 @@ payload.project=config.project;let query=Object.keys(payload).map(key=>key+'='+e
|
||||||
let path='/avatars/image';let payload={};if(url){payload.url=url}
|
let path='/avatars/image';let payload={};if(url){payload.url=url}
|
||||||
if(width){payload.width=width}
|
if(width){payload.width=width}
|
||||||
if(height){payload.height=height}
|
if(height){payload.height=height}
|
||||||
|
payload.project=config.project;let query=Object.keys(payload).map(key=>key+'='+encodeURIComponent(payload[key])).join('&');return config.endpoint+path+((query)?'?'+query:'')},getInitials:function(name='',width=500,height=500,color='',background=''){let path='/avatars/initials';let payload={};if(name){payload.name=name}
|
||||||
|
if(width){payload.width=width}
|
||||||
|
if(height){payload.height=height}
|
||||||
|
if(color){payload.color=color}
|
||||||
|
if(background){payload.background=background}
|
||||||
payload.project=config.project;let query=Object.keys(payload).map(key=>key+'='+encodeURIComponent(payload[key])).join('&');return config.endpoint+path+((query)?'?'+query:'')},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"')}
|
payload.project=config.project;let query=Object.keys(payload).map(key=>key+'='+encodeURIComponent(payload[key])).join('&');return config.endpoint+path+((query)?'?'+query:'')},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"')}
|
||||||
let path='/avatars/qr';let payload={};if(text){payload.text=text}
|
let path='/avatars/qr';let payload={};if(text){payload.text=text}
|
||||||
if(size){payload.size=size}
|
if(size){payload.size=size}
|
||||||
|
@ -110,7 +115,7 @@ if(read){payload.read=read}
|
||||||
if(write){payload.write=write}
|
if(write){payload.write=write}
|
||||||
return http.patch(path,{'content-type':'application/json',},payload)},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')}
|
return http.patch(path,{'content-type':'application/json',},payload)},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')}
|
||||||
if(documentId===undefined){throw new Error('Missing required parameter: "documentId"')}
|
if(documentId===undefined){throw new Error('Missing required parameter: "documentId"')}
|
||||||
let path='/database/collections/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.delete(path,{'content-type':'application/json',},payload)}};let locale={get:function(){let path='/locale';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getContinents:function(){let path='/locale/continents';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountries:function(){let path='/locale/countries';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountriesEU:function(){let path='/locale/countries/eu';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountriesPhones:function(){let path='/locale/countries/phones';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCurrencies:function(){let path='/locale/currencies';let payload={};return http.get(path,{'content-type':'application/json',},payload)}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';let payload={};if(search){payload.search=search}
|
let path='/database/collections/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.delete(path,{'content-type':'application/json',},payload)}};let locale={get:function(){let path='/locale';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getContinents:function(){let path='/locale/continents';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountries:function(){let path='/locale/countries';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountriesEU:function(){let path='/locale/countries/eu';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountriesPhones:function(){let path='/locale/countries/phones';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCurrencies:function(){let path='/locale/currencies';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getLanguages:function(){let path='/locale/languages';let payload={};return http.get(path,{'content-type':'application/json',},payload)}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';let payload={};if(search){payload.search=search}
|
||||||
if(limit){payload.limit=limit}
|
if(limit){payload.limit=limit}
|
||||||
if(offset){payload.offset=offset}
|
if(offset){payload.offset=offset}
|
||||||
if(orderType){payload.orderType=orderType}
|
if(orderType){payload.orderType=orderType}
|
||||||
|
|
41
app/sdks/client-web/types/index.d.ts
vendored
41
app/sdks/client-web/types/index.d.ts
vendored
|
@ -386,6 +386,30 @@ declare namespace Appwrite {
|
||||||
*/
|
*/
|
||||||
getImage(url: string, width: number, height: number): string;
|
getImage(url: string, width: number, height: number): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get User Initials
|
||||||
|
*
|
||||||
|
* Use this endpoint to show your user initials avatar icon on your website or
|
||||||
|
* app. By default, this route will try to print your logged-in user name or
|
||||||
|
* email initials. You can also overwrite the user name if you pass the 'name'
|
||||||
|
* parameter. If no name is given and no user is logged, an empty avatar will
|
||||||
|
* be returned.
|
||||||
|
*
|
||||||
|
* You can use the color and background params to change the avatar colors. By
|
||||||
|
* default, a random theme will be selected. The random theme will persist for
|
||||||
|
* the user's initials when reloading the same theme will always return for
|
||||||
|
* the same initials.
|
||||||
|
*
|
||||||
|
* @param {string} name
|
||||||
|
* @param {number} width
|
||||||
|
* @param {number} height
|
||||||
|
* @param {string} color
|
||||||
|
* @param {string} background
|
||||||
|
* @throws {Error}
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
getInitials(name: string, width: number, height: number, color: string, background: string): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get QR Code
|
* Get QR Code
|
||||||
*
|
*
|
||||||
|
@ -555,15 +579,26 @@ declare namespace Appwrite {
|
||||||
/**
|
/**
|
||||||
* List Currencies
|
* List Currencies
|
||||||
*
|
*
|
||||||
* List of all currencies, including currency symol, name, plural, and decimal
|
* List of all currencies, including currency symbol, name, plural, and
|
||||||
* digits for all major and minor currencies. You can use the locale header to
|
* decimal digits for all major and minor currencies. You can use the locale
|
||||||
* get the data in a supported language.
|
* header to get the data in a supported language.
|
||||||
*
|
*
|
||||||
* @throws {Error}
|
* @throws {Error}
|
||||||
* @return {Promise}
|
* @return {Promise}
|
||||||
*/
|
*/
|
||||||
getCurrencies(): Promise<object>;
|
getCurrencies(): Promise<object>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List Languages
|
||||||
|
*
|
||||||
|
* List of all languages classified by ISO 639-1 including 2-letter code, name
|
||||||
|
* in English, and name in the respective language.
|
||||||
|
*
|
||||||
|
* @throws {Error}
|
||||||
|
* @return {Promise}
|
||||||
|
*/
|
||||||
|
getLanguages(): Promise<object>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Storage {
|
export interface Storage {
|
||||||
|
|
11
app/sdks/console-web/docs/examples/avatars/get-initials.md
Normal file
11
app/sdks/console-web/docs/examples/avatars/get-initials.md
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
let sdk = new Appwrite();
|
||||||
|
|
||||||
|
sdk
|
||||||
|
.setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
|
||||||
|
.setProject('5df5acd0d48c2') // Your project ID
|
||||||
|
.setKey('919c2d18fb5d4...a2ae413da83346ad2') // Your secret API key
|
||||||
|
;
|
||||||
|
|
||||||
|
let result = sdk.avatars.getInitials();
|
||||||
|
|
||||||
|
console.log(result); // Resource URL
|
15
app/sdks/console-web/docs/examples/locale/get-languages.md
Normal file
15
app/sdks/console-web/docs/examples/locale/get-languages.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
let sdk = new Appwrite();
|
||||||
|
|
||||||
|
sdk
|
||||||
|
.setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
|
||||||
|
.setProject('5df5acd0d48c2') // Your project ID
|
||||||
|
.setKey('919c2d18fb5d4...a2ae413da83346ad2') // Your secret API key
|
||||||
|
;
|
||||||
|
|
||||||
|
let promise = sdk.locale.getLanguages();
|
||||||
|
|
||||||
|
promise.then(function (response) {
|
||||||
|
console.log(response); // Success
|
||||||
|
}, function (error) {
|
||||||
|
console.log(error); // Failure
|
||||||
|
});
|
|
@ -226,28 +226,27 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
request.onload = function () {
|
request.onload = function () {
|
||||||
|
let data = request.response;
|
||||||
|
let contentType = this.getResponseHeader('content-type') || '';
|
||||||
|
contentType = contentType.substring(0, contentType.indexOf(';'));
|
||||||
|
|
||||||
|
switch (contentType) {
|
||||||
|
case 'application/json':
|
||||||
|
data = JSON.parse(data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
let cookieFallback = this.getResponseHeader('X-Fallback-Cookies') || '';
|
||||||
|
|
||||||
|
if(window.localStorage && cookieFallback) {
|
||||||
|
window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');
|
||||||
|
window.localStorage.setItem('cookieFallback', cookieFallback);
|
||||||
|
}
|
||||||
|
|
||||||
if (4 === request.readyState && 399 >= request.status) {
|
if (4 === request.readyState && 399 >= request.status) {
|
||||||
let data = request.response;
|
|
||||||
let contentType = this.getResponseHeader('content-type') || '';
|
|
||||||
contentType = contentType.substring(0, contentType.indexOf(';'));
|
|
||||||
|
|
||||||
switch (contentType) {
|
|
||||||
case 'application/json':
|
|
||||||
data = JSON.parse(data);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
let cookieFallback = this.getResponseHeader('X-Fallback-Cookies') || '';
|
|
||||||
|
|
||||||
if(window.localStorage && cookieFallback) {
|
|
||||||
window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');
|
|
||||||
window.localStorage.setItem('cookieFallback', cookieFallback);
|
|
||||||
}
|
|
||||||
|
|
||||||
resolve(data);
|
resolve(data);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
reject(new Error(request.statusText));
|
reject(data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1093,6 +1092,62 @@
|
||||||
return config.endpoint + path + ((query) ? '?' + query : '');
|
return config.endpoint + path + ((query) ? '?' + query : '');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get User Initials
|
||||||
|
*
|
||||||
|
* Use this endpoint to show your user initials avatar icon on your website or
|
||||||
|
* app. By default, this route will try to print your logged-in user name or
|
||||||
|
* email initials. You can also overwrite the user name if you pass the 'name'
|
||||||
|
* parameter. If no name is given and no user is logged, an empty avatar will
|
||||||
|
* be returned.
|
||||||
|
*
|
||||||
|
* You can use the color and background params to change the avatar colors. By
|
||||||
|
* default, a random theme will be selected. The random theme will persist for
|
||||||
|
* the user's initials when reloading the same theme will always return for
|
||||||
|
* the same initials.
|
||||||
|
*
|
||||||
|
* @param {string} name
|
||||||
|
* @param {number} width
|
||||||
|
* @param {number} height
|
||||||
|
* @param {string} color
|
||||||
|
* @param {string} background
|
||||||
|
* @throws {Error}
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
getInitials: function(name = '', width = 500, height = 500, color = '', background = '') {
|
||||||
|
let path = '/avatars/initials';
|
||||||
|
|
||||||
|
let payload = {};
|
||||||
|
|
||||||
|
if(name) {
|
||||||
|
payload['name'] = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(width) {
|
||||||
|
payload['width'] = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(height) {
|
||||||
|
payload['height'] = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(color) {
|
||||||
|
payload['color'] = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(background) {
|
||||||
|
payload['background'] = background;
|
||||||
|
}
|
||||||
|
|
||||||
|
payload['project'] = config.project;
|
||||||
|
|
||||||
|
payload['key'] = config.key;
|
||||||
|
|
||||||
|
let query = Object.keys(payload).map(key => key + '=' + encodeURIComponent(payload[key])).join('&');
|
||||||
|
|
||||||
|
return config.endpoint + path + ((query) ? '?' + query : '');
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get QR Code
|
* Get QR Code
|
||||||
*
|
*
|
||||||
|
@ -1979,9 +2034,9 @@
|
||||||
/**
|
/**
|
||||||
* List Currencies
|
* List Currencies
|
||||||
*
|
*
|
||||||
* List of all currencies, including currency symol, name, plural, and decimal
|
* List of all currencies, including currency symbol, name, plural, and
|
||||||
* digits for all major and minor currencies. You can use the locale header to
|
* decimal digits for all major and minor currencies. You can use the locale
|
||||||
* get the data in a supported language.
|
* header to get the data in a supported language.
|
||||||
*
|
*
|
||||||
* @throws {Error}
|
* @throws {Error}
|
||||||
* @return {Promise}
|
* @return {Promise}
|
||||||
|
@ -1991,6 +2046,26 @@
|
||||||
|
|
||||||
let payload = {};
|
let payload = {};
|
||||||
|
|
||||||
|
return http
|
||||||
|
.get(path, {
|
||||||
|
'content-type': 'application/json',
|
||||||
|
}, payload);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List Languages
|
||||||
|
*
|
||||||
|
* List of all languages classified by ISO 639-1 including 2-letter code, name
|
||||||
|
* in English, and name in the respective language.
|
||||||
|
*
|
||||||
|
* @throws {Error}
|
||||||
|
* @return {Promise}
|
||||||
|
*/
|
||||||
|
getLanguages: function() {
|
||||||
|
let path = '/locale/languages';
|
||||||
|
|
||||||
|
let payload = {};
|
||||||
|
|
||||||
return http
|
return http
|
||||||
.get(path, {
|
.get(path, {
|
||||||
'content-type': 'application/json',
|
'content-type': 'application/json',
|
||||||
|
|
11
app/sdks/console-web/src/sdk.min.js
vendored
11
app/sdks/console-web/src/sdk.min.js
vendored
|
@ -9,9 +9,9 @@ if(method==='GET'){for(let param in params){if(param.hasOwnProperty(key)){path=a
|
||||||
switch(headers['content-type']){case 'application/json':params=JSON.stringify(params);break;case 'multipart/form-data':let formData=new FormData();Object.keys(params).forEach(function(key){let param=params[key];formData.append(key+(Array.isArray(param)?'[]':''),param)});params=formData;break}
|
switch(headers['content-type']){case 'application/json':params=JSON.stringify(params);break;case 'multipart/form-data':let formData=new FormData();Object.keys(params).forEach(function(key){let param=params[key];formData.append(key+(Array.isArray(param)?'[]':''),param)});params=formData;break}
|
||||||
return new Promise(function(resolve,reject){let request=new XMLHttpRequest(),key;request.withCredentials=!0;request.open(method,path,!0);for(key in headers){if(headers.hasOwnProperty(key)){if(key==='content-type'&&headers[key]==='multipart/form-data'){continue}
|
return new Promise(function(resolve,reject){let request=new XMLHttpRequest(),key;request.withCredentials=!0;request.open(method,path,!0);for(key in headers){if(headers.hasOwnProperty(key)){if(key==='content-type'&&headers[key]==='multipart/form-data'){continue}
|
||||||
request.setRequestHeader(key,headers[key])}}
|
request.setRequestHeader(key,headers[key])}}
|
||||||
request.onload=function(){if(4===request.readyState&&399>=request.status){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case 'application/json':data=JSON.parse(data);break}
|
request.onload=function(){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case 'application/json':data=JSON.parse(data);break}
|
||||||
let cookieFallback=this.getResponseHeader('X-Fallback-Cookies')||'';if(window.localStorage&&cookieFallback){window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');window.localStorage.setItem('cookieFallback',cookieFallback)}
|
let cookieFallback=this.getResponseHeader('X-Fallback-Cookies')||'';if(window.localStorage&&cookieFallback){window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');window.localStorage.setItem('cookieFallback',cookieFallback)}
|
||||||
resolve(data)}else{reject(new Error(request.statusText))}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,!1)}
|
if(4===request.readyState&&399>=request.status){resolve(data)}else{reject(data)}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,!1)}
|
||||||
request.onerror=function(){reject(new Error("Network Error"))};request.send(params)})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{})},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress)},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress)},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress)},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress)},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let account={get:function(){let path='/account';let payload={};return http.get(path,{'content-type':'application/json',},payload)},create:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')}
|
request.onerror=function(){reject(new Error("Network Error"))};request.send(params)})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{})},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress)},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress)},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress)},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress)},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let account={get:function(){let path='/account';let payload={};return http.get(path,{'content-type':'application/json',},payload)},create:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')}
|
||||||
if(password===undefined){throw new Error('Missing required parameter: "password"')}
|
if(password===undefined){throw new Error('Missing required parameter: "password"')}
|
||||||
let path='/account';let payload={};if(email){payload.email=email}
|
let path='/account';let payload={};if(email){payload.email=email}
|
||||||
|
@ -73,6 +73,11 @@ payload.project=config.project;payload.key=config.key;let query=Object.keys(payl
|
||||||
let path='/avatars/image';let payload={};if(url){payload.url=url}
|
let path='/avatars/image';let payload={};if(url){payload.url=url}
|
||||||
if(width){payload.width=width}
|
if(width){payload.width=width}
|
||||||
if(height){payload.height=height}
|
if(height){payload.height=height}
|
||||||
|
payload.project=config.project;payload.key=config.key;let query=Object.keys(payload).map(key=>key+'='+encodeURIComponent(payload[key])).join('&');return config.endpoint+path+((query)?'?'+query:'')},getInitials:function(name='',width=500,height=500,color='',background=''){let path='/avatars/initials';let payload={};if(name){payload.name=name}
|
||||||
|
if(width){payload.width=width}
|
||||||
|
if(height){payload.height=height}
|
||||||
|
if(color){payload.color=color}
|
||||||
|
if(background){payload.background=background}
|
||||||
payload.project=config.project;payload.key=config.key;let query=Object.keys(payload).map(key=>key+'='+encodeURIComponent(payload[key])).join('&');return config.endpoint+path+((query)?'?'+query:'')},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"')}
|
payload.project=config.project;payload.key=config.key;let query=Object.keys(payload).map(key=>key+'='+encodeURIComponent(payload[key])).join('&');return config.endpoint+path+((query)?'?'+query:'')},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"')}
|
||||||
let path='/avatars/qr';let payload={};if(text){payload.text=text}
|
let path='/avatars/qr';let payload={};if(text){payload.text=text}
|
||||||
if(size){payload.size=size}
|
if(size){payload.size=size}
|
||||||
|
@ -133,7 +138,7 @@ if(write){payload.write=write}
|
||||||
return http.patch(path,{'content-type':'application/json',},payload)},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')}
|
return http.patch(path,{'content-type':'application/json',},payload)},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')}
|
||||||
if(documentId===undefined){throw new Error('Missing required parameter: "documentId"')}
|
if(documentId===undefined){throw new Error('Missing required parameter: "documentId"')}
|
||||||
let path='/database/collections/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.delete(path,{'content-type':'application/json',},payload)},getCollectionLogs:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')}
|
let path='/database/collections/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.delete(path,{'content-type':'application/json',},payload)},getCollectionLogs:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')}
|
||||||
let path='/database/collections/{collectionId}/logs'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};return http.get(path,{'content-type':'application/json',},payload)}};let health={get:function(){let path='/health';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getAntiVirus:function(){let path='/health/anti-virus';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCache:function(){let path='/health/cache';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getDB:function(){let path='/health/db';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueCertificates:function(){let path='/health/queue/certificates';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueFunctions:function(){let path='/health/queue/functions';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueLogs:function(){let path='/health/queue/logs';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueTasks:function(){let path='/health/queue/tasks';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueUsage:function(){let path='/health/queue/usage';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueWebhooks:function(){let path='/health/queue/webhooks';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getStorageLocal:function(){let path='/health/storage/local';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getTime:function(){let path='/health/time';let payload={};return http.get(path,{'content-type':'application/json',},payload)}};let locale={get:function(){let path='/locale';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getContinents:function(){let path='/locale/continents';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountries:function(){let path='/locale/countries';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountriesEU:function(){let path='/locale/countries/eu';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountriesPhones:function(){let path='/locale/countries/phones';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCurrencies:function(){let path='/locale/currencies';let payload={};return http.get(path,{'content-type':'application/json',},payload)}};let projects={list:function(){let path='/projects';let payload={};return http.get(path,{'content-type':'application/json',},payload)},create:function(name,teamId,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(name===undefined){throw new Error('Missing required parameter: "name"')}
|
let path='/database/collections/{collectionId}/logs'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};return http.get(path,{'content-type':'application/json',},payload)}};let health={get:function(){let path='/health';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getAntiVirus:function(){let path='/health/anti-virus';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCache:function(){let path='/health/cache';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getDB:function(){let path='/health/db';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueCertificates:function(){let path='/health/queue/certificates';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueFunctions:function(){let path='/health/queue/functions';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueLogs:function(){let path='/health/queue/logs';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueTasks:function(){let path='/health/queue/tasks';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueUsage:function(){let path='/health/queue/usage';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getQueueWebhooks:function(){let path='/health/queue/webhooks';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getStorageLocal:function(){let path='/health/storage/local';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getTime:function(){let path='/health/time';let payload={};return http.get(path,{'content-type':'application/json',},payload)}};let locale={get:function(){let path='/locale';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getContinents:function(){let path='/locale/continents';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountries:function(){let path='/locale/countries';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountriesEU:function(){let path='/locale/countries/eu';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCountriesPhones:function(){let path='/locale/countries/phones';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getCurrencies:function(){let path='/locale/currencies';let payload={};return http.get(path,{'content-type':'application/json',},payload)},getLanguages:function(){let path='/locale/languages';let payload={};return http.get(path,{'content-type':'application/json',},payload)}};let projects={list:function(){let path='/projects';let payload={};return http.get(path,{'content-type':'application/json',},payload)},create:function(name,teamId,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(name===undefined){throw new Error('Missing required parameter: "name"')}
|
||||||
if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')}
|
if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')}
|
||||||
let path='/projects';let payload={};if(name){payload.name=name}
|
let path='/projects';let payload={};if(name){payload.name=name}
|
||||||
if(teamId){payload.teamId=teamId}
|
if(teamId){payload.teamId=teamId}
|
||||||
|
|
41
app/sdks/console-web/types/index.d.ts
vendored
41
app/sdks/console-web/types/index.d.ts
vendored
|
@ -407,6 +407,30 @@ declare namespace Appwrite {
|
||||||
*/
|
*/
|
||||||
getImage(url: string, width: number, height: number): string;
|
getImage(url: string, width: number, height: number): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get User Initials
|
||||||
|
*
|
||||||
|
* Use this endpoint to show your user initials avatar icon on your website or
|
||||||
|
* app. By default, this route will try to print your logged-in user name or
|
||||||
|
* email initials. You can also overwrite the user name if you pass the 'name'
|
||||||
|
* parameter. If no name is given and no user is logged, an empty avatar will
|
||||||
|
* be returned.
|
||||||
|
*
|
||||||
|
* You can use the color and background params to change the avatar colors. By
|
||||||
|
* default, a random theme will be selected. The random theme will persist for
|
||||||
|
* the user's initials when reloading the same theme will always return for
|
||||||
|
* the same initials.
|
||||||
|
*
|
||||||
|
* @param {string} name
|
||||||
|
* @param {number} width
|
||||||
|
* @param {number} height
|
||||||
|
* @param {string} color
|
||||||
|
* @param {string} background
|
||||||
|
* @throws {Error}
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
getInitials(name: string, width: number, height: number, color: string, background: string): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get QR Code
|
* Get QR Code
|
||||||
*
|
*
|
||||||
|
@ -792,15 +816,26 @@ declare namespace Appwrite {
|
||||||
/**
|
/**
|
||||||
* List Currencies
|
* List Currencies
|
||||||
*
|
*
|
||||||
* List of all currencies, including currency symol, name, plural, and decimal
|
* List of all currencies, including currency symbol, name, plural, and
|
||||||
* digits for all major and minor currencies. You can use the locale header to
|
* decimal digits for all major and minor currencies. You can use the locale
|
||||||
* get the data in a supported language.
|
* header to get the data in a supported language.
|
||||||
*
|
*
|
||||||
* @throws {Error}
|
* @throws {Error}
|
||||||
* @return {Promise}
|
* @return {Promise}
|
||||||
*/
|
*/
|
||||||
getCurrencies(): Promise<object>;
|
getCurrencies(): Promise<object>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List Languages
|
||||||
|
*
|
||||||
|
* List of all languages classified by ISO 639-1 including 2-letter code, name
|
||||||
|
* in English, and name in the respective language.
|
||||||
|
*
|
||||||
|
* @throws {Error}
|
||||||
|
* @return {Promise}
|
||||||
|
*/
|
||||||
|
getLanguages(): Promise<object>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Projects {
|
export interface Projects {
|
||||||
|
|
|
@ -341,7 +341,7 @@ $graph = $this->getParam('graph', false);
|
||||||
<input type="hidden" name="platformId" data-ls-bind="{{platform.$id}}" />
|
<input type="hidden" name="platformId" data-ls-bind="{{platform.$id}}" />
|
||||||
|
|
||||||
<label data-ls-attrs="for=name-{{platform.$id}}">Name <span class="tooltip large" data-tooltip="Choose any name that will help you distinguish between your different apps."><i class="icon-question"></i></span></label>
|
<label data-ls-attrs="for=name-{{platform.$id}}">Name <span class="tooltip large" data-tooltip="Choose any name that will help you distinguish between your different apps."><i class="icon-question"></i></span></label>
|
||||||
<input type="text" class="full-width" data-ls-attrs="id=name-{{platform.$id}}" name="name" required autocomplete="off" data-ls-bind="{{platform.name}}" placeholder="My Web App" />
|
<input type="text" class="full-width" data-ls-attrs="id=name-{{platform.$id}}" name="name" required autocomplete="off" data-ls-bind="{{platform.name}}" placeholder="My iOS App" />
|
||||||
|
|
||||||
<label data-ls-attrs="for=key-{{platform.$id}}">Bundle ID <span class="tooltip large" data-tooltip="You can find your Bundle Identifier in the General tab for your app's primary target in Xcode."><i class="icon-question"></i></span></label>
|
<label data-ls-attrs="for=key-{{platform.$id}}">Bundle ID <span class="tooltip large" data-tooltip="You can find your Bundle Identifier in the General tab for your app's primary target in Xcode."><i class="icon-question"></i></span></label>
|
||||||
<input name="key" type="text" class="margin-bottom" autocomplete="off" placeholder="com.cpmpany.appname" data-ls-bind="{{platform.key}}" required />
|
<input name="key" type="text" class="margin-bottom" autocomplete="off" placeholder="com.cpmpany.appname" data-ls-bind="{{platform.key}}" required />
|
||||||
|
@ -371,7 +371,7 @@ $graph = $this->getParam('graph', false);
|
||||||
<input type="hidden" name="platformId" data-ls-bind="{{platform.$id}}" />
|
<input type="hidden" name="platformId" data-ls-bind="{{platform.$id}}" />
|
||||||
|
|
||||||
<label data-ls-attrs="for=name-{{platform.$id}}">Name <span class="tooltip large" data-tooltip="Choose any name that will help you distinguish between your different apps."><i class="icon-question"></i></span></label>
|
<label data-ls-attrs="for=name-{{platform.$id}}">Name <span class="tooltip large" data-tooltip="Choose any name that will help you distinguish between your different apps."><i class="icon-question"></i></span></label>
|
||||||
<input type="text" class="full-width" data-ls-attrs="id=name-{{platform.$id}}" name="name" required autocomplete="off" data-ls-bind="{{platform.name}}" placeholder="My Web App" />
|
<input type="text" class="full-width" data-ls-attrs="id=name-{{platform.$id}}" name="name" required autocomplete="off" data-ls-bind="{{platform.name}}" placeholder="My Android App" />
|
||||||
|
|
||||||
<label data-ls-attrs="for=key-{{platform.$id}}">Package Name <span class="tooltip large" data-tooltip="Your package name is generally the applicationId in your app-level build.gradle file."><i class="icon-question"></i></span></label>
|
<label data-ls-attrs="for=key-{{platform.$id}}">Package Name <span class="tooltip large" data-tooltip="Your package name is generally the applicationId in your app-level build.gradle file."><i class="icon-question"></i></span></label>
|
||||||
<input name="key" type="text" class="margin-bottom" autocomplete="off" placeholder="com.cpmpany.appname" data-ls-bind="{{platform.key}}" required />
|
<input name="key" type="text" class="margin-bottom" autocomplete="off" placeholder="com.cpmpany.appname" data-ls-bind="{{platform.key}}" required />
|
||||||
|
@ -387,7 +387,7 @@ $graph = $this->getParam('graph', false);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/html" id="template-flutter-android-update">
|
<script type="text/html" id="template-flutter-android-update">
|
||||||
<div data-ls-template="template-ios-update" data-type="script"></div>
|
<div data-ls-template="template-android-update" data-type="script"></div>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/html" id="template-flutter-macos-update">
|
<script type="text/html" id="template-flutter-macos-update">
|
||||||
|
|
|
@ -49,7 +49,7 @@ $scopes = $this->getParam('scopes', []);
|
||||||
<input type="hidden" name="projectId" data-ls-bind="{{router.params.project}}" />
|
<input type="hidden" name="projectId" data-ls-bind="{{router.params.project}}" />
|
||||||
<input type="hidden" name="keyId" data-ls-bind="{{key.$id}}" />
|
<input type="hidden" name="keyId" data-ls-bind="{{key.$id}}" />
|
||||||
|
|
||||||
<label data-ls-attrs="for=name-{{key.$id}}">Name</label>
|
<label data-ls-attrs="for=name-{{key.$id}}">Name <span class="tooltip large" data-tooltip="Choose any name that will help you distinguish between your different API keys."><i class="icon-question"></i></span></label>
|
||||||
<input type="text" class="full-width" data-ls-attrs="id=name-{{key.$id}}" name="name" required autocomplete="off" data-ls-bind="{{key.name}}" />
|
<input type="text" class="full-width" data-ls-attrs="id=name-{{key.$id}}" name="name" required autocomplete="off" data-ls-bind="{{key.name}}" />
|
||||||
|
|
||||||
<label data-ls-attrs="for=scopes-{{key.$id}}">Scopes (<a data-ls-attrs="href={{env.HOME}}/docs/keys" target="_blank" rel="noopener">Learn more</a>)</label>
|
<label data-ls-attrs="for=scopes-{{key.$id}}">Scopes (<a data-ls-attrs="href={{env.HOME}}/docs/keys" target="_blank" rel="noopener">Learn more</a>)</label>
|
||||||
|
@ -144,7 +144,7 @@ $scopes = $this->getParam('scopes', []);
|
||||||
|
|
||||||
<input type="hidden" name="projectId" data-ls-bind="{{router.params.project}}" />
|
<input type="hidden" name="projectId" data-ls-bind="{{router.params.project}}" />
|
||||||
|
|
||||||
<label for="name">Name</label>
|
<label for="name">Name <span class="tooltip large" data-tooltip="Choose any name that will help you distinguish between your different API keys."><i class="icon-question"></i></span></label>
|
||||||
<input type="text" class="full-width" id="name" name="name" required autocomplete="off" />
|
<input type="text" class="full-width" id="name" name="name" required autocomplete="off" />
|
||||||
|
|
||||||
<label for="scopes">Scopes (<a data-ls-attrs="href={{env.HOME}}/docs/keys" target="_blank" rel="noopener">Learn more</a>)</label>
|
<label for="scopes">Scopes (<a data-ls-attrs="href={{env.HOME}}/docs/keys" target="_blank" rel="noopener">Learn more</a>)</label>
|
||||||
|
|
90
composer.lock
generated
90
composer.lock
generated
|
@ -195,16 +195,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "colinmollenhour/credis",
|
"name": "colinmollenhour/credis",
|
||||||
"version": "1.11.1",
|
"version": "1.11.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/colinmollenhour/credis.git",
|
"url": "https://github.com/colinmollenhour/credis.git",
|
||||||
"reference": "bd1da4698ab1918477f9e71e5ff0062b9a345008"
|
"reference": "b8b2bd6b87d2d4df67065f3510efb80d5f9c4e53"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/colinmollenhour/credis/zipball/bd1da4698ab1918477f9e71e5ff0062b9a345008",
|
"url": "https://api.github.com/repos/colinmollenhour/credis/zipball/b8b2bd6b87d2d4df67065f3510efb80d5f9c4e53",
|
||||||
"reference": "bd1da4698ab1918477f9e71e5ff0062b9a345008",
|
"reference": "b8b2bd6b87d2d4df67065f3510efb80d5f9c4e53",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -231,7 +231,7 @@
|
||||||
],
|
],
|
||||||
"description": "Credis is a lightweight interface to the Redis key-value store which wraps the phpredis library when available for better performance.",
|
"description": "Credis is a lightweight interface to the Redis key-value store which wraps the phpredis library when available for better performance.",
|
||||||
"homepage": "https://github.com/colinmollenhour/credis",
|
"homepage": "https://github.com/colinmollenhour/credis",
|
||||||
"time": "2019-11-26T18:09:45+00:00"
|
"time": "2020-06-15T19:25:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/ca-bundle",
|
"name": "composer/ca-bundle",
|
||||||
|
@ -485,12 +485,12 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/guzzle/guzzle.git",
|
"url": "https://github.com/guzzle/guzzle.git",
|
||||||
"reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d"
|
"reference": "23730ab1005ca1e760dcdfbd7d853e6c3f1035d6"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
|
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/23730ab1005ca1e760dcdfbd7d853e6c3f1035d6",
|
||||||
"reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d",
|
"reference": "23730ab1005ca1e760dcdfbd7d853e6c3f1035d6",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -498,7 +498,7 @@
|
||||||
"guzzlehttp/promises": "^1.0",
|
"guzzlehttp/promises": "^1.0",
|
||||||
"guzzlehttp/psr7": "^1.6.1",
|
"guzzlehttp/psr7": "^1.6.1",
|
||||||
"php": ">=5.5",
|
"php": ">=5.5",
|
||||||
"symfony/polyfill-intl-idn": "1.17.0"
|
"symfony/polyfill-intl-idn": "^1.17.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"ext-curl": "*",
|
"ext-curl": "*",
|
||||||
|
@ -544,7 +544,7 @@
|
||||||
"rest",
|
"rest",
|
||||||
"web service"
|
"web service"
|
||||||
],
|
],
|
||||||
"time": "2020-05-25T19:35:05+00:00"
|
"time": "2020-06-06T12:11:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "guzzlehttp/promises",
|
"name": "guzzlehttp/promises",
|
||||||
|
@ -1137,16 +1137,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-intl-idn",
|
"name": "symfony/polyfill-intl-idn",
|
||||||
"version": "v1.17.0",
|
"version": "dev-master",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-intl-idn.git",
|
"url": "https://github.com/symfony/polyfill-intl-idn.git",
|
||||||
"reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
|
"reference": "a57f8161502549a742a63c09f0a604997bf47027"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
|
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a57f8161502549a742a63c09f0a604997bf47027",
|
||||||
"reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
|
"reference": "a57f8161502549a742a63c09f0a604997bf47027",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -1161,6 +1161,10 @@
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.17-dev"
|
"dev-master": "1.17-dev"
|
||||||
|
},
|
||||||
|
"thanks": {
|
||||||
|
"name": "symfony/polyfill",
|
||||||
|
"url": "https://github.com/symfony/polyfill"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -1195,7 +1199,7 @@
|
||||||
"portable",
|
"portable",
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"time": "2020-05-12T16:47:27+00:00"
|
"time": "2020-06-06T08:46:27+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-mbstring",
|
"name": "symfony/polyfill-mbstring",
|
||||||
|
@ -1203,12 +1207,12 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||||
"reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
|
"reference": "7110338d81ce1cbc3e273136e4574663627037a7"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
|
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7110338d81ce1cbc3e273136e4574663627037a7",
|
||||||
"reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
|
"reference": "7110338d81ce1cbc3e273136e4574663627037a7",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -1221,6 +1225,10 @@
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.17-dev"
|
"dev-master": "1.17-dev"
|
||||||
|
},
|
||||||
|
"thanks": {
|
||||||
|
"name": "symfony/polyfill",
|
||||||
|
"url": "https://github.com/symfony/polyfill"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -1254,7 +1262,7 @@
|
||||||
"portable",
|
"portable",
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"time": "2020-05-12T16:47:27+00:00"
|
"time": "2020-06-06T08:46:27+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php72",
|
"name": "symfony/polyfill-php72",
|
||||||
|
@ -1262,12 +1270,12 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-php72.git",
|
"url": "https://github.com/symfony/polyfill-php72.git",
|
||||||
"reference": "f048e612a3905f34931127360bdd2def19a5e582"
|
"reference": "3d9c70ff1b9f6bb618f9954b2f7f760220c2b38a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
|
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/3d9c70ff1b9f6bb618f9954b2f7f760220c2b38a",
|
||||||
"reference": "f048e612a3905f34931127360bdd2def19a5e582",
|
"reference": "3d9c70ff1b9f6bb618f9954b2f7f760220c2b38a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -1277,6 +1285,10 @@
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.17-dev"
|
"dev-master": "1.17-dev"
|
||||||
|
},
|
||||||
|
"thanks": {
|
||||||
|
"name": "symfony/polyfill",
|
||||||
|
"url": "https://github.com/symfony/polyfill"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -1309,7 +1321,7 @@
|
||||||
"portable",
|
"portable",
|
||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"time": "2020-05-12T16:47:27+00:00"
|
"time": "2020-06-06T08:46:27+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "utopia-php/abuse",
|
"name": "utopia-php/abuse",
|
||||||
|
@ -1741,7 +1753,7 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/appwrite/sdk-generator",
|
"url": "https://github.com/appwrite/sdk-generator",
|
||||||
"reference": "a1672098ecc6a08cc400314e373b0d1cd5885f79"
|
"reference": "42b2025652507be19807a2dfb78b442fc5ed4102"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-curl": "*",
|
"ext-curl": "*",
|
||||||
|
@ -1771,7 +1783,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
|
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
|
||||||
"time": "2020-05-30T11:38:32+00:00"
|
"time": "2020-06-16T06:10:50+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "doctrine/instantiator",
|
"name": "doctrine/instantiator",
|
||||||
|
@ -1779,12 +1791,12 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/doctrine/instantiator.git",
|
"url": "https://github.com/doctrine/instantiator.git",
|
||||||
"reference": "a390fde13fc9bc2ffb73340bb8f07201a8e85af8"
|
"reference": "3e7a22aed197e9333cc929e7f6b4300bdae91fcc"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/a390fde13fc9bc2ffb73340bb8f07201a8e85af8",
|
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/3e7a22aed197e9333cc929e7f6b4300bdae91fcc",
|
||||||
"reference": "a390fde13fc9bc2ffb73340bb8f07201a8e85af8",
|
"reference": "3e7a22aed197e9333cc929e7f6b4300bdae91fcc",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -1827,7 +1839,7 @@
|
||||||
"constructor",
|
"constructor",
|
||||||
"instantiate"
|
"instantiate"
|
||||||
],
|
],
|
||||||
"time": "2020-05-30T16:47:47+00:00"
|
"time": "2020-06-15T18:51:04+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "matthiasmullie/minify",
|
"name": "matthiasmullie/minify",
|
||||||
|
@ -3207,12 +3219,12 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||||
"reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9"
|
"reference": "2edd75b8b35d62fd3eeabba73b26b8f1f60ce13d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
|
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/2edd75b8b35d62fd3eeabba73b26b8f1f60ce13d",
|
||||||
"reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
|
"reference": "2edd75b8b35d62fd3eeabba73b26b8f1f60ce13d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -3225,6 +3237,10 @@
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "1.17-dev"
|
"dev-master": "1.17-dev"
|
||||||
|
},
|
||||||
|
"thanks": {
|
||||||
|
"name": "symfony/polyfill",
|
||||||
|
"url": "https://github.com/symfony/polyfill"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -3257,7 +3273,7 @@
|
||||||
"polyfill",
|
"polyfill",
|
||||||
"portable"
|
"portable"
|
||||||
],
|
],
|
||||||
"time": "2020-05-12T16:14:59+00:00"
|
"time": "2020-06-06T08:46:27+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "theseer/tokenizer",
|
"name": "theseer/tokenizer",
|
||||||
|
@ -3305,12 +3321,12 @@
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/twigphp/Twig.git",
|
"url": "https://github.com/twigphp/Twig.git",
|
||||||
"reference": "5c6d49589687b4fe694059cab72da1ff5b7a5ece"
|
"reference": "3beabd64bdc91558b41f140cc4b14925f0416cb2"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/5c6d49589687b4fe694059cab72da1ff5b7a5ece",
|
"url": "https://api.github.com/repos/twigphp/Twig/zipball/3beabd64bdc91558b41f140cc4b14925f0416cb2",
|
||||||
"reference": "5c6d49589687b4fe694059cab72da1ff5b7a5ece",
|
"reference": "3beabd64bdc91558b41f140cc4b14925f0416cb2",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -3362,7 +3378,7 @@
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"templating"
|
"templating"
|
||||||
],
|
],
|
||||||
"time": "2020-05-21T09:55:12+00:00"
|
"time": "2020-06-08T10:41:25+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "webmozart/assert",
|
"name": "webmozart/assert",
|
||||||
|
|
|
@ -21,7 +21,7 @@ class CNAME extends Validator
|
||||||
|
|
||||||
public function getDescription()
|
public function getDescription()
|
||||||
{
|
{
|
||||||
return 'Inavlid CNAME record';
|
return 'Invalid CNAME record';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -85,8 +85,8 @@ class Origin extends Validator
|
||||||
return 'Unsupported platform';
|
return 'Unsupported platform';
|
||||||
}
|
}
|
||||||
|
|
||||||
return 'Inavlid Origin. Register your new client ('.$this->host.') as a new '
|
return 'Invalid Origin. Register your new client ('.$this->host.') as a new '
|
||||||
.$this->platforms[$this->client].' platform on your project console';
|
.$this->platforms[$this->client].' platform on your project console dashboard';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -47,19 +47,19 @@ class OriginTest extends TestCase
|
||||||
$this->assertEquals($validator->isValid('http://example.com:80'), false);
|
$this->assertEquals($validator->isValid('http://example.com:80'), false);
|
||||||
|
|
||||||
$this->assertEquals($validator->isValid('appwrite-ios://com.company.appname'), false);
|
$this->assertEquals($validator->isValid('appwrite-ios://com.company.appname'), false);
|
||||||
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new iOS platform on your project console');
|
$this->assertEquals($validator->getDescription(), 'Invalid Origin. Register your new client (com.company.appname) as a new iOS platform on your project console dashboard');
|
||||||
|
|
||||||
$this->assertEquals($validator->isValid('appwrite-android://com.company.appname'), false);
|
$this->assertEquals($validator->isValid('appwrite-android://com.company.appname'), false);
|
||||||
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new Android platform on your project console');
|
$this->assertEquals($validator->getDescription(), 'Invalid Origin. Register your new client (com.company.appname) as a new Android platform on your project console dashboard');
|
||||||
|
|
||||||
$this->assertEquals($validator->isValid('appwrite-macos://com.company.appname'), false);
|
$this->assertEquals($validator->isValid('appwrite-macos://com.company.appname'), false);
|
||||||
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new macOS platform on your project console');
|
$this->assertEquals($validator->getDescription(), 'Invalid Origin. Register your new client (com.company.appname) as a new macOS platform on your project console dashboard');
|
||||||
|
|
||||||
$this->assertEquals($validator->isValid('appwrite-linux://com.company.appname'), false);
|
$this->assertEquals($validator->isValid('appwrite-linux://com.company.appname'), false);
|
||||||
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new Linux platform on your project console');
|
$this->assertEquals($validator->getDescription(), 'Invalid Origin. Register your new client (com.company.appname) as a new Linux platform on your project console dashboard');
|
||||||
|
|
||||||
$this->assertEquals($validator->isValid('appwrite-windows://com.company.appname'), false);
|
$this->assertEquals($validator->isValid('appwrite-windows://com.company.appname'), false);
|
||||||
$this->assertEquals($validator->getDescription(), 'Inavlid Origin. Register your new client (com.company.appname) as a new Windows platform on your project console');
|
$this->assertEquals($validator->getDescription(), 'Invalid Origin. Register your new client (com.company.appname) as a new Windows platform on your project console dashboard');
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue