From 19b1b35a7491ce9bae95565655a64b17565ade96 Mon Sep 17 00:00:00 2001
From: Marcel Nellesen <nellesen@itc.rwth-aachen.de>
Date: Thu, 28 Jan 2021 14:47:51 +0100
Subject: [PATCH] Update: Included QuotaApi functions

---
 package.json                |  2 +-
 src/api-connection.ts       |  1 +
 src/requests/project-api.ts | 39 +++++++++++++++++++++++++++++-
 src/requests/quota-api.ts   | 47 +++++++++++++++++++++++++++++++++++++
 yarn.lock-workspace         | 26 ++++++++++++++------
 5 files changed, 106 insertions(+), 9 deletions(-)
 create mode 100644 src/requests/quota-api.ts

diff --git a/package.json b/package.json
index 0a10cac..ab8d9d5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@coscine/api-connection",
-  "version": "1.24.2",
+  "version": "1.24.3",
   "description": "This library provides methods to connect to CoScInE Apis with JavaScript.",
   "keywords": [
     "coscine",
diff --git a/src/api-connection.ts b/src/api-connection.ts
index a044f56..9a7a81b 100644
--- a/src/api-connection.ts
+++ b/src/api-connection.ts
@@ -8,6 +8,7 @@ export { MetadataApi } from './requests/metadata-api';
 export { NoticeApi } from './requests/notice-api';
 export { OrganizationApi } from './requests/organization-api';
 export { PIDApi } from './requests/pid-api';
+export { QuotaApi } from './requests/quota-api';
 export { ProjectApi } from './requests/project-api';
 export { ProjectRoleApi } from './requests/project-role-api';
 export { ResourceApi } from './requests/resource-api';
diff --git a/src/requests/project-api.ts b/src/requests/project-api.ts
index 94e292a..7dc4736 100644
--- a/src/requests/project-api.ts
+++ b/src/requests/project-api.ts
@@ -50,7 +50,44 @@ export class ProjectApi {
   ) {
     apiConnectionBasic.setHeader();
     return axios
-      .get(getProjectApiUrl() + projectId + '/quotas')
+      .get(getProjectApiUrl() + projectId + '/quota/-/all')
+      .then(thenHandler)
+      .catch(catchHandler);
+  }
+  public static getQuota(
+    projectId: string,
+    resourceTypeId: any,
+    thenHandler: any = apiConnectionBasic.defaultThenHandler,
+    catchHandler: any = apiConnectionBasic.defaultOnCatch
+  ) {
+    apiConnectionBasic.setHeader();
+    return axios
+      .get(getProjectApiUrl() + projectId + '/quota/' + resourceTypeId)
+      .then(thenHandler)
+      .catch(catchHandler);
+  }
+  public static getMaxiumQuota(
+    projectId: string,
+    resourceTypeId: any,
+    thenHandler: any = apiConnectionBasic.defaultThenHandler,
+    catchHandler: any = apiConnectionBasic.defaultOnCatch
+  ) {
+    apiConnectionBasic.setHeader();
+    return axios
+      .get(getProjectApiUrl() + projectId + '/quota/' + resourceTypeId + '/max')
+      .then(thenHandler)
+      .catch(catchHandler);
+  }
+  public static setQuota(
+    projectId: string,
+    resourceTypeId: string,
+    body: any,
+    thenHandler: any = apiConnectionBasic.defaultThenHandler,
+    catchHandler: any = apiConnectionBasic.defaultOnCatch
+  ) {
+    apiConnectionBasic.setHeader();
+    return axios
+      .post(getProjectApiUrl() + projectId + '/quota/' + resourceTypeId, body)
       .then(thenHandler)
       .catch(catchHandler);
   }
diff --git a/src/requests/quota-api.ts b/src/requests/quota-api.ts
new file mode 100644
index 0000000..7a5573d
--- /dev/null
+++ b/src/requests/quota-api.ts
@@ -0,0 +1,47 @@
+const axios = require('axios');
+
+import apiConnectionBasic from '../basic/api-connection-basic';
+
+function getQuotaApiUrl() {
+  return (
+    'https://' + apiConnectionBasic.getHostName() + '/coscine/api/Coscine.Api.Quota/Quota/'
+  );
+}
+
+export class QuotaApi {
+  public static getResourceQuotas(
+    projectId: string,
+    resourceTypeId: string,
+    thenHandler: any = apiConnectionBasic.defaultThenHandler,
+    catchHandler: any = apiConnectionBasic.defaultOnCatch
+  ) {
+    apiConnectionBasic.setHeader();
+    return axios
+      .get(getQuotaApiUrl() + projectId + '/' + resourceTypeId + '/all')
+      .then(thenHandler)
+      .catch(catchHandler);
+  }
+  public static getResourceQuota(
+    resourceId: string,
+    thenHandler: any = apiConnectionBasic.defaultThenHandler,
+    catchHandler: any = apiConnectionBasic.defaultOnCatch
+  ) {
+    apiConnectionBasic.setHeader();
+    return axios
+      .get(getQuotaApiUrl() + resourceId)
+      .then(thenHandler)
+      .catch(catchHandler);
+  }
+  public static setResourceQuota(
+    resourceId: string,
+    body: any,
+    thenHandler: any = apiConnectionBasic.defaultThenHandler,
+    catchHandler: any = apiConnectionBasic.defaultOnCatch,
+  ) {
+    apiConnectionBasic.setHeader();
+    return axios
+      .post(getQuotaApiUrl() + resourceId, body)
+      .then(thenHandler)
+      .catch(catchHandler);
+  }
+}
diff --git a/yarn.lock-workspace b/yarn.lock-workspace
index 0148d6a..ad43520 100644
--- a/yarn.lock-workspace
+++ b/yarn.lock-workspace
@@ -3201,9 +3201,9 @@ __metadata:
   linkType: hard
 
 "core-js@npm:^3.6.1":
-  version: 3.8.2
-  resolution: "core-js@npm:3.8.2"
-  checksum: 8fa2c580b77b9d54d3f6ee147be4d9ae01ea6d77f35f16b05962161e9bec02d846449cce4c68b9d190145edc8ded71142f6fd99e35b53fc642b20a3bf47bbd07
+  version: 3.8.3
+  resolution: "core-js@npm:3.8.3"
+  checksum: 3c67d1732d505f6afaf836f18038dae8267e8c0e8e84e1c679bac67589e66d0807c24750c7d8b1118cc386c3d66a1d96f20d9cb0f6a879b19cfc04e9f073fe78
   languageName: node
   linkType: hard
 
@@ -4757,7 +4757,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1":
+"fs-extra@npm:^9.0.0":
   version: 9.0.1
   resolution: "fs-extra@npm:9.0.1"
   dependencies:
@@ -4769,6 +4769,18 @@ __metadata:
   languageName: node
   linkType: hard
 
+"fs-extra@npm:^9.0.1":
+  version: 9.1.0
+  resolution: "fs-extra@npm:9.1.0"
+  dependencies:
+    at-least-node: ^1.0.0
+    graceful-fs: ^4.2.0
+    jsonfile: ^6.0.1
+    universalify: ^2.0.0
+  checksum: e667d8df54113b527bf5830dd9db8f142618db488894b329fe07724c7020dfacf8a372b144a74e683ae44e66f56117adca9cac165950dda7d83537c46c10dc4b
+  languageName: node
+  linkType: hard
+
 "fs-minipass@npm:^1.2.5":
   version: 1.2.7
   resolution: "fs-minipass@npm:1.2.7"
@@ -10558,8 +10570,8 @@ resolve@1.17.0:
   linkType: hard
 
 "rollup@npm:^2.36.1":
-  version: 2.36.2
-  resolution: "rollup@npm:2.36.2"
+  version: 2.37.0
+  resolution: "rollup@npm:2.37.0"
   dependencies:
     fsevents: ~2.1.2
   dependenciesMeta:
@@ -10567,7 +10579,7 @@ resolve@1.17.0:
       optional: true
   bin:
     rollup: dist/bin/rollup
-  checksum: 65a892680d0da59b77a8174d90ff203bd8f4a34a5ec9d230d9bbf735ecad700426f1e079ed1953cd24bc9c0fcf77aed7219da77db11347222814e8d9364c60cd
+  checksum: ef944ab73701ae1b8459bbed91f49895db57580413880cbb1727c8eb5fd136f5ec313a7af5093c836d703e0ee7c77fd9ec027af2fe039a37d18dcff2a9b05d6f
   languageName: node
   linkType: hard
 
-- 
GitLab