1
0
Fork 0
mirror of synced 2024-06-03 03:14:50 +12:00

Updated Linkedin OAuth provider to support Linkedin V2 API

This commit is contained in:
eldadfux 2019-07-06 12:47:48 +03:00
parent 498ecf8a07
commit fcb24af8d9
6 changed files with 114 additions and 176 deletions

View file

@ -2,7 +2,7 @@
"name": "appwrite",
"homepage": "https://appwrite.io/support",
"description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)",
"version": "v1.0.1",
"version": "v1.0.4",
"license": "BSD-3-Clause",
"main": "src/sdk.js",
"repository": {

View file

@ -132,7 +132,7 @@
globalParams.push({key: key, value: value});
};
addGlobalHeader('x-sdk-version', 'appwrite:javascript:v1.0.1');
addGlobalHeader('x-sdk-version', 'appwrite:javascript:v1.0.4');
addGlobalHeader('content-type', '');
/**
@ -268,7 +268,7 @@
let form = document.createElement('form');
form.setAttribute('method', method);
form.setAttribute('action', url);
form.setAttribute('action', config.endpoint + url);
for(let key in params) {
if(params.hasOwnProperty(key)) {
@ -294,8 +294,7 @@
* Get currently logged in user data as JSON object.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
get: function() {
let path = '/account';
@ -311,8 +310,7 @@
* Delete currently logged in user account.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
delete: function() {
let path = '/account';
@ -333,8 +331,7 @@
* @param {string} email
* @param {string} password
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
updateEmail: function(email, password) {
if(email === undefined) {
throw new Error('Missing required parameter: "email"');
@ -361,8 +358,7 @@
*
* @param {string} name
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
updateName: function(name) {
if(name === undefined) {
throw new Error('Missing required parameter: "name"');
@ -386,8 +382,7 @@
* @param {string} password
* @param {string} oldPassword
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
updatePassword: function(password, oldPassword) {
if(password === undefined) {
throw new Error('Missing required parameter: "password"');
@ -413,8 +408,7 @@
* Get currently logged in user preferences key-value object.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getPrefs: function() {
let path = '/account/prefs';
@ -432,8 +426,7 @@
*
* @param {string} prefs
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
updatePrefs: function(prefs) {
if(prefs === undefined) {
throw new Error('Missing required parameter: "prefs"');
@ -455,8 +448,7 @@
* log returns user IP address, location and date and time of log.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getSecurity: function() {
let path = '/account/security';
@ -473,8 +465,7 @@
* devices.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getSessions: function() {
let path = '/account/sessions';
@ -510,8 +501,7 @@
* @param {string} success
* @param {string} failure
* @throws {Error}
* @return {Array}
*/
* @return {null} */
login: function(email, password, success = '', failure = '') {
if(email === undefined) {
throw new Error('Missing required parameter: "email"');
@ -523,14 +513,12 @@
let path = '/auth/login';
return http
.post(path, {'content-type': 'application/json'},
{
'email': email,
'password': password,
'success': success,
'failure': failure
});
return iframe('post', path, {project: config.project,
'email': email,
'password': password,
'success': success,
'failure': failure
});
},
/**
@ -541,8 +529,7 @@
* session secret cookie.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
logout: function() {
let path = '/auth/logout';
@ -561,8 +548,7 @@
*
* @param {string} userId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
logoutBySession: function(userId) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');
@ -589,8 +575,7 @@
* @param {string} email
* @param {string} redirect
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
recovery: function(email, redirect) {
if(email === undefined) {
throw new Error('Missing required parameter: "email"');
@ -628,8 +613,7 @@
* @param {string} passwordA
* @param {string} passwordB
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
recoveryReset: function(userId, token, passwordA, passwordB) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');
@ -690,8 +674,7 @@
* @param {string} success
* @param {string} failure
* @throws {Error}
* @return {Array}
*/
* @return {null} */
register: function(email, password, redirect, name = '', success = '', failure = '') {
if(email === undefined) {
throw new Error('Missing required parameter: "email"');
@ -707,16 +690,14 @@
let path = '/auth/register';
return http
.post(path, {'content-type': 'application/json'},
{
'email': email,
'password': password,
'name': name,
'redirect': redirect,
'success': success,
'failure': failure
});
return iframe('post', path, {project: config.project,
'email': email,
'password': password,
'name': name,
'redirect': redirect,
'success': success,
'failure': failure
});
},
/**
@ -730,8 +711,7 @@
* @param {string} userId
* @param {string} token
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
confirm: function(userId, token) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');
@ -765,8 +745,7 @@
*
* @param {string} redirect
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
confirmResend: function(redirect) {
if(redirect === undefined) {
throw new Error('Missing required parameter: "redirect"');
@ -790,8 +769,7 @@
* @param {string} code
* @param {string} state
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
oauthCallback: function(projectId, provider, code, state = '') {
if(projectId === undefined) {
throw new Error('Missing required parameter: "projectId"');
@ -823,8 +801,7 @@
* @param {string} success
* @param {string} failure
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
oauth: function(provider, success = '', failure = '') {
if(provider === undefined) {
throw new Error('Missing required parameter: "provider"');
@ -856,8 +833,7 @@
* @param {number} height
* @param {number} quality
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getBrowser: function(code, width = 100, height = 100, quality = 100) {
if(code === undefined) {
throw new Error('Missing required parameter: "code"');
@ -887,8 +863,7 @@
* @param {number} height
* @param {number} quality
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getCreditCard: function(code, width = 100, height = 100, quality = 100) {
if(code === undefined) {
throw new Error('Missing required parameter: "code"');
@ -913,8 +888,7 @@
*
* @param {string} url
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getFavicon: function(url) {
if(url === undefined) {
throw new Error('Missing required parameter: "url"');
@ -941,8 +915,7 @@
* @param {number} height
* @param {number} quality
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getFlag: function(code, width = 100, height = 100, quality = 100) {
if(code === undefined) {
throw new Error('Missing required parameter: "code"');
@ -970,8 +943,7 @@
* @param {number} margin
* @param {number} download
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getQR: function(text, size = 400, margin = 1, download = 0) {
if(text === undefined) {
throw new Error('Missing required parameter: "text"');
@ -1005,8 +977,7 @@
* @param {number} offset
* @param {string} orderType
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
listCollections: function(search = '', limit = 25, offset = 0, orderType = 'ASC') {
let path = '/database';
@ -1030,8 +1001,7 @@
* @param {array} write
* @param {array} rules
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
createCollection: function(name, read = [], write = [], rules = []) {
if(name === undefined) {
throw new Error('Missing required parameter: "name"');
@ -1068,8 +1038,7 @@
* @param {number} first
* @param {number} last
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
listDocuments: function(collectionId, filters = [], offset = 0, limit = 50, orderField = '$uid', orderType = 'ASC', orderCast = 'string', search = '', first = 0, last = 0) {
if(collectionId === undefined) {
throw new Error('Missing required parameter: "collectionId"');
@ -1105,8 +1074,7 @@
* @param {string} parentProperty
* @param {string} parentPropertyType
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
createDocument: function(collectionId, data, read = [], write = [], parentDocument = '', parentProperty = '', parentPropertyType = 'assign') {
if(collectionId === undefined) {
throw new Error('Missing required parameter: "collectionId"');
@ -1141,8 +1109,7 @@
* @param {array} write
* @param {array} rules
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
updateCollection: function(collectionId, name, read = [], write = [], rules = []) {
if(collectionId === undefined) {
throw new Error('Missing required parameter: "collectionId"');
@ -1172,8 +1139,7 @@
*
* @param {string} collectionId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
deleteCollection: function(collectionId) {
if(collectionId === undefined) {
throw new Error('Missing required parameter: "collectionId"');
@ -1196,8 +1162,7 @@
* @param {string} collectionId
* @param {string} documentId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getDocument: function(collectionId, documentId) {
if(collectionId === undefined) {
throw new Error('Missing required parameter: "collectionId"');
@ -1225,8 +1190,7 @@
* @param {array} read
* @param {array} write
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
updateDocument: function(collectionId, documentId, data, read = [], write = []) {
if(collectionId === undefined) {
throw new Error('Missing required parameter: "collectionId"');
@ -1261,8 +1225,7 @@
* @param {string} collectionId
* @param {string} documentId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
deleteDocument: function(collectionId, documentId) {
if(collectionId === undefined) {
throw new Error('Missing required parameter: "collectionId"');
@ -1292,8 +1255,7 @@
* supported language.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getLocale: function() {
let path = '/locale';
@ -1310,8 +1272,7 @@
* supported language.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getCountries: function() {
let path = '/locale/countries';
@ -1328,8 +1289,7 @@
* locale header to get the data in supported language.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getCountriesEU: function() {
let path = '/locale/countries/eu';
@ -1346,8 +1306,7 @@
* data in supported language.
*
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getCountriesPhones: function() {
let path = '/locale/countries/phones';
@ -1372,8 +1331,7 @@
* @param {number} offset
* @param {string} orderType
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
listFiles: function(search = '', limit = 25, offset = 0, orderType = 'ASC') {
let path = '/storage/files';
@ -1399,8 +1357,7 @@
* @param {array} write
* @param {string} folderId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
createFile: function(files, read = [], write = [], folderId = '') {
if(files === undefined) {
throw new Error('Missing required parameter: "files"');
@ -1426,8 +1383,7 @@
*
* @param {string} fileId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getFile: function(fileId) {
if(fileId === undefined) {
throw new Error('Missing required parameter: "fileId"');
@ -1449,8 +1405,7 @@
*
* @param {string} fileId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
deleteFile: function(fileId) {
if(fileId === undefined) {
throw new Error('Missing required parameter: "fileId"');
@ -1473,8 +1428,7 @@
*
* @param {string} fileId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getFileDownload: function(fileId) {
if(fileId === undefined) {
throw new Error('Missing required parameter: "fileId"');
@ -1503,8 +1457,7 @@
* @param {string} background
* @param {string} output
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getFilePreview: function(fileId, width = 0, height = 0, quality = 100, background = '', output = '') {
if(fileId === undefined) {
throw new Error('Missing required parameter: "fileId"');
@ -1532,8 +1485,7 @@
* @param {string} fileId
* @param {string} as
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getFileView: function(fileId, as = '') {
if(fileId === undefined) {
throw new Error('Missing required parameter: "fileId"');
@ -1563,8 +1515,7 @@
* @param {number} offset
* @param {string} orderType
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
listTeams: function(search = '', limit = 25, offset = 0, orderType = 'ASC') {
let path = '/teams';
@ -1589,8 +1540,7 @@
* @param {string} name
* @param {array} roles
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
createTeam: function(name, roles = ["owner"]) {
if(name === undefined) {
throw new Error('Missing required parameter: "name"');
@ -1614,8 +1564,7 @@
*
* @param {string} teamId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getTeam: function(teamId) {
if(teamId === undefined) {
throw new Error('Missing required parameter: "teamId"');
@ -1638,8 +1587,7 @@
* @param {string} teamId
* @param {string} name
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
updateTeam: function(teamId, name) {
if(teamId === undefined) {
throw new Error('Missing required parameter: "teamId"');
@ -1666,8 +1614,7 @@
*
* @param {string} teamId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
deleteTeam: function(teamId) {
if(teamId === undefined) {
throw new Error('Missing required parameter: "teamId"');
@ -1689,8 +1636,7 @@
*
* @param {string} teamId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getTeamMembers: function(teamId) {
if(teamId === undefined) {
throw new Error('Missing required parameter: "teamId"');
@ -1727,8 +1673,7 @@
* @param {string} redirect
* @param {string} name
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
createTeamMembership: function(teamId, email, roles, redirect, name = '') {
if(teamId === undefined) {
throw new Error('Missing required parameter: "teamId"');
@ -1767,8 +1712,7 @@
* @param {string} teamId
* @param {string} inviteId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
deleteTeamMembership: function(teamId, inviteId) {
if(teamId === undefined) {
throw new Error('Missing required parameter: "teamId"');
@ -1796,8 +1740,7 @@
* @param {string} inviteId
* @param {string} redirect
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
createTeamMembershipResend: function(teamId, inviteId, redirect) {
if(teamId === undefined) {
throw new Error('Missing required parameter: "teamId"');
@ -1846,8 +1789,7 @@
* @param {string} success
* @param {string} failure
* @throws {Error}
* @return {Array}
*/
* @return {null} */
updateTeamMembershipStatus: function(teamId, inviteId, userId, secret, success = '', failure = '') {
if(teamId === undefined) {
throw new Error('Missing required parameter: "teamId"');
@ -1867,14 +1809,12 @@
let path = '/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId);
return http
.patch(path, {'content-type': 'application/json'},
{
'userId': userId,
'secret': secret,
'success': success,
'failure': failure
});
return iframe('patch', path, {project: config.project,
'userId': userId,
'secret': secret,
'success': success,
'failure': failure
});
}
};
@ -1891,8 +1831,7 @@
* @param {number} offset
* @param {string} orderType
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
listUsers: function(search = '', limit = 25, offset = 0, orderType = 'ASC') {
let path = '/users';
@ -1915,8 +1854,7 @@
* @param {string} password
* @param {string} name
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
createUser: function(email, password, name = '') {
if(email === undefined) {
throw new Error('Missing required parameter: "email"');
@ -1944,8 +1882,7 @@
*
* @param {string} userId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getUser: function(userId) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');
@ -1966,8 +1903,7 @@
*
* @param {string} userId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getUserLogs: function(userId) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');
@ -1988,8 +1924,7 @@
*
* @param {string} userId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getUserPrefs: function(userId) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');
@ -2010,8 +1945,7 @@
*
* @param {string} userId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
getUserSessions: function(userId) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');
@ -2032,8 +1966,7 @@
*
* @param {string} userId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
deleteUserSessions: function(userId) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');
@ -2055,8 +1988,7 @@
* @param {string} userId
* @param {string} sessionId
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
deleteUsersSession: function(userId, sessionId) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');
@ -2083,8 +2015,7 @@
* @param {string} userId
* @param {string} status
* @throws {Error}
* @return {Array}
*/
* @return {Promise} */
updateUserStatus: function(userId, status) {
if(userId === undefined) {
throw new Error('Missing required parameter: "userId"');

View file

@ -1,5 +1,5 @@
(function(window){window.Appwrite=function(){let config={endpoint:'https://appwrite.test/v1',project:'',key:'',locale:'',mode:'',};let setEndpoint=function(endpoint){config.endpoint=endpoint;return this};let setProject=function(value){http.addGlobalHeader('X-Appwrite-Project',value);config.project=value;return this};let setKey=function(value){http.addGlobalHeader('X-Appwrite-Key',value);config.key=value;return this};let setLocale=function(value){http.addGlobalHeader('X-Appwrite-Locale',value);config.locale=value;return this};let setMode=function(value){http.addGlobalHeader('X-Appwrite-Mode',value);config.mode=value;return this};let http=function(document){let globalParams=[],globalHeaders=[];let addParam=function(url,param,value){let a=document.createElement('a'),regex=/(?:\?|&|&)+([^=]+)(?:=([^&]*))*/g;let match,str=[];a.href=url;param=encodeURIComponent(param);while(match=regex.exec(a.search))if(param!==match[1])str.push(match[1]+(match[2]?"="+match[2]:""));str.push(param+(value?"="+encodeURIComponent(value):""));a.search=str.join("&");return a.href};let buildQuery=function(params){let str=[];for(let p in params){if(params.hasOwnProperty(p)){str.push(encodeURIComponent(p)+"="+encodeURIComponent(params[p]))}}
return str.join("&")};let addGlobalHeader=function(key,value){globalHeaders[key]={key:key.toLowerCase(),value:value.toLowerCase()}};let addGlobalParam=function(key,value){globalParams.push({key:key,value:value})};addGlobalHeader('x-sdk-version','appwrite:javascript:v1.0.1');addGlobalHeader('content-type','');let call=function(method,path,headers={},params={},progress=null){let i;path=config.endpoint+path;if(-1===['GET','POST','PUT','DELETE','TRACE','HEAD','OPTIONS','CONNECT','PATCH'].indexOf(method)){throw new Error('var method must contain a valid HTTP method name')}
return str.join("&")};let addGlobalHeader=function(key,value){globalHeaders[key]={key:key.toLowerCase(),value:value.toLowerCase()}};let addGlobalParam=function(key,value){globalParams.push({key:key,value:value})};addGlobalHeader('x-sdk-version','appwrite:javascript:v1.0.4');addGlobalHeader('content-type','');let call=function(method,path,headers={},params={},progress=null){let i;path=config.endpoint+path;if(-1===['GET','POST','PUT','DELETE','TRACE','HEAD','OPTIONS','CONNECT','PATCH'].indexOf(method)){throw new Error('var method must contain a valid HTTP method name')}
if(typeof path!=='string'){throw new Error('var path must be of type string')}
if(typeof headers!=='object'){throw new Error('var headers must be of type object')}
for(i=0;i<globalParams.length;i++){path=addParam(path,globalParams[i].key,globalParams[i].value)}
@ -10,7 +10,7 @@ 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)){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}
resolve(data)}else{reject(new Error(request.statusText))}};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+((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',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 iframe=function(method,url,params){let form=document.createElement('form');form.setAttribute('method',method);form.setAttribute('action',url);for(let key in params){if(params.hasOwnProperty(key)){let hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",params[key]);form.appendChild(hiddenField)}}
request.onerror=function(){reject(new Error("Network Error"))};request.send(params)})};return{'get':function(path,headers={},params={}){return call('GET',path+((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',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 iframe=function(method,url,params){let form=document.createElement('form');form.setAttribute('method',method);form.setAttribute('action',config.endpoint+url);for(let key in params){if(params.hasOwnProperty(key)){let hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",params[key]);form.appendChild(hiddenField)}}
document.body.appendChild(form);return form.submit()};let account={get:function(){let path='/account';return http.get(path,{'content-type':'application/json'},{})},delete:function(){let path='/account';return http.delete(path,{'content-type':'application/json'},{})},updateEmail:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"')}
if(password===undefined){throw new Error('Missing required parameter: "password"')}
let path='/account/email';return http.patch(path,{'content-type':'application/json'},{'email':email,'password':password})},updateName:function(name){if(name===undefined){throw new Error('Missing required parameter: "name"')}
@ -19,7 +19,7 @@ if(oldPassword===undefined){throw new Error('Missing required parameter: "oldPas
let path='/account/password';return http.patch(path,{'content-type':'application/json'},{'password':password,'old-password':oldPassword})},getPrefs:function(){let path='/account/prefs';return http.get(path,{'content-type':'application/json'},{})},updatePrefs:function(prefs){if(prefs===undefined){throw new Error('Missing required parameter: "prefs"')}
let path='/account/prefs';return http.patch(path,{'content-type':'application/json'},{'prefs':prefs})},getSecurity:function(){let path='/account/security';return http.get(path,{'content-type':'application/json'},{})},getSessions:function(){let path='/account/sessions';return http.get(path,{'content-type':'application/json'},{})}};let auth={login:function(email,password,success='',failure=''){if(email===undefined){throw new Error('Missing required parameter: "email"')}
if(password===undefined){throw new Error('Missing required parameter: "password"')}
let path='/auth/login';return http.post(path,{'content-type':'application/json'},{'email':email,'password':password,'success':success,'failure':failure})},logout:function(){let path='/auth/logout';return http.delete(path,{'content-type':'application/json'},{})},logoutBySession:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')}
let path='/auth/login';return iframe('post',path,{project:config.project,'email':email,'password':password,'success':success,'failure':failure})},logout:function(){let path='/auth/logout';return http.delete(path,{'content-type':'application/json'},{})},logoutBySession:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')}
let path='/auth/logout/{userId}'.replace(new RegExp('{userId}','g'),userId);return http.delete(path,{'content-type':'application/json'},{})},recovery:function(email,redirect){if(email===undefined){throw new Error('Missing required parameter: "email"')}
if(redirect===undefined){throw new Error('Missing required parameter: "redirect"')}
let path='/auth/recovery';return http.post(path,{'content-type':'application/json'},{'email':email,'redirect':redirect})},recoveryReset:function(userId,token,passwordA,passwordB){if(userId===undefined){throw new Error('Missing required parameter: "userId"')}
@ -29,7 +29,7 @@ if(passwordB===undefined){throw new Error('Missing required parameter: "password
let path='/auth/recovery/reset';return http.put(path,{'content-type':'application/json'},{'userId':userId,'token':token,'password-a':passwordA,'password-b':passwordB})},register:function(email,password,redirect,name='',success='',failure=''){if(email===undefined){throw new Error('Missing required parameter: "email"')}
if(password===undefined){throw new Error('Missing required parameter: "password"')}
if(redirect===undefined){throw new Error('Missing required parameter: "redirect"')}
let path='/auth/register';return http.post(path,{'content-type':'application/json'},{'email':email,'password':password,'name':name,'redirect':redirect,'success':success,'failure':failure})},confirm:function(userId,token){if(userId===undefined){throw new Error('Missing required parameter: "userId"')}
let path='/auth/register';return iframe('post',path,{project:config.project,'email':email,'password':password,'name':name,'redirect':redirect,'success':success,'failure':failure})},confirm:function(userId,token){if(userId===undefined){throw new Error('Missing required parameter: "userId"')}
if(token===undefined){throw new Error('Missing required parameter: "token"')}
let path='/auth/register/confirm';return http.post(path,{'content-type':'application/json'},{'userId':userId,'token':token})},confirmResend:function(redirect){if(redirect===undefined){throw new Error('Missing required parameter: "redirect"')}
let path='/auth/register/confirm/resend';return http.post(path,{'content-type':'application/json'},{'redirect':redirect})},oauthCallback:function(projectId,provider,code,state=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')}
@ -80,7 +80,7 @@ let path='/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{te
if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"')}
if(userId===undefined){throw new Error('Missing required parameter: "userId"')}
if(secret===undefined){throw new Error('Missing required parameter: "secret"')}
let path='/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return http.patch(path,{'content-type':'application/json'},{'userId':userId,'secret':secret,'success':success,'failure':failure})}};let users={listUsers:function(search='',limit=25,offset=0,orderType='ASC'){let path='/users';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType})},createUser:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')}
let path='/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return iframe('patch',path,{project:config.project,'userId':userId,'secret':secret,'success':success,'failure':failure})}};let users={listUsers:function(search='',limit=25,offset=0,orderType='ASC'){let path='/users';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType})},createUser:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')}
if(password===undefined){throw new Error('Missing required parameter: "password"')}
let path='/users';return http.post(path,{'content-type':'application/json'},{'email':email,'password':password,'name':name})},getUser:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')}
let path='/users/{userId}'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{})},getUserLogs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')}

View file

@ -33,8 +33,8 @@ $cli
Console::success('Fetching API Spec');
$spec = getSSLPage('https://appwrite.io/v1/open-api-2.json');
$spec = getSSLPage('https://appwrite.test/v1/open-api-2.json');
$spec = getSSLPage('https://appwrite.io/v1/open-api-2.json?extensions=1');
$spec = getSSLPage('https://appwrite.test/v1/open-api-2.json?extensions=1');
$clients = [
'php' => [
@ -46,7 +46,7 @@ $cli
'gitUserName' => 'appwrite',
],
'js' => [
'version' => 'v1.0.1',
'version' => 'v1.0.4',
'result' => __DIR__ . '/../sdks/js/',
'gitURL' => 'https://github.com/appwrite/sdk-for-js.git',
'gitRepo' => 'git@github.com:appwrite/sdk-for-js.git',

8
composer.lock generated
View file

@ -57,12 +57,12 @@
"source": {
"type": "git",
"url": "https://github.com/appwrite/sdk-generator.git",
"reference": "e733a59a95dee3c41c608e8844ed77c2bb475deb"
"reference": "9bf19207138736f36bf690601b0ae84a9e3ae9e0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/e733a59a95dee3c41c608e8844ed77c2bb475deb",
"reference": "e733a59a95dee3c41c608e8844ed77c2bb475deb",
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/9bf19207138736f36bf690601b0ae84a9e3ae9e0",
"reference": "9bf19207138736f36bf690601b0ae84a9e3ae9e0",
"shasum": ""
},
"require": {
@ -94,7 +94,7 @@
}
],
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
"time": "2019-07-04 23:09:04"
"time": "2019-07-05 08:05:29"
},
{
"name": "bacon/bacon-qr-code",

View file

@ -15,8 +15,9 @@ class LinkedIn extends OAuth
* @var array
*/
protected $scope = [
'r_basicprofile',
'r_liteprofile',
'r_emailaddress',
'w_member_social',
//'r_fullprofile', //TODO request permission from linkedIn for this scope
];
@ -102,10 +103,16 @@ class LinkedIn extends OAuth
*/
public function getUserEmail(string $accessToken):string
{
$user = $this->getUser($accessToken);
$email = json_decode($this->request('GET', 'https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))', ['Authorization: Bearer ' . urlencode($accessToken)]), true);
if(isset($user['emailAddress'])) {
return $user['emailAddress'];
if(
isset($email['elements']) &&
isset($email['elements'][0]) &&
isset($email['elements'][0]['handle~']) &&
isset($email['elements'][0]['handle~']['emailAddress'])
)
{
return $email['elements'][0]['handle~']['emailAddress'];
}
return '';
@ -120,12 +127,12 @@ class LinkedIn extends OAuth
$user = $this->getUser($accessToken);
$name = '';
if(isset($user['firstName'])) {
$name = $user['firstName'];
if(isset($user['localizedFirstName'])) {
$name = $user['localizedFirstName'];
}
if(isset($user['lastName'])) {
$name = (empty($name)) ? $user['lastName'] : $name . ' ' . $user['lastName'];
if(isset($user['localizedLastName'])) {
$name = (empty($name)) ? $user['localizedLastName'] : $name . ' ' . $user['localizedLastName'];
}
return $name;
@ -138,7 +145,7 @@ class LinkedIn extends OAuth
protected function getUser(string $accessToken)
{
if(empty($this->user)) {
$this->user = json_decode($this->request('GET', 'https://api.linkedin.com/v1/people/~:(id,first-name,last-name,location,headline,industry,num-connections,picture-url,positions,summary,specialties,email-address)?format=json', ['Authorization: Bearer ' . urlencode($accessToken)]), true);
$this->user = json_decode($this->request('GET', 'https://api.linkedin.com/v2/me', ['Authorization: Bearer ' . urlencode($accessToken)]), true);
}
return $this->user;