Skip to content
Snippets Groups Projects

Resolve "Rest API should follow google guidlines"

Merged Piotr Gawron requested to merge 90-rest-api-should-follow-google-guidlines into master
1 file
+ 10
5
Compare changes
  • Side-by-side
  • Inline
@@ -11,6 +11,7 @@ var request = require('request');
var Alias = require('./map/data/Alias');
var Chemical = require('./map/data/Chemical');
var Comment = require('./map/data/Comment');
var Configuration = require('./Configuration');
var Drug = require('./map/data/Drug');
var ConfigurationType = require('./ConfigurationType');
var IdentifiedElement = require('./map/data/IdentifiedElement');
@@ -84,6 +85,10 @@ ServerConnector.readFile = function(url, description) {
}).then(function(result) {
content = result;
return self.callListeners("onDataLoadStop", description);
}, function(error) {
return self.callListeners("onDataLoadStop", description).then(function() {
return Promise.reject(error);
});
}).then(function() {
return content;
});
@@ -96,7 +101,8 @@ ServerConnector._readFile = function(url) {
reject(error);
} else if (response.statusCode !== 200) {
reject(response);
var error = new Error(url + " rejected with status code: " + response.statusCode);
reject(error);
} else {
resolve(body);
}
@@ -114,7 +120,8 @@ ServerConnector.sendPostRequest = function(url, params) {
reject(error);
} else if (response.statusCode !== 200) {
reject(response);
var error = new Error(url + " rejected with status code: " + response.statusCode);
reject(error);
} else {
resolve(body);
}
@@ -131,7 +138,8 @@ ServerConnector.sendPutRequest = function(url, params) {
if (error) {
reject(error);
} else if (response.statusCode !== 200) {
reject(response);
var error = new Error(url + " rejected with status code: " + response.statusCode);
reject(error);
} else {
resolve(body);
}
@@ -141,14 +149,35 @@ ServerConnector.sendPutRequest = function(url, params) {
ServerConnector.sendDeleteRequest = function(url, params) {
return new Promise(function(resolve, reject) {
request.del({
request({
method : "DELETE",
url : url,
form : params
json : params,
}, function(error, response, body) {
if (error) {
reject(error);
} else if (response.statusCode !== 200) {
var error = new Error(url + " rejected with status code: " + response.statusCode);
reject(error);
} else {
resolve(body);
}
});
});
};
ServerConnector.sendPatchRequest = function(url, params) {
return new Promise(function(resolve, reject) {
request({
method : "PATCH",
url : url,
json : params,
}, function(error, response, body) {
if (error) {
reject(error);
} else if (response.statusCode !== 200) {
reject(response);
var error = new Error(url + " rejected with status code: " + response.statusCode);
reject(error);
} else {
resolve(body);
}
@@ -156,19 +185,25 @@ ServerConnector.sendDeleteRequest = function(url, params) {
});
};
ServerConnector.getToken = function() {
ServerConnector.getToken = function(token) {
if (token !== undefined) {
return Promise.resolve(token);
}
var self = this;
var token = self.getSessionData(null).getToken();
token = self.getSessionData(null).getToken();
if (token === undefined) {
return self.login();
} else {
// if the project is not initialized then check if we can download data
// using current token
if (self.getSessionData().getProject() === null) {
return self.isValidToken(token).then(function(isOk) {
if (isOk) {
return token;
} else {
return self.login();
}
return self.getConfiguration({
token : token
}).then(function() {
return token;
}, function() {
return self.login();
});
} else {
return Promise.resolve(token);
@@ -191,7 +226,7 @@ ServerConnector.getServerBaseUrl = function() {
return this._serverBaseUrl;
};
ServerConnector.createGetParams = function(params) {
ServerConnector.createGetParams = function(params, prefix) {
var sorted = [], key;
for (key in params) {
@@ -203,8 +238,25 @@ ServerConnector.createGetParams = function(params) {
var result = "";
for (var i = 0; i < sorted.length; i++) {
if (params[sorted[i]] !== undefined) {
result += sorted[i] + "=" + params[sorted[i]] + "&";
key = sorted[i];
var value = params[key];
if (prefix !== undefined) {
key = prefix + "." + key;
}
if (value instanceof google.maps.Point) {
value = this.pointToString(value);
} else if (Object.prototype.toString.call(value) === '[object Array]') {
value = this.idsToString(value);
} else if (typeof value === 'string' || value instanceof String || !isNaN(value)) {
} else {
result += this.createGetParams(value, key);
value = undefined;
}
if (value !== undefined && value !== "") {
result += key + "=" + value + "&";
}
}
return result;
@@ -215,195 +267,133 @@ ServerConnector.getApiUrl = function(paramObj) {
var method = paramObj.method;
var params = this.createGetParams(paramObj.params);
var result = this.getApiBaseUrl() + "/" + type + "/" + method;
var result = paramObj.url;
if (result === undefined) {
result = this.getApiBaseUrl() + "/" + type;
}
if (method !== undefined) {
result += "/" + method;
}
if (params !== "") {
result += "?" + params;
}
return result;
};
ServerConnector.getProjectUrl = function(projectId, token) {
ServerConnector.getProjectsUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "project",
method : "getMetaData",
params : {
projectId : projectId,
token : token,
},
type : "projects/" + queryParams.projectId + "/",
params : filterParams,
});
};
ServerConnector.getImageConvertersUrl = function(params) {
return this.getApiUrl({
type : "configuration",
method : "getImageFormats",
params : {
token : params.token,
},
});
};
ServerConnector.getModelConvertersUrl = function(params) {
ServerConnector.getPublicationsUrl = function(queryParams, filterParams) {
filterParams.start = filterParams.start || 0;
filterParams.length = filterParams.length || 10;
return this.getApiUrl({
type : "configuration",
method : "getModelFormats",
params : {
token : params.token,
},
url : this.getModelsUrl(queryParams) + "publications/",
params : filterParams,
});
};
ServerConnector.getPublicationsUrl = function(params) {
var projectId = params.projectId;
var token = params.token;
var start = params.start || 0;
var length = params.length || 10;
ServerConnector.getReferenceGenomeUrl = function(queryParams, filterParams) {
var version = this.getIdOrAsterisk(queryParams.version);
return this.getApiUrl({
type : "project",
method : "getPublications",
params : {
projectId : projectId,
token : token,
start : start,
length : length,
},
type : "genomics/taxonomies/" + queryParams.organism + "/types/" + queryParams.type + "/versions/" + version,
params : filterParams
});
};
ServerConnector.getReferenceGenomeUrl = function(params) {
ServerConnector.loginUrl = function() {
return this.getApiUrl({
type : "genomics",
method : "getReferenceGenome",
params : {
token : params.token,
type : params.type,
version : params.version,
organism : params.organism,
},
type : "/doLogin",
});
};
ServerConnector.loginUrl = function() {
ServerConnector.getSuggestedQueryListUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "user",
method : "login"
url : this.getBioEntitiesUrl(queryParams) + "suggestedQueryList/",
params : filterParams,
});
};
ServerConnector.getSuggestedQueryListUrl = function(params) {
ServerConnector.addCommentUrl = function(queryParams) {
return this.getApiUrl({
type : "project",
method : "getSuggestedQueryList",
params : params,
url : this.getCommentsUrl(queryParams)
});
};
ServerConnector.addCommentUrl = function() {
ServerConnector.addOverlayUrl = function(queryParams) {
return this.getApiUrl({
type : "comment",
method : "addComment",
url : this.getOverlaysUrl(queryParams)
});
};
ServerConnector.addOverlayUrl = function() {
ServerConnector.updateOverlayUrl = function(queryParams) {
return this.getApiUrl({
type : "overlay",
method : "addOverlay",
url : this.getOverlayByIdUrl(queryParams)
});
};
ServerConnector.updateOverlayUrl = function() {
ServerConnector.deleteOverlayUrl = function(queryParams) {
return this.getApiUrl({
type : "overlay",
method : "updateOverlay",
url : this.getOverlayByIdUrl(queryParams),
});
};
ServerConnector.deleteOverlayUrl = function() {
ServerConnector.getOverlaysUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "overlay",
method : "removeOverlay",
url : this.getProjectsUrl(queryParams) + "overlays/",
params : filterParams,
});
};
ServerConnector.getOverlaysUrl = function(projectId, token) {
ServerConnector.getCommentsUrl = function(queryParams, filterParams) {
var modelId = this.getIdOrAsterisk(queryParams.modelId);
var url = this.getProjectsUrl(queryParams) + "comments/models/" + modelId + "/";
if (queryParams.elementType !== undefined) {
if (queryParams.elementType === "ALIAS") {
url += "bioEntities/elements/" + queryParams.elementId;
} else if (queryParams.elementType === "REACTION") {
url += "bioEntities/reactions/" + queryParams.elementId;
} else if (queryParams.elementType === "POINT") {
url += "points/" + queryParams.coordinates;
} else {
throw new Error("Unknown element type: " + queryParams.elementType);
}
}
return this.getApiUrl({
type : "overlay",
method : "getOverlayList",
params : {
projectId : projectId,
token : token,
},
url : url,
params : filterParams,
});
};
ServerConnector.getOverlayTypesUrl = function(params) {
ServerConnector.getOverlayByIdUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "overlay",
method : "getOverlayTypes",
params : {
token : params.token,
},
url : this.getOverlaysUrl(queryParams) + queryParams.overlayId + "/",
params : filterParams,
});
};
ServerConnector.getCommentsUrl = function(params) {
var elementId = params.elementId;
var elementType = params.elementType;
var columns = this.columnsToString(params.columns);
var projectId = params.projectId;
var token = params.token;
ServerConnector.getOverlayElementsUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "comment",
method : "getCommentList",
params : {
projectId : projectId,
columns : columns,
elementId : elementId,
elementType : elementType,
token : token
},
url : this.getModelsUrl(queryParams) + "bioEntities/",
params : filterParams,
});
};
ServerConnector.getOverlayByIdUrl = function(overlayId, projectId, token) {
return this.getApiUrl({
type : "overlay",
method : "getOverlayById",
params : {
projectId : projectId,
token : token,
overlayId : overlayId,
},
});
};
ServerConnector.getOverlayElementsUrl = function(overlayId, projectId, token) {
return this.getApiUrl({
type : "overlay",
method : "getOverlayElements",
params : {
projectId : projectId,
token : token,
overlayId : overlayId,
},
});
};
ServerConnector.getFullOverlayElementUrl = function(queryParams, filterParams) {
ServerConnector.getFullOverlayElementUrl = function(params, token) {
return this.getApiUrl({
type : "overlay",
method : "getOverlayElement",
params : {
projectId : params.projectId,
token : token,
overlayId : params.overlay.getId(),
modelId : params.element.getModelId(),
elementId : params.element.getId(),
elementType : params.element.getType(),
},
url : this.getAliasesUrl(queryParams) + queryParams.id + "/",
params : filterParams,
});
};
ServerConnector.idsToString = function(ids) {
@@ -436,359 +426,149 @@ ServerConnector.columnsToString = function(columns) {
return columns;
};
ServerConnector.getReactionsUrl = function(params) {
var id = this.idsToString(params.ids);
var columns = this.columnsToString(params.columns);
var participantId = this.idsToString(params.participantId);
ServerConnector.getModelsUrl = function(queryParams) {
var modelId = this.getIdOrAsterisk(queryParams.modelId);
var overlayId = queryParams.overlayId;
var url = this.getProjectsUrl(queryParams);
if (overlayId !== undefined) {
url = this.getOverlayByIdUrl(queryParams);
}
return this.getApiUrl({
type : "project",
method : "getReactions",
params : {
projectId : params.projectId,
token : params.token,
columns : columns,
id : id,
participantId : participantId,
},
url : url + "models/" + modelId + "/",
});
};
ServerConnector.getAliasesUrl = function(params) {
var id = this.idsToString(params.ids);
var columns = this.columnsToString(params.columns);
var projectId = params.projectId;
var token = params.token;
ServerConnector.getBioEntitiesUrl = function(queryParams) {
return this.getApiUrl({
type : "project",
method : "getElements",
params : {
projectId : projectId,
columns : columns,
id : id,
token : token
},
url : this.getModelsUrl(queryParams) + "bioEntities/",
});
};
ServerConnector.getConfigurationUrl = function(token) {
var result = this.getApiUrl({
type : "configuration",
method : "getAllValues",
params : {
token : token,
},
});
return result;
ServerConnector.getIdOrAsterisk = function(id) {
if (id === undefined || id === "" || id === null) {
return "*";
} else {
return id;
}
};
ServerConnector.getClosestElementsByCoordinatesUrl = function(params) {
var coordinates = this.pointToString(params.coordinates);
var projectId = params.projectId;
var modelId = params.modelId;
var token = params.token;
var count = params.count;
ServerConnector.getReactionsUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "project",
method : "getClosestElementsByCoordinates",
params : {
projectId : projectId,
coordinates : coordinates,
modelId : modelId,
count : count,
token : token
},
url : this.getBioEntitiesUrl(queryParams) + "reactions/",
params : filterParams,
});
};
ServerConnector.getElementsByQueryUrl = function(params) {
var query = params.query;
var projectId = params.projectId;
var token = params.token;
var perfectMatch = params.perfectMatch;
ServerConnector.getAliasesUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "project",
method : "getElementsByQuery",
params : {
projectId : projectId,
query : query,
perfectMatch : perfectMatch,
token : token
},
url : this.getBioEntitiesUrl(queryParams) + "elements/",
params : filterParams,
});
};
ServerConnector.getDrugsByQueryUrl = function(params) {
var query = params.query;
var projectId = params.projectId;
var token = params.token;
return this.getApiUrl({
type : "drug",
method : "getDrugsByQuery",
params : {
projectId : projectId,
query : query,
token : token
},
ServerConnector.getConfigurationUrl = function(queryParams, filterParams) {
var result = this.getApiUrl({
type : "configuration/",
params : filterParams
});
return result;
};
ServerConnector.getDrugsByTargetUrl = function(params) {
var query = params.query;
var projectId = params.projectId;
var token = params.token;
var columns = this.idsToString(params.columns);
var targetId = params.target.getId();
var targetType = params.target.getType();
ServerConnector.getSearchUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "drug",
method : "getDrugsByTarget",
params : {
projectId : projectId,
query : query,
columns : columns,
token : token,
targetId : targetId,
targetType : targetType,
},
url : this.getModelsUrl(queryParams) + "bioEntities:search",
params : filterParams,
});
};
ServerConnector.getMiRnasByQueryUrl = function(params) {
var query = params.query;
var projectId = params.projectId;
var token = params.token;
ServerConnector.getSearchDrugsUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "miRna",
method : "getMiRnasByQuery",
params : {
projectId : projectId,
query : query,
token : token
},
url : this.getProjectsUrl(queryParams) + "drugs:search",
params : filterParams,
});
};
ServerConnector.getOverlaySourceUrl = function(params) {
var overlayId = params.overlayId;
var projectId = params.projectId;
var token = params.token;
return this.getApiUrl({
type : "overlay",
method : "getOverlaySource",
params : {
overlayId : overlayId,
projectId : projectId,
token : token
},
});
};
ServerConnector.getImageUrl = function(params) {
var projectId = params.projectId;
var token = params.token;
var polygonString = params.polygonString;
var modelId = params.modelId;
var handlerClass = params.handlerClass;
var backgroundOverlayId = params.backgroundOverlayId;
var zoomLevel = params.zoomLevel;
var overlayIds = this.idsToString(params.overlayIds);
ServerConnector.getSearchMiRnasUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "project",
method : "getModelAsImage",
params : {
polygonString : polygonString,
modelId : modelId,
handlerClass : handlerClass,
backgroundOverlayId : backgroundOverlayId,
zoomLevel : zoomLevel,
overlayIds : overlayIds,
projectId : projectId,
token : token,
},
});
};
ServerConnector.getModelPartUrl = function(params) {
var projectId = params.projectId;
var token = params.token;
var polygonString = params.polygonString;
var modelId = params.modelId;
var handlerClass = params.handlerClass;
var backgroundOverlayId = params.backgroundOverlayId;
var zoomLevel = params.zoomLevel;
var overlayIds = this.idsToString(params.overlayIds);
return this.getApiUrl({
type : "project",
method : "getModelAsModelFile",
params : {
polygonString : polygonString,
modelId : modelId,
handlerClass : handlerClass,
backgroundOverlayId : backgroundOverlayId,
zoomLevel : zoomLevel,
overlayIds : overlayIds,
projectId : projectId,
token : token,
},
url : this.getProjectsUrl(queryParams) + "miRnas:search",
params : filterParams,
});
};
ServerConnector.getProjectSourceUrl = function(params) {
var projectId = params.projectId;
var token = params.token;
ServerConnector.getSearchChemicalsUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "project",
method : "getProjectSource",
params : {
projectId : projectId,
token : token
},
url : this.getProjectsUrl(queryParams) + "chemicals:search",
params : filterParams,
});
};
ServerConnector.getMiRnasByTargetUrl = function(params) {
var query = params.query;
var projectId = params.projectId;
var token = params.token;
var columns = this.idsToString(params.columns);
var targetId = params.target.getId();
var targetType = params.target.getType();
ServerConnector.getOverlaySourceUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "miRna",
method : "getMiRnasByTarget",
params : {
projectId : projectId,
query : query,
columns : columns,
token : token,
targetId : targetId,
targetType : targetType,
},
url : this.getOverlaysUrl(queryParams) + queryParams.overlayId + ":downloadSource",
params : filterParams
});
};
ServerConnector.getChemicalsByQueryUrl = function(params) {
var query = params.query;
var projectId = params.projectId;
var token = params.token;
ServerConnector.getImageUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "chemical",
method : "getChemicalsByQuery",
params : {
projectId : projectId,
query : query,
token : token
},
url : this.getProjectsUrl(queryParams) + "models/" + queryParams.modelId + ":downloadImage",
params : filterParams,
});
};
ServerConnector.getChemicalsByTargetUrl = function(params) {
var query = params.query;
var projectId = params.projectId;
var token = params.token;
var columns = this.idsToString(params.columns);
var targetId = params.target.getId();
var targetType = params.target.getType();
ServerConnector.getModelPartUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "chemical",
method : "getChemicalsByTarget",
params : {
projectId : projectId,
query : query,
columns : columns,
token : token,
targetId : targetId,
targetType : targetType,
},
url : this.getProjectsUrl(queryParams) + "models/" + queryParams.modelId + ":downloadModel",
params : filterParams,
});
};
ServerConnector.getUserUrl = function(params) {
var userId = params.userId;
var token = params.token;
ServerConnector.getProjectSourceUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "user",
method : "getUser",
params : {
userId : userId,
token : token,
},
type : "projects/" + queryParams.projectId + ":downloadSource",
params : filterParams
});
};
ServerConnector.isValidTokenUrl = function(params) {
var token = params.token;
ServerConnector.getUserUrl = function(queryParams, filterParams) {
return this.getApiUrl({
type : "user",
method : "tokenStatus",
params : {
token : token,
},
type : "users/",
method : queryParams.login,
params : filterParams,
});
};
ServerConnector.getConfigurationParam = function(paramId) {
ServerConnector.getConfiguration = function(params) {
if (params === undefined) {
params = {};
}
var self = this;
if (paramId === undefined) {
return Promise.reject(new Error("Invalid param identifier"));
} else if (self._configurationParam[paramId] !== undefined) {
return Promise.resolve(self._configurationParam[paramId]);
} else {
return self.getToken().then(function(token) {
return self.readFile(self.getConfigurationUrl(token));
}).then(function(content) {
var configs = JSON.parse(content);
for (var i = 0; i < configs.length; i++) {
var conf = configs[i];
var type = conf.type;
var value = conf.value;
self._configurationParam[type] = value;
}
self._configurationParam[ConfigurationType.LEGEND_FILES] = [];
if (self._configurationParam["LENGEND_FILE_1"] !== undefined) {
self._configurationParam[ConfigurationType.LEGEND_FILES].push(self._configurationParam["LENGEND_FILE_1"]);
}
if (self._configurationParam["LENGEND_FILE_2"] !== undefined) {
self._configurationParam[ConfigurationType.LEGEND_FILES].push(self._configurationParam["LENGEND_FILE_2"]);
}
if (self._configurationParam["LENGEND_FILE_3"] !== undefined) {
self._configurationParam[ConfigurationType.LEGEND_FILES].push(self._configurationParam["LENGEND_FILE_3"]);
}
if (self._configurationParam["LENGEND_FILE_4"] !== undefined) {
self._configurationParam[ConfigurationType.LEGEND_FILES].push(self._configurationParam["LENGEND_FILE_4"]);
}
if (self._configurationParam[paramId] === undefined) {
Promise.reject(new Error("Cannot find param config: " + paramId));
}
return self._configurationParam[paramId];
if (this._configuration === undefined) {
return self.readFile(self.getConfigurationUrl()).then(function(content) {
self._configuration = new Configuration(JSON.parse(content));
return Promise.resolve(self._configuration);
});
} else {
return Promise.resolve(self._configuration);
}
};
ServerConnector.getConfigurationParam = function(paramId) {
var self = this;
return self.getConfiguration().then(function(configuration) {
return configuration.getOption(paramId);
});
};
ServerConnector.getProject = function(projectId) {
var queryParams = {};
var filterParams = {};
var project;
var self = this;
return self.getProjectId(projectId).then(function(result) {
projectId = result;
return self.getToken();
}).then(function(token) {
return self.readFile(self.getProjectUrl(projectId, token));
queryParams.projectId = result;
return self.readFile(self.getProjectsUrl(queryParams, filterParams));
}).then(function(content) {
project = new Project(content);
return self.getOverlays(projectId);
@@ -803,21 +583,21 @@ ServerConnector.getLoggedUser = function() {
if (self._loggedUser !== undefined) {
return Promise.resolve(self._loggedUser);
} else {
return self.getUser().then(function(user) {
return self.getUser(self.getSessionData().getLogin()).then(function(user) {
self._loggedUser = user;
return self._loggedUser;
});
}
};
ServerConnector.getUser = function(userId) {
ServerConnector.getUser = function(login) {
var self = this;
return self.getToken().then(function(token) {
return self.readFile(self.getUserUrl({
token : token,
userId : userId
}));
}).then(function(content) {
var queryParams = {
login : login,
};
var filterParams = {};
return self.readFile(self.getUserUrl(queryParams, filterParams)).then(function(content) {
var obj = JSON.parse(content);
return new User(obj);
});
@@ -825,12 +605,12 @@ ServerConnector.getUser = function(userId) {
ServerConnector.getOverlays = function(projectId) {
var self = this;
var queryParams = {};
var filterParams = {};
return new Promise(function(resolve, reject) {
self.getProjectId(projectId).then(function(result) {
projectId = result;
return self.getToken();
}).then(function(token) {
return self.readFile(self.getOverlaysUrl(projectId, token));
queryParams.projectId = result;
return self.readFile(self.getOverlaysUrl(queryParams, filterParams));
}).then(function(content) {
var arr = JSON.parse(content);
var result = [];
@@ -848,14 +628,14 @@ ServerConnector.getOverlayElements = function(overlayId, projectId) {
if (overlayId === undefined) {
throw new Error("Layout id must be defined");
}
var token = null;
return self.getToken().then(function(result) {
token = result;
return self.getProjectId(projectId);
}).then(function(result) {
projectId = result;
return self.readFile(self.getOverlayElementsUrl(overlayId, projectId, token));
var queryParams = {
overlayId : overlayId,
modelId : "*",
};
var filterParams = {};
return self.getProjectId(projectId).then(function(result) {
queryParams.projectId = result;
return self.readFile(self.getOverlayElementsUrl(queryParams, filterParams));
}).then(function(content) {
var arr = JSON.parse(content);
var result = [];
@@ -875,14 +655,17 @@ ServerConnector.getOverlayElements = function(overlayId, projectId) {
ServerConnector.getFullOverlayElement = function(params) {
var self = this;
var token = null;
return self.getToken().then(function(result) {
token = result;
return self.getProjectId(params.projectId);
}).then(function(result) {
params.projectId = result;
return self.readFile(self.getFullOverlayElementUrl(params, token));
var queryParams = {
overlayId : params.overlay.getId(),
modelId : params.element.getModelId(),
id : params.element.getId(),
};
var filterParams = {};
return self.getProjectId(params.projectId).then(function(result) {
queryParams.projectId = result;
return self.readFile(self.getFullOverlayElementUrl(queryParams, filterParams));
}).then(function(content) {
var element = JSON.parse(content);
var result = null;
@@ -920,13 +703,15 @@ ServerConnector.getMaxSearchDistance = function() {
return this.getConfigurationParam(ConfigurationType.SEARCH_DISTANCE);
};
ServerConnector.getOverlayById = function(layoutId, projectId) {
ServerConnector.getOverlayById = function(overlayId, projectId) {
var self = this;
var queryParams = {
overlayId : overlayId
};
var filterParams = {};
return self.getProjectId(projectId).then(function(data) {
projectId = data;
return self.getToken();
}).then(function(token) {
return self.readFile(self.getOverlayByIdUrl(layoutId, projectId, token));
queryParams.projectId = data;
return self.readFile(self.getOverlayByIdUrl(queryParams, filterParams));
}).then(function(content) {
return new LayoutData(JSON.parse(content));
});
@@ -934,12 +719,15 @@ ServerConnector.getOverlayById = function(layoutId, projectId) {
ServerConnector.getReactions = function(params) {
var self = this;
var queryParams = {};
var filterParams = {
id : params.ids,
columns : params.columns,
participantId : params.participantId,
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getReactionsUrl(params));
queryParams.projectId = result;
return self.readFile(self.getReactionsUrl(queryParams, filterParams));
}).then(function(content) {
var array = JSON.parse(content);
var result = [];
@@ -952,16 +740,14 @@ ServerConnector.getReactions = function(params) {
ServerConnector.getAliases = function(aliasIds, projectId, columns) {
var self = this;
var queryParams = {};
var filterParams = {
id : aliasIds,
columns : columns
};
return self.getProjectId(projectId).then(function(result) {
projectId = result;
return self.getToken();
}).then(function(token) {
return self.readFile(self.getAliasesUrl({
ids : aliasIds,
projectId : projectId,
token : token,
columns : columns
}));
queryParams.projectId = result;
return self.readFile(self.getAliasesUrl(queryParams, filterParams));
}).then(function(content) {
var array = JSON.parse(content);
var result = [];
@@ -979,12 +765,16 @@ ServerConnector.getLightComments = function(params) {
ServerConnector.getComments = function(params) {
var self = this;
var queryParams = {
elementId : params.elementId,
elementType : params.elementType,
};
var filterParams = {
columns : params.columns
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getCommentsUrl(params));
queryParams.projectId = result;
return self.readFile(self.getCommentsUrl(queryParams, filterParams));
}).then(function(content) {
var array = JSON.parse(content);
var result = [];
@@ -1011,12 +801,16 @@ ServerConnector.getSessionData = function(project) {
ServerConnector.getClosestElementsByCoordinates = function(params) {
var self = this;
var queryParams = {
modelId : params.modelId
};
var filterParams = {
coordinates : params.coordinates,
count : params.count,
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getClosestElementsByCoordinatesUrl(params));
queryParams.projectId = result;
return self.readFile(self.getSearchUrl(queryParams, filterParams));
}).then(function(content) {
var array = JSON.parse(content);
var result = [];
@@ -1029,55 +823,39 @@ ServerConnector.getClosestElementsByCoordinates = function(params) {
ServerConnector.login = function(login, password) {
var self = this;
return new Promise(function(resolve, reject) {
var params = {};
if (login !== undefined) {
params.login = login;
params.password = password;
} else {
params.login = "anonymous";
}
return self.sendPostRequest(self.loginUrl(), params).then(function(content) {
var obj = JSON.parse(content);
var token = obj.id;
if (token === undefined) {
reject(obj.error);
} else {
self.getSessionData().setToken(token);
resolve(token);
}
});
});
};
ServerConnector.isValidToken = function(token) {
var self = this;
return new Promise(function(resolve) {
return self.readFile(self.isValidTokenUrl({
token : token
})).then(function(content) {
var obj = JSON.parse(content);
resolve(obj.error === undefined);
}, function() {
resolve(false);
});
var params = {};
if (login !== undefined) {
params.login = login;
params.password = password;
} else {
params.login = "anonymous";
}
return self.sendPostRequest(self.loginUrl(), params).then(function() {
self.getSessionData().setLogin(params.login);
return Promise.resolve(self.getSessionData().getToken());
});
};
ServerConnector.logout = function() {
var self = this;
self.getSessionData().setToken(undefined);
self.getSessionData().setLogin(undefined);
return Promise.resolve();
};
ServerConnector.getElementsByQuery = function(params) {
var self = this;
var queryParams = {
modelId : params.modelId
};
var filterParams = {
query : params.query,
perfectMatch : params.perfectMatch,
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getElementsByQueryUrl(params));
queryParams.projectId = result;
return self.readFile(self.getSearchUrl(queryParams, filterParams));
}).then(function(content) {
var array = JSON.parse(content);
var result = [];
@@ -1090,12 +868,13 @@ ServerConnector.getElementsByQuery = function(params) {
ServerConnector.getDrugsByQuery = function(params) {
var self = this;
var queryParams = {};
var filterParams = {
query : params.query
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getDrugsByQueryUrl(params));
queryParams.projectId = result;
return self.readFile(self.getSearchDrugsUrl(queryParams, filterParams));
}).then(function(content) {
var array = JSON.parse(content);
var result = [];
@@ -1108,12 +887,13 @@ ServerConnector.getDrugsByQuery = function(params) {
ServerConnector.getMiRnasByQuery = function(params) {
var self = this;
var queryParams = {};
var filterParams = {
query : params.query
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getMiRnasByQueryUrl(params));
queryParams.projectId = result;
return self.readFile(self.getSearchMiRnasUrl(queryParams, filterParams));
}).then(function(content) {
var array = JSON.parse(content);
var result = [];
@@ -1126,12 +906,13 @@ ServerConnector.getMiRnasByQuery = function(params) {
ServerConnector.getChemicalsByQuery = function(params) {
var self = this;
var queryParams = {};
var filterParams = {
query : params.query
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getChemicalsByQueryUrl(params));
queryParams.projectId = result;
return self.readFile(self.getSearchChemicalsUrl(queryParams, filterParams));
}).then(function(content) {
var array = JSON.parse(content);
var result = [];
@@ -1144,59 +925,67 @@ ServerConnector.getChemicalsByQuery = function(params) {
ServerConnector.getOverlaySourceDownloadUrl = function(params) {
var self = this;
var queryParams = {
overlayId : params.overlayId
};
var filterParams = {};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.getOverlaySourceUrl(params);
queryParams.projectId = result;
return self.getOverlaySourceUrl(queryParams, filterParams);
});
};
ServerConnector.getImageDownloadUrl = function(params) {
var self = this;
var queryParams = {
projectId : params.projectId,
modelId : params.modelId,
};
var filterParams = {
token : params.token,
polygonString : params.polygonString,
handlerClass : params.handlerClass,
backgroundOverlayId : params.backgroundOverlayId,
zoomLevel : params.zoomLevel,
overlayIds : this.idsToString(params.overlayIds),
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.getImageUrl(params);
queryParams.projectId = result;
return self.getImageUrl(queryParams, filterParams);
});
};
ServerConnector.getModelDownloadUrl = function(params) {
var self = this;
var queryParams = {
projectId : params.projectId,
modelId : params.modelId,
};
var filterParams = {
token : params.token,
polygonString : params.polygonString,
handlerClass : params.handlerClass,
backgroundOverlayId : params.backgroundOverlayId,
zoomLevel : params.zoomLevel,
overlayIds : this.idsToString(params.overlayIds),
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.getModelPartUrl(params);
queryParams.projectId = result;
return self.getModelPartUrl(queryParams, filterParams);
});
};
ServerConnector.getImageConverters = function(params) {
if (params === undefined) {
params = {};
}
ServerConnector.getImageConverters = function() {
var self = this;
return self.getToken().then(function(token) {
params.token = token;
return self.readFile(self.getImageConvertersUrl(params));
}).then(function(content) {
return JSON.parse(content);
return self.getConfiguration().then(function(configuration) {
return configuration.getImageConverters();
});
};
ServerConnector.getModelConverters = function(params) {
if (params === undefined) {
params = {};
}
ServerConnector.getModelConverters = function() {
var self = this;
return self.getToken().then(function(token) {
params.token = token;
return self.readFile(self.getModelConvertersUrl(params));
}).then(function(content) {
return JSON.parse(content);
return self.getConfiguration().then(function(configuration) {
return configuration.getModelConverters();
});
};
@@ -1204,25 +993,25 @@ ServerConnector.getProjectSourceDownloadUrl = function(params) {
if (params === undefined) {
params = {};
}
var queryParams = {};
var filterParams = {};
var self = this;
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.getProjectSourceUrl(params);
queryParams.projectId = result;
return self.getProjectSourceUrl(queryParams, filterParams);
});
};
ServerConnector.getDrugNamesByTarget = function(params) {
var self = this;
params.columns = [ "name" ];
var queryParams = {};
var filterParams = {
columns : [ "name" ],
target : params.target.getType() + ":" + params.target.getId()
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getDrugsByTargetUrl(params));
queryParams.projectId = result;
return self.readFile(self.getSearchDrugsUrl(queryParams, filterParams));
}).then(function(content) {
var result = [];
var object = JSON.parse(content);
@@ -1235,13 +1024,14 @@ ServerConnector.getDrugNamesByTarget = function(params) {
ServerConnector.getMiRnaNamesByTarget = function(params) {
var self = this;
params.columns = [ "name" ];
var queryParams = {};
var filterParams = {
columns : [ "name" ],
target : params.target.getType() + ":" + params.target.getId()
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getMiRnasByTargetUrl(params));
queryParams.projectId = result;
return self.readFile(self.getSearchMiRnasUrl(queryParams, filterParams));
}).then(function(content) {
var result = [];
var object = JSON.parse(content);
@@ -1254,13 +1044,14 @@ ServerConnector.getMiRnaNamesByTarget = function(params) {
ServerConnector.getChemicalNamesByTarget = function(params) {
var self = this;
params.columns = [ "name" ];
var queryParams = {};
var filterParams = {
columns : [ "name" ],
target : params.target.getType() + ":" + params.target.getId()
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getChemicalsByTargetUrl(params));
queryParams.projectId = result;
return self.readFile(self.getSearchChemicalsUrl(queryParams, filterParams));
}).then(function(content) {
var result = [];
var object = JSON.parse(content);
@@ -1273,82 +1064,70 @@ ServerConnector.getChemicalNamesByTarget = function(params) {
ServerConnector.addComment = function(params) {
var self = this;
return new Promise(function(resolve, reject) {
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
params.coordinates = self.pointToString(params.coordinates);
return self.sendPostRequest(self.addCommentUrl(), params);
}).then(function(content) {
var response = JSON.parse(content);
if (response.status === "OK") {
resolve();
} else {
reject(response);
}
});
var queryParams = {
elementId : params.elementId,
elementType : params.elementType,
coordinates : self.pointToString(params.coordinates),
modelId : params.modelId,
};
var filterParams = params;
delete filterParams.elementId;
delete filterParams.elementType;
if (queryParams.elementType === "POINT") {
delete filterParams.coordinates;
} else {
filterParams.coordinates = self.pointToString(params.coordinates);
}
delete filterParams.modelId;
return self.getProjectId(params.projectId).then(function(result) {
queryParams.projectId = result;
return self.sendPostRequest(self.addCommentUrl(queryParams), filterParams);
}).then(function(content) {
var response = JSON.parse(content);
return new Comment(response);
});
};
ServerConnector.addOverlay = function(params) {
var self = this;
return new Promise(function(resolve, reject) {
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.sendPostRequest(self.addOverlayUrl(), params);
}).then(function(content) {
var response = JSON.parse(content);
if (response.status === "OK") {
resolve(response.overlayId);
} else {
reject(response);
}
});
var queryParams = {};
return self.getProjectId(params.projectId).then(function(result) {
queryParams.projectId = result;
return self.sendPostRequest(self.addOverlayUrl(queryParams), params);
}).then(function(content) {
return new LayoutData(JSON.parse(content));
});
};
ServerConnector.updateOverlay = function(params) {
var self = this;
return new Promise(function(resolve, reject) {
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.sendPostRequest(self.updateOverlayUrl(), params);
}).then(function(content) {
var response = JSON.parse(content);
if (response.status === "OK") {
resolve();
} else {
reject(response.reason);
}
});
var queryParams = {
overlayId : params.overlayId
};
var filterParams = {
overlay : {}
};
if (params.name !== undefined) {
filterParams.overlay.name = params.name;
}
if (params.description !== undefined) {
filterParams.overlay.description = params.description;
}
return self.getProjectId(params.projectId).then(function(result) {
queryParams.projectId = result;
return self.sendPatchRequest(self.updateOverlayUrl(queryParams), filterParams);
});
};
ServerConnector.removeOverlay = function(params) {
var self = this;
return new Promise(function(resolve, reject) {
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.sendPostRequest(self.deleteOverlayUrl(), params);
}).then(function(content) {
var response = JSON.parse(content);
if (response.status === "OK") {
resolve();
} else {
reject(response);
}
});
var queryParams = {
overlayId : params.overlayId
};
var filterParams = {};
return self.getProjectId(params.projectId).then(function(result) {
queryParams.projectId = result;
return self.sendDeleteRequest(self.deleteOverlayUrl(queryParams), filterParams);
});
};
@@ -1356,12 +1135,9 @@ ServerConnector.getSuggestedQueryList = function(projectId) {
var self = this;
return self.getProjectId(projectId).then(function(result) {
projectId = result;
return self.getToken();
}).then(function(token) {
return self.sendPostRequest(self.getSuggestedQueryListUrl(), {
projectId : projectId,
token : token
});
return self.readFile(self.getSuggestedQueryListUrl({
projectId : projectId
}));
}).then(function(content) {
return JSON.parse(content);
});
@@ -1369,17 +1145,8 @@ ServerConnector.getSuggestedQueryList = function(projectId) {
ServerConnector.getOverlayTypes = function() {
var self = this;
return self.getToken().then(function(token) {
return self.readFile(self.getOverlayTypesUrl({
token : token
}));
}).then(function(content) {
var obj = JSON.parse(content);
var result = [];
for (var i = 0; i < obj.length; i++) {
result.push(obj[i].name);
}
return result;
return self.getConfiguration().then(function(configuration) {
return configuration.getOverlayTypes();
});
};
@@ -1388,12 +1155,15 @@ ServerConnector.getPublications = function(params) {
if (params === undefined) {
params = {};
}
var queryParams = {};
var filterParams = {
start : params.start,
length : params.length,
};
return self.getProjectId(params.projectId).then(function(result) {
params.projectId = result;
return self.getToken();
}).then(function(token) {
params.token = token;
return self.readFile(self.getPublicationsUrl(params));
queryParams.projectId = result;
return self.readFile(self.getPublicationsUrl(queryParams, filterParams));
}).then(function(content) {
return JSON.parse(content);
});
@@ -1401,10 +1171,8 @@ ServerConnector.getPublications = function(params) {
ServerConnector.getReferenceGenome = function(params) {
var self = this;
return self.getToken().then(function(token) {
params.token = token;
return self.readFile(self.getReferenceGenomeUrl(params));
}).then(function(content) {
var filterParams = {};
return self.readFile(self.getReferenceGenomeUrl(params, filterParams)).then(function(content) {
return new ReferenceGenome(JSON.parse(content));
});
};
Loading