-
Notifications
You must be signed in to change notification settings - Fork 0
/
load_model.m
72 lines (61 loc) · 2.38 KB
/
load_model.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
function output = load_model(varargin)
% Load model from BrainSTEM
% Example calls:
% output = load_model('app','stem','model','dataset');
% output = load_model('app','stem','model','project');
% output = load_model('app','resources','model','consumable');
% output = load_model('app','personal_attributes','model','physicalenvironment')
p = inputParser;
addParameter(p,'portal','private',@ischar); % private, public, admin
addParameter(p,'app','',@ischar); % stem, modules, personal_attributes, resources, taxonomies, attributes, users
addParameter(p,'model','dataset',@ischar); % project, subject, dataset, collection, ...
addParameter(p,'settings',load_settings,@isstruct);
addParameter(p,'filter',{},@iscell); % Filter parameters
addParameter(p,'sort',{},@iscell); % Sorting parameters
addParameter(p,'include',{},@iscell); % Embed relational fields
parse(p,varargin{:})
parameters = p.Results;
if isempty(parameters.app)
parameters.app = get_app_from_model(parameters.model);
end
% Setting query parameters
query_parameters = '';
% Filter query parameters
if ~isempty(parameters.filter)
for i=1:2:floor(numel(parameters.filter)/2)
if isempty(query_parameters)
prefix = '?';
else
prefix = '&';
end
query_parameters = [query_parameters,prefix,'filter{',parameters.filter{i}, '}=',urlencode(parameters.filter{i+1})];
end
end
% Sort query parameters
if ~isempty(parameters.sort)
for i=1:numel(parameters.sort)
if isempty(query_parameters)
prefix = '?';
else
prefix = '&';
end
query_parameters = [query_parameters,prefix,'sort[]=',parameters.sort{i}];
end
end
% Embed relational fields?
if ~isempty(parameters.include)
for i=1:numel(parameters.include)
if isempty(query_parameters)
prefix = '?';
else
prefix = '&';
end
query_parameters = [query_parameters,prefix,'include[]=',parameters.include{i},'.*'];
end
end
% Options
options = weboptions('HeaderFields',{'Authorization',['Bearer ' parameters.settings.token]},'ContentType','json','ArrayFormat','json','RequestMethod','get');
% Defining the endpoint url
url = [parameters.settings.url,'api/',parameters.portal,'/',parameters.app,'/',parameters.model,'/',query_parameters];
% Sending request to the REST API
output = webread(url,options);