diff --git a/get_dataset.m b/get_dataset.m index 4cff2579ac23a520891e565d9059e82dbc679105..583e41f4184b0647f5513f7801ef6e296c3fbc1c 100644 --- a/get_dataset.m +++ b/get_dataset.m @@ -1,22 +1,15 @@ function [dd, dat] = get_dataset(provider,dataset, varargin) -if varargin > 0 - options = parse_options(varargin) +if numel(varargin) > 0 + options = parse_options(varargin); else options = ['?limit=1000&offset=0&q=&observations=1&align_periods=1&' ... - 'dimensions={}'] + 'dimensions={}']; end -% https://api.db.nomics.world/v22/series/AMECO/UVGD?limit=1000&offset=0&q=&observations=1&align_periods=1&dimensions=%7B%7D -%url = join(['https://api.db.nomics.world/v22/series/', provider, '/',... -% dataset ]) -%url = url + options -%json = urlread(join(url)) -%save test json -f = fopen("test_dataset.json"); -json = fgets(f); -fclose(f); -dat = jsondecode(json); +default_api_base_url = 'https://api.db.nomics.world/v22/series/'; +url = join([default_api_base_url, provider, '/', dataset, options]); +dat = webread(join(url)); docs = dat.series.docs; -nseries = length(docs); +nseries = dat.dataset.nb_series; nrow = 1; for id = 1:nseries nrow = nrow + length(docs(id).period); @@ -77,27 +70,27 @@ for i = 1:nseries end function options_str = parse_options(arguments) -i = 1 -options = struct() +i = 1; +options = struct(); options.limit = 1000; -options.dimensions = '{}' -options.mask = '' +options.dimensions = '{}'; +options.mask = ''; while i <= length(arguments) if arguments{1} == 'limit' - options.limit = arguments{2} - i = i + 2 + options.limit = arguments{2}; + i = i + 2; elseif arguments{1} == 'dimensions' if ~isempty(options.mask) - error('rdb: you can''t use both option dimension and option mask') + error('rdb: you can''t use both option dimension and option mask'); end elseif arguments =='mask' if options.dimensions ~= '{}' - error('rdb: you can''t use both option dimension and option mask') + error('rdb: you can''t use both option dimension and option mask'); end - options.mask = arguments{2} - i = i+2 + options.mask = arguments{2}; + i = i+2; else - disp_usage() + disp_usage(); end end