1 import { setError } from "../messages";
3 //TODO: all of these functions should be deleted and reimplemented in the components using ERMAPIClient
5 export const fetchLicense = function (license_id) {
6 if (!license_id) return;
7 const apiUrl = "/api/v1/erm/licenses/" + license_id;
8 return myFetch(apiUrl, {
10 "x-koha-embed": "user_roles,user_roles.patron,vendor,documents",
15 export const fetchLicenses = function () {
16 const apiUrl = "/api/v1/erm/licenses?_per_page=-1";
17 return myFetch(apiUrl, {
19 "x-koha-embed": "vendor.name",
24 export const fetchPatron = function (patron_id) {
25 if (!patron_id) return;
26 const apiUrl = "/api/v1/patrons/" + patron_id;
27 return myFetch(apiUrl);
30 export const fetchVendors = function () {
31 const apiUrl = "/api/v1/acquisitions/vendors?_per_page=-1";
32 return myFetch(apiUrl);
35 const _createEditPackage = function (method, erm_package) {
36 let apiUrl = "/api/v1/erm/eholdings/local/packages";
38 if (method == "PUT") {
39 apiUrl += "/" + erm_package.package_id;
41 delete erm_package.package_id;
42 delete erm_package.resources;
43 delete erm_package.vendor;
44 delete erm_package.resources_count;
45 delete erm_package.is_selected;
47 erm_package.package_agreements = erm_package.package_agreements.map(
48 ({ package_id, agreement, ...keepAttrs }) => keepAttrs
53 body: JSON.stringify(erm_package),
55 "Content-Type": "application/json;charset=utf-8",
59 return myFetch(apiUrl, options, 1);
62 export const createPackage = function (erm_package) {
63 return _createEditPackage("POST", erm_package);
65 export const editPackage = function (erm_package) {
66 return _createEditPackage("PUT", erm_package);
69 const _fetchPackage = function (apiUrl, package_id) {
70 if (!package_id) return;
71 return myFetch(apiUrl, {
74 "package_agreements,package_agreements.agreement,resources+count,vendor",
78 export const fetchLocalPackage = function (package_id) {
79 const apiUrl = "/api/v1/erm/eholdings/local/packages/" + package_id;
80 return _fetchPackage(apiUrl, package_id);
82 export const fetchEBSCOPackage = function (package_id) {
83 const apiUrl = "/api/v1/erm/eholdings/ebsco/packages/" + package_id;
84 return _fetchPackage(apiUrl, package_id);
87 export const _fetchPackages = function (apiUrl) {
88 return myFetch(apiUrl, {
90 "x-koha-embed": "resources+count,vendor.name",
94 export const fetchLocalPackages = function () {
95 const apiUrl = "/api/v1/erm/eholdings/local/packages?_per_page=-1";
96 return _fetchPackages(apiUrl);
98 export const fetchEBSCOPackages = function () {
99 const apiUrl = "/api/v1/erm/eholdings/ebsco/packages";
100 return _fetchPackages(apiUrl);
103 export const fetchLocalPackageCount = function (filters) {
106 "me.name": { like: "%" + filters.package_name + "%" },
107 ...(filters.content_type
108 ? { "me.content_type": filters.content_type }
116 q: JSON.stringify(q),
118 var apiUrl = "/api/v1/erm/eholdings/local/packages";
119 return myFetchTotal(apiUrl + "?" + new URLSearchParams(params));
122 export const _fetchTitle = function (apiUrl, title_id) {
123 if (!title_id) return;
124 return myFetch(apiUrl, {
126 "x-koha-embed": "resources,resources.package",
130 export const fetchLocalTitle = function (title_id) {
131 const apiUrl = "/api/v1/erm/eholdings/local/titles/" + title_id;
132 return _fetchTitle(apiUrl, title_id);
134 export const fetchEBSCOTitle = function (title_id) {
135 const apiUrl = "/api/v1/erm/eholdings/ebsco/titles/" + title_id;
136 return _fetchTitle(apiUrl, title_id);
139 export const fetchLocalTitleCount = function (filters) {
142 ...(filters.publication_title
144 "me.publication_title": {
145 like: "%" + filters.publication_title + "%",
149 ...(filters.publication_type
150 ? { "me.publication_type": filters.publication_type }
157 ...(q ? { q: JSON.stringify(q) } : {}),
159 var apiUrl = "/api/v1/erm/eholdings/local/titles";
160 return myFetchTotal(apiUrl + "?" + new URLSearchParams(params));
163 export const _fetchResource = function (apiUrl, resource_id) {
164 if (!resource_id) return;
165 return myFetch(apiUrl, {
167 "x-koha-embed": "title,package,vendor",
171 export const fetchLocalResource = function (resource_id) {
172 const apiUrl = "/api/v1/erm/eholdings/local/resources/" + resource_id;
173 return _fetchResource(apiUrl, resource_id);
175 export const fetchEBSCOResource = function (resource_id) {
176 const apiUrl = "/api/v1/erm/eholdings/ebsco/resources/" + resource_id;
177 return _fetchResource(apiUrl, resource_id);
180 export const _fetchResources = async function (apiUrl) {
181 return await myFetch(apiUrl);
184 export const fetchLocalResources = function () {
185 const apiUrl = "/api/v1/erm/eholdings/local/resources";
186 return _fetchResources(apiUrl);
188 export const fetchEBSCOResources = function () {
189 const apiUrl = "/api/v1/erm/eholdings/ebsco/resources";
190 return _fetchResources(apiUrl);
193 export const myFetch = async function (url, options, return_response) {
195 await fetch(url, options || {})
196 .then((response) => checkError(response, return_response))
202 setError(error.toString());
210 export const myFetchTotal = async function (url, options) {
212 await myFetch(url, options, 1).then(
215 r = response.headers.get("X-Total-Count");
219 setError(error.toString());
225 export const checkError = function (response, return_response) {
226 if (response.status >= 200 && response.status <= 299) {
227 return return_response ? response : response.json();
229 console.log("Server returned an error:");
230 console.log(response);
231 throw Error("%s (%s)".format(response.statusText, response.status));