@olea-bps/context-event 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Client to get Events from ASiST server
3
+ */
4
+ export default class AsistServerClient {
5
+ /**
6
+ * Base URL which is expanded to generate the request URLs.
7
+ * @private
8
+ */
9
+ #baseUrl
10
+
11
+ /**
12
+ * University code which is communicated to the ASiST server via the request URL in order to retrieve the events of the correct university.
13
+ * @private
14
+ */
15
+ #university
16
+
17
+ /**
18
+ * Returns the request URL to get all events from the ASiST server.
19
+ * @returns {URL}
20
+ */
21
+ // If available implement as private get property
22
+ getAllUrl() {
23
+ return new URL(`${this.#baseUrl}/${this.#university}/events`);
24
+ }
25
+
26
+ /**
27
+ * Construct a ASiST server rest api client.
28
+ * @param {String} baseUrl URL which is used as the basis for the query URLs.
29
+ * @param {String} university University code of the university to be queried.
30
+ */
31
+ constructor(baseUrl, university) {
32
+ this.#baseUrl = baseUrl;
33
+ this.#university = university;
34
+ }
35
+
36
+ /**
37
+ * Returns a list of all events from the queried university.
38
+ * @returns {Array} Array of all event objects
39
+ */
40
+ getAll() {
41
+ const getAllEventsURL = this.getAllUrl();
42
+
43
+ console.debug(`Get all events: ${getAllEventsURL}`)
44
+
45
+ return fetch(
46
+ getAllEventsURL,
47
+ {
48
+ 'headers': AsistServerClient.generateHeaders(),
49
+ }
50
+ ).then(allEventResponse => allEventResponse.json())
51
+ }
52
+
53
+ /**
54
+ * Return list of events for the personal code.
55
+ * @param {String} personalCode Personal code for market events
56
+ * @returns {Array}
57
+ */
58
+ getByPersonalCode(personalCode) {
59
+ // If available implement query parameter with 'searchParams.set': personalEventsURL.searchParams.set('code', personalCode);
60
+ const personalEventsURL = `${this.getAllUrl()}?code=${personalCode}`;
61
+
62
+ console.debug(`Get personal events: ${personalEventsURL}`)
63
+
64
+ return fetch(
65
+ personalEventsURL,
66
+ {
67
+ 'headers': AsistServerClient.generateHeaders(),
68
+ }
69
+ ).then(personalEventResponse => personalEventResponse.json())
70
+ }
71
+
72
+ /**
73
+ * Returns standart headers für asist server requests.
74
+ * @returns {object}
75
+ */
76
+ // If available implement as private
77
+ static generateHeaders() {
78
+ return {
79
+ 'Accept': 'application/json',
80
+ }
81
+ }
82
+ }
package/index.js CHANGED
@@ -133,7 +133,11 @@ export default function EventContextProvider({ children }) {
133
133
  * @returns {object} Eventkontext
134
134
  */
135
135
  export function useEventContext() {
136
- return useContext(EventContext);
136
+ const context = useContext(EventContext);
137
+ if (context === null) {
138
+ throw new Error('useEventContext must be used within an EventContextProvider');
139
+ }
140
+ return context;
137
141
  }
138
142
 
139
143
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olea-bps/context-event",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "Context for event",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -19,6 +19,7 @@
19
19
  "license": "Apache-2.0",
20
20
  "files": [
21
21
  "index.js",
22
+ "AsistServerClient.js",
22
23
  "package.json",
23
24
  "LICENSE",
24
25
  "README.md"