diff --git a/README.md b/README.md index 634704408984f0e218d49fa811d01ea3b7935070..f93cf7060920d898b1b1ac667987697e66afb784 100644 --- a/README.md +++ b/README.md @@ -33,14 +33,14 @@ You are then ready to go. A full documentation will come soon. ### Fetch one time series by ID First, let's assume that we know which series we want to download. A series identifier (ID) is defined by three values, formatted like this: `provider_code/dataset_code/series_code`. -The `fetch_series` function is used to construct the cell array. +The `mdbnomics` function is used to construct the cell array. For example, to fetch the time series `EA19.1.0.0.0.ZUTN` from the [\"Unemployment rate\" [ZUTN] dataset](https://db.nomics.world/AMECO/ZUTN) belonging to the [AMECO provider](https://db.nomics.world/AMECO). Example: - >> df_id = fetch_series('series_ids', 'AMECO/ZUTN/EA19.1.0.0.0.ZUTN'); + >> df_id = mdbnomics('series_ids', 'AMECO/ZUTN/EA19.1.0.0.0.ZUTN'); The returned data is stored in the `df_id` variable. Its type is a cell array. To display the first 3 rows of the array as a table (including the column headers), type: @@ -77,14 +77,14 @@ Followed by dimensions columns, corresponding to the dimensions of the dataset: ### Fetch two time series by ID Again, let's assume that we know which series we want to download. -We can reuse the `fetch_series` function, this time with two series codes. +We can reuse the `mdbnomics` function, this time with two series codes. For example, to fetch the time series `EA19.1.0.0.0.ZUTN` and `DNK.1.0.0.0.ZUTN` from the [\"Unemployment rate\" [ZUTN] dataset](https://db.nomics.world/AMECO/ZUTN) belonging to the [AMECO provider](https://db.nomics.world/AMECO). Example: - >> df_ids = fetch_series('series_ids', {'AMECO/ZUTN/EA19.1.0.0.0.ZUTN', 'AMECO/ZUTN/DNK.1.0.0.0.ZUTN'}); + >> df_ids = mdbnomics('series_ids', {'AMECO/ZUTN/EA19.1.0.0.0.ZUTN', 'AMECO/ZUTN/DNK.1.0.0.0.ZUTN'}); ### Fetch time series by code mask The code mask notation is a very concise way to select one or many time series at once. @@ -106,9 +106,9 @@ Given 3 dimensions 'frequency', 'country' and 'indicator', the user can select: Examples: - >> df_code_mask1 = fetch_series('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', 'M.FR+DE.PCPIEC_IX+PCPIA_IX'); - >> df_code_mask2 = fetch_series('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', '.FR.PCPIEC_WT'); - >> df_code_mask3 = fetch_series('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', 'M..PCPIEC_IX+PCPIA_IX', 'max_nb_series', 400); + >> df_code_mask1 = mdbnomics('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', 'M.FR+DE.PCPIEC_IX+PCPIA_IX'); + >> df_code_mask2 = mdbnomics('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', '.FR.PCPIEC_WT'); + >> df_code_mask3 = mdbnomics('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', 'M..PCPIEC_IX+PCPIA_IX', 'max_nb_series', 400); ### Fetch time series by dimension Searching by dimension is a less concise way to select time series than using the code mask, but it's universal: @@ -118,34 +118,34 @@ and the indicator "Procedures required to start a business - Women (number)" (`i Example: - >> df_dims = fetch_series('provider_code', 'WB', 'dataset_code', 'DB', 'dimensions', '{"country":["ES","FR","IT"],"indicator":["IC.REG.COST.PC.FE.ZS.DRFN"]}'); + >> df_dims = mdbnomics('provider_code', 'WB', 'dataset_code', 'DB', 'dimensions', '{"country":["ES","FR","IT"],"indicator":["IC.REG.COST.PC.FE.ZS.DRFN"]}'); ### Fetch time series by API link When the dimensions, provider, dataset or series codes are unknown, the user can: * go to the page of a dataset on DBnomics website (eg: [Doing Business](https://db.nomics.world/WB/DB)) * select some dimensions by using the input widgets of the left column * click on `Copy API link` in the menu of the `Download` button -* use the `fetch_series_by_api_link` function +* use the `mdbnomics` function with the `api_link` parameter. Example: - >> df_link = fetch_series_by_api_link('https://api.db.nomics.world/v22/series/WB/DB/ENF.CONT.COEN.ATDR-AE?observations=1'); + >> df_link = mdbnomics('api_link', 'https://api.db.nomics.world/v22/series/WB/DB/ENF.CONT.COEN.ATDR-AE?observations=1'); ### Fetch time series from the cart -On the [cart page](https://db.nomics.world/cart) of the DBnomics website, click on "Copy API link" and copy-paste it as an argument of the fetch_series_by_api_link function. +On the [cart page](https://db.nomics.world/cart) of the DBnomics website, click on "Copy API link" and copy-paste it as an argument of the `mdbnomics` function. Please note that when you update your cart, you have to copy this link again, because the link itself contains the IDs of the series in the cart. Example: - >> df_cart = fetch_series_by_api_link('https://api.db.nomics.world/v22/series?series_ids=AMECO%2FZUTN%2FEA19.1.0.0.0.ZUTN&observations=1'); + >> df_cart = mdbnomics('api_link', 'https://api.db.nomics.world/v22/series?series_ids=AMECO%2FZUTN%2FEA19.1.0.0.0.ZUTN&observations=1'); ### Fetch time series with different frequencies Example: - >> df_multi_freq = fetch_series('series_ids', {'BEA/NIUnderlyingDetail-U001BC/S315-A',... - 'BEA/NIUnderlyingDetail-U001BC/S315-Q',... - 'BEA/NIUnderlyingDetail-U001BC/S315-M'}); + >> df_multi_freq = mdbnomics('series_ids', {'BEA/NIUnderlyingDetail-U001BC/S315-A',... + 'BEA/NIUnderlyingDetail-U001BC/S315-Q',... + 'BEA/NIUnderlyingDetail-U001BC/S315-M'}); ### Fetch the available datasets of a provider When fetching series from DBnomics, the user needs to give a provider and a dataset before specifying correct dimensions. @@ -223,7 +223,7 @@ Here is an example of how to interpolate two annual time series with a monthly f Example: >> filters_ = '[{"code": "interpolate", "parameters": {"frequency": "monthly", "method": "spline"}}]'; - >> df_filter = fetch_series('series_ids', 'AMECO/ZUTN/EA19.1.0.0.0.ZUTN', 'dbnomics_filters', filters_); + >> df_filter = mdbnomics('series_ids', 'AMECO/ZUTN/EA19.1.0.0.0.ZUTN', 'dbnomics_filters', filters_); The first row of the final cell array changes when filters are used: * `period_middle_day`: the middle day of `original_period` (can be useful when you compare graphically interpolated series and original ones) diff --git a/src/initialize_mdbnomics.m b/src/initialize_mdbnomics.m index a850b622c24ad357d7e1d6e3d13b83aed0bb64f1..da46695fffaa6e44863891e78b51a73221f22c54 100644 --- a/src/initialize_mdbnomics.m +++ b/src/initialize_mdbnomics.m @@ -18,6 +18,8 @@ function initialize_mdbnomics() % along with Dynare. If not, see <http://www.gnu.org/licenses/>. % Get the path to the mdbnomics toolbox. +global mdb_options + mdbnomics_src_root = strrep(which('initialize_mdbnomics'), 'initialize_mdbnomics.m', ''); % Set the subfolders to be added in the path. @@ -58,4 +60,10 @@ if matlab_ver_less_than('9.1') addpath([mdbnomics_src_root '/../contrib/jsonlab']); end +mdb_options.api_base_url = 'https://api.db.nomics.world'; +mdb_options.editor_base_url = 'https://editor.nomics.world'; +mdb_options.api_version = 22; +mdb_options.editor_version = 1; + +assignin('caller', 'mdb_options', mdb_options); assignin('caller', 'mdbnomics_src_root', mdbnomics_src_root); diff --git a/src/fetch_series.m b/src/mdbnomics.m similarity index 77% rename from src/fetch_series.m rename to src/mdbnomics.m index 83012d1787785c8e7563f7a7b4e4af6759186cd5..3ea08434f333215b940da4494897a7cad7d153db 100644 --- a/src/fetch_series.m +++ b/src/mdbnomics.m @@ -1,21 +1,25 @@ -function df = fetch_series(varargin) % --*-- Unitary tests --*-- -% function fetch_series(varargin) +function df = mdbnomics(varargin) % --*-- Unitary tests --*-- +% function mdbnomics(varargin) % Download time series from DBnomics. % Returns a cell array. % % Examples: % Fetch one series: -% fetch_series('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', 'M.FR+DE.PCPIEC_IX+PCPIA_IX'); -% fetch_series('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', '.FR.PCPIEC_WT'); +% mdbnomics('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', 'M.FR+DE.PCPIEC_IX+PCPIA_IX'); +% mdbnomics('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', '.FR.PCPIEC_WT'); % % Fetch all the series of a dataset: -% fetch_series('provider_code', 'AMECO', 'dataset_code', 'UVGD', 'max_nb_series', 500); +% mdbnomics('provider_code', 'AMECO', 'dataset_code', 'UVGD', 'max_nb_series', 500); % % Fetch many series from different datasets: -% fetch_series('series_ids', {'AMECO/ZUTN/EA19.1.0.0.0.ZUTN', 'AMECO/ZUTN/DNK.1.0.0.0.ZUTN', 'IMF/CPI/A.AT.PCPIT_IX'}); +% mdbnomics('series_ids', {'AMECO/ZUTN/EA19.1.0.0.0.ZUTN', 'AMECO/ZUTN/DNK.1.0.0.0.ZUTN', 'IMF/CPI/A.AT.PCPIT_IX'}); % % Fetch many series from the same dataset, searching by dimension: -% fetch_series('provider_code','AMECO', 'dataset_code', 'ZUTN', 'dimensions', '{"geo":["dnk"]}'); +% mdbnomics('provider_code','AMECO', 'dataset_code', 'ZUTN', 'dimensions', '{"geo":["dnk"]}'); +% +% Fetch series given an "API link" URL. +% "API link" URLs can be found on DBnomics web site (https://db.nomics.world/) on dataset or series pages using "Download" buttons. +% mdbnomics('api_link', 'https://api.db.nomics.world/v22/series?series_ids=AMECO%2FZUTN%2FEA19.1.0.0.0.ZUTN&observations=1'); % % POSSIBLE PARAMETERS % provider_code [string] the code of the dataset provider. @@ -26,6 +30,7 @@ function df = fetch_series(varargin) % --*-- Unitary tests --*-- % max_nb_series [integer] maximum number of series requested by the API. If not provided, a default value of 50 series will be used. % api_base_url [string] the base URL used for API requests. If not provided, a default value of: 'https://api.db.nomics.world/v22/' will be used. % dbnomics_filters [char] filters to apply on the requested series. If provided it must be a string formatted like: '[{"code": "interpolate", "parameters": {"frequency": "monthly", "method": "spline"}}]'. +% api_link [char] fetch series given an "API link" URL. % % OUTPUTS % df @@ -52,8 +57,10 @@ function df = fetch_series(varargin) % --*-- Unitary tests --*-- % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -default_api_base_url = 'https://api.db.nomics.world/v22/'; -default_editor_base_url = 'https://editor.nomics.world/api/v1/'; +global mdb_options + +default_api_base_url = sprintf('%s/v%d/', mdb_options.api_base_url, mdb_options.api_version); +default_editor_base_url = sprintf('%s/api/v%d/', mdb_options.editor_base_url, mdb_options.editor_version); p = inputParser; validStringInput = @(x) ischar(x) || iscellstr(x); @@ -65,6 +72,7 @@ p.addParameter('series_ids', '',validStringInput); p.addParameter('max_nb_series', NaN, @isnumeric); p.addParameter('api_base_url', default_api_base_url, validStringInput); p.addParameter('dbnomics_filters', '', @ischar); +p.addParameter('api_link', '', @ischar); p.KeepUnmatched = false; p.parse(varargin{:}); @@ -85,7 +93,7 @@ end series_base_url = [p.Results.api_base_url 'series']; if isa(p.Results.dimensions, 'function_handle') && isempty(p.Results.series_code) && isempty(p.Results.series_ids) - if isempty(p.Results.provider_code) || isempty(p.Results.dataset_code) + if (isempty(p.Results.provider_code) || isempty(p.Results.dataset_code)) && isempty(p.Results.api_link) error('When you don''t use dimensions, you must specifiy provider_code and dataset_code.'); end api_link = sprintf('%s/%s/%s?observations=1', series_base_url, p.Results.provider_code, p.Results.dataset_code); @@ -116,12 +124,17 @@ if ~isempty(p.Results.series_ids) end api_link = sprintf('%s?observations=1&series_ids=%s', series_base_url, series_ids); end + +if ~isempty(p.Results.api_link) + api_link = p.Results.api_link; +end + df = fetch_series_by_api_link(api_link, p.Results.dbnomics_filters, p.Results.max_nb_series, default_editor_base_url); end %@test:1 % test_fetch_series_by_code %$ try -%$ df = fetch_series('provider_code', 'AMECO', 'dataset_code', 'ZUTN', 'series_code', 'EA19.1.0.0.0.ZUTN'); +%$ df = mdbnomics('provider_code', 'AMECO', 'dataset_code', 'ZUTN', 'series_code', 'EA19.1.0.0.0.ZUTN'); %$ t(1) = 1; %$ catch %$ t = 0; @@ -141,7 +154,7 @@ end %@test:2 % test_fetch_series_by_code_mask %$ try -%$ df = fetch_series('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', 'M.FR+DE.PCPIEC_IX+PCPIA_IX'); +%$ df = mdbnomics('provider_code', 'IMF', 'dataset_code', 'CPI', 'series_code', 'M.FR+DE.PCPIEC_IX+PCPIA_IX'); %$ t(1) = 1; %$ catch %$ t = 0; @@ -160,7 +173,7 @@ end %@test:3 % test_fetch_series_by_code_mask_with_plus %$ try -%$ df = fetch_series('provider_code', 'SCB', 'dataset_code', 'AKIAM', 'series_code', '"J+K"+"G+H".AM0301C1'); +%$ df = mdbnomics('provider_code', 'SCB', 'dataset_code', 'AKIAM', 'series_code', '"J+K"+"G+H".AM0301C1'); %$ t(1) = 1; %$ catch %$ t = 0; @@ -179,7 +192,7 @@ end %@test:4 % test_fetch_series_by_dimension %$ try -%$ df = fetch_series('provider_code','WB','dataset_code','DB', 'dimensions', '{"country":["ES","FR","IT"],"indicator":["IC.REG.COST.PC.FE.ZS.DRFN"]}'); +%$ df = mdbnomics('provider_code','WB','dataset_code','DB', 'dimensions', '{"country":["ES","FR","IT"],"indicator":["IC.REG.COST.PC.FE.ZS.DRFN"]}'); %$ t(1) = 1; %$ catch %$ t = 0; @@ -198,7 +211,7 @@ end %@test:5 % test_fetch_series_by_id %$ try -%$ df = fetch_series('series_ids','AMECO/ZUTN/EA19.1.0.0.0.ZUTN'); +%$ df = mdbnomics('series_ids','AMECO/ZUTN/EA19.1.0.0.0.ZUTN'); %$ t(1) = 1; %$ catch %$ t = 0; @@ -218,7 +231,7 @@ end %@test:6 % test_fetch_series_by_ids_in_different_datasets %$ try -%$ df = fetch_series('series_ids', {'AMECO/ZUTN/EA19.1.0.0.0.ZUTN', 'BIS/cbs/Q.S.5A.4B.F.B.A.A.LC1.A.1C'}); +%$ df = mdbnomics('series_ids', {'AMECO/ZUTN/EA19.1.0.0.0.ZUTN', 'BIS/cbs/Q.S.5A.4B.F.B.A.A.LC1.A.1C'}); %$ t(1) = 1; %$ catch %$ t = 0; @@ -244,7 +257,7 @@ end %@test:7 % test_fetch_series_by_ids_in_same_dataset %$ try -%$ df = fetch_series('series_ids', {'AMECO/ZUTN/EA19.1.0.0.0.ZUTN',... +%$ df = mdbnomics('series_ids', {'AMECO/ZUTN/EA19.1.0.0.0.ZUTN',... %$ 'AMECO/ZUTN/DNK.1.0.0.0.ZUTN'}); %$ t(1) = 1; %$ catch @@ -267,7 +280,7 @@ end %@test:8 % test_fetch_series_of_dataset %$ try -%$ df = fetch_series('provider_code', 'AMECO', 'dataset_code', 'ZUTN'); +%$ df = mdbnomics('provider_code', 'AMECO', 'dataset_code', 'ZUTN'); %$ t(1) = 1; %$ catch %$ t = 0; @@ -287,7 +300,7 @@ end %@test:9 % test_fetch_series_with_filter_on_one_series %$ try %$ filters_ = '[{"code": "interpolate", "parameters": {"frequency": "monthly", "method": "spline"}}]'; -%$ df = fetch_series('provider_code', 'AMECO', 'dataset_code', 'ZUTN', 'series_code', 'DEU.1.0.0.0.ZUTN', 'dbnomics_filters', filters_); +%$ df = mdbnomics('provider_code', 'AMECO', 'dataset_code', 'ZUTN', 'series_code', 'DEU.1.0.0.0.ZUTN', 'dbnomics_filters', filters_); %$ t(1) = 1; %$ catch %$ t = 0; @@ -312,7 +325,7 @@ end %@test:10 % test_fetch_series_with_max_nb_series %$ try -%$ df = fetch_series('provider_code', 'AMECO', 'dataset_code', 'ZUTN', 'max_nb_series',20); +%$ df = mdbnomics('provider_code', 'AMECO', 'dataset_code', 'ZUTN', 'max_nb_series',20); %$ t(1) = 1; %$ catch %$ t = 0; @@ -332,7 +345,7 @@ end %@test:11 % test_fetch_series_with_na_values %$ try -%$ df = fetch_series('provider_code', 'AMECO', 'dataset_code', 'ZUTN', 'series_code', 'DEU.1.0.0.0.ZUTN'); +%$ df = mdbnomics('provider_code', 'AMECO', 'dataset_code', 'ZUTN', 'series_code', 'DEU.1.0.0.0.ZUTN'); %$ t(1) = 1; %$ catch %$ t = 0; @@ -351,3 +364,22 @@ end %$ %$ T = all(t); %@eof:11 + +%@test:12 % test_fetch_series_by_api_link +%$ try +%$ df = mdbnomics('api_link', 'https://api.db.nomics.world/v22/series/BIS/long_pp?limit=1000&offset=0&q=&observations=1&align_periods=1&dimensions=%7B%7D'); +%$ t(1) = 1; +%$ catch +%$ t = 0; +%$ end +%$ +%$ if t(1) +%$ t(2) = dassert(length(unique(df(2:end,2))),1); +%$ t(3) = dassert(df(2,2), {'BIS'}); +%$ t(4) = dassert(length(unique(df(2:end,3))),1); +%$ t(5) = dassert(df(2,3), {'long_pp'}); +%$ t(6) = dassert(length(unique(df(2:end,5))),23); +%$ end +%$ +%$ T = all(t); +%@eof:12 diff --git a/src/mdbnomics_datasets.m b/src/mdbnomics_datasets.m index 2bfa5962d679551a2a28abf8acd64c44817a66bf..73f0ffeb95e28e84e358a17c3274bcfec9c26133 100644 --- a/src/mdbnomics_datasets.m +++ b/src/mdbnomics_datasets.m @@ -32,8 +32,7 @@ function datasets = mdbnomics_datasets(varargin) % --*-- Unitary tests --*-- % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -api_base_url = 'https://api.db.nomics.world'; -api_version = 22; +global mdb_options p = inputParser; validStringInput = @(x) ischar(x) || iscellstr(x); @@ -55,7 +54,7 @@ end datasets = struct(); for i = 1:numel(provider_code) pc = provider_code{i}; - provider_page = sprintf('%s/v%d/providers/%s', api_base_url, api_version, pc); + provider_page = sprintf('%s/v%d/providers/%s', mdb_options.api_base_url, mdb_options.api_version, pc); provider_info = webread(provider_page); provider_info = provider_info.category_tree; code = []; diff --git a/src/mdbnomics_dimensions.m b/src/mdbnomics_dimensions.m index 0196ae23155ba397699747a958f1a8a00696cb06..89b7a3a85c3badcb53700b481af5d0fa2fd61687 100644 --- a/src/mdbnomics_dimensions.m +++ b/src/mdbnomics_dimensions.m @@ -34,8 +34,7 @@ function dimensions = mdbnomics_dimensions(varargin) % --*-- Unitary tests --*-- % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -api_base_url = 'https://api.db.nomics.world'; -api_version = 22; +global mdb_options p = inputParser; validStringInput = @(x) ischar(x) || iscellstr(x); @@ -79,7 +78,7 @@ dimensions = struct(); for i = 1:numel(provider_code) pc = provider_code{i}; dc = dataset_code{i}; - dataset_page = sprintf('%s/v%d/datasets/%s/%s', api_base_url, api_version, pc, dc); + dataset_page = sprintf('%s/v%d/datasets/%s/%s', mdb_options.api_base_url, mdb_options.api_version, pc, dc); dataset_info = webread(dataset_page); dataset_name = sprintf('%s_%s', pc, dc); diff --git a/src/mdbnomics_series.m b/src/mdbnomics_series.m index f76ec977e9e7bb5fcee098875ffdf95032382ffb..3b5c0107fc66cea6a9d7547dfea5380d3bba1958 100644 --- a/src/mdbnomics_series.m +++ b/src/mdbnomics_series.m @@ -41,8 +41,7 @@ function series = mdbnomics_series(varargin) % --*-- Unitary tests --*-- % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -api_base_url = 'https://api.db.nomics.world'; -api_version = 22; +global mdb_options p = inputParser; validStringInput = @(x) ischar(x) || iscellstr(x); @@ -101,7 +100,7 @@ series = struct(); for i = 1:numel(provider_code) pc = provider_code{i}; dc = dataset_code{i}; - dataset_page = sprintf('%s/v%d/series/%s/%s', api_base_url, api_version, pc, dc); + dataset_page = sprintf('%s/v%d/series/%s/%s', mdb_options.api_base_url, mdb_options.api_version, pc, dc); if exist('db_query', 'var') dataset_page = sprintf('%s?q=%s', dataset_page, db_query{i}); end diff --git a/src/fetch_series_by_api_link.m b/src/utils/fetch_series_by_api_link.m similarity index 98% rename from src/fetch_series_by_api_link.m rename to src/utils/fetch_series_by_api_link.m index d87f3f53c18effac35c0b09eec1b7624e53aec22..0e71a41bbc87146d047b36ee60df46f15e59e0ec 100644 --- a/src/fetch_series_by_api_link.m +++ b/src/utils/fetch_series_by_api_link.m @@ -37,7 +37,10 @@ function df = fetch_series_by_api_link(api_link, varargin) % --*-- Unitary tests % % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -default_editor_base_url = 'https://editor.nomics.world/api/v1/'; + +global mdb_options + +default_editor_base_url = sprintf('%s/api/v%d/', mdb_options.editor_base_url, mdb_options.editor_version); p = inputParser; validStringInput = @(x) ischar(x) || iscellstr(x); diff --git a/src/utils/mdbnomics_providers.m b/src/utils/mdbnomics_providers.m index 35fd36148f039fd6adbc1fed9c4cfd41b8496881..cdd693b77308b97dbdfd6afbe69f7d5d783d6041 100644 --- a/src/utils/mdbnomics_providers.m +++ b/src/utils/mdbnomics_providers.m @@ -30,15 +30,14 @@ function providers = mdbnomics_providers(varargin) % --*-- Unitary tests --*-- % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -api_base_url = 'https://api.db.nomics.world'; -api_version = 22; +global mdb_options p = inputParser; p.addParameter('code', false, @islogical); p.KeepUnmatched = false; p.parse(varargin{:}); -providers_url = sprintf('%s/v%d/providers', api_base_url, api_version); +providers_url = sprintf('%s/v%d/providers', mdb_options.api_base_url, mdb_options.api_version); response = webread(providers_url); if p.Results.code