webuntis-client 1.0.2 → 1.0.4

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 LeChacal
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,9 +1,16 @@
1
+ <div align="center">
2
+
1
3
  # Web Untis Client
2
4
 
5
+ [![npm version](https://badge.fury.io/js/webuntis-client.svg)](https://www.npmjs.com/package/webuntis-client)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
3
8
  A Web Untis API Client to interact with [Web Untis](https://webuntis.com).
4
9
 
5
- > Work In Progress \
6
- > Not complete
10
+ </div>
11
+
12
+ > [!CAUTION]
13
+ > Work In Progress - Not feature complete yet
7
14
 
8
15
  ## Examples
9
16
 
@@ -35,6 +42,15 @@ const end = new Date("2027");
35
42
  await client.getOwnTimetable(start, end);
36
43
  ```
37
44
 
45
+ ### Homeworks and Lessons
46
+
47
+ ```typescript
48
+ const start = new Date("2026");
49
+ const end = new Date("2027");
50
+
51
+ await client.getHomeworksLessons(start, end);
52
+ ```
53
+
38
54
  ### App data
39
55
 
40
56
  ```typescript
@@ -45,4 +61,22 @@ await client.getAppData();
45
61
 
46
62
  ```typescript
47
63
  await client.getProfile();
48
- ```
64
+ ```
65
+
66
+ ## Installation
67
+
68
+ ```bash
69
+ yarn add webuntis-client
70
+
71
+ npm i webuntis-client
72
+
73
+ pnpm i webuntis-client
74
+ ```
75
+
76
+ ## License
77
+
78
+ [MIT](LICENSE)
79
+
80
+ ## Disclaimer
81
+
82
+ This is an unofficial client and is not affiliated with Untis GmbH.
@@ -1,5 +1,6 @@
1
1
  import { Credentials } from "./Credentials";
2
2
  import { AppData, CurrentSchoolYear, Holiday, OneDriveData, Tenant, User } from './types/app-data';
3
+ import { HomeworksLessonsData } from './types/homework';
3
4
  import { Profile } from "./types/profile";
4
5
  import { SessionInfo } from "./types/session";
5
6
  import { TimetableResponse } from "./types/timetable";
@@ -11,6 +12,7 @@ export declare class WebUntisClient {
11
12
  private readonly _tokenManager;
12
13
  private readonly _appDataService;
13
14
  private readonly _profileService;
15
+ private readonly _homeworksService;
14
16
  private readonly _timetableService;
15
17
  constructor(credentials: Credentials);
16
18
  /**
@@ -100,6 +102,7 @@ export declare class WebUntisClient {
100
102
  * @param end - End date
101
103
  */
102
104
  getOwnTimetable(start: Date, end: Date): Promise<TimetableResponse>;
105
+ getHomeworksLessons(start: Date, end: Date): Promise<HomeworksLessonsData>;
103
106
  /**
104
107
  * Ensure user is authenticated
105
108
  */
@@ -1 +1 @@
1
- {"version":3,"file":"WebUntis.d.ts","sourceRoot":"","sources":["../src/WebUntis.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAG3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAG7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;gBAEzC,WAAW,EAAE,WAAW;IAgCpC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IASnC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,UAAU,IAAI,WAAW,GAAG,IAAI;IAQhC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAKpC;;OAEG;IACH,oBAAoB,IAAI,iBAAiB;IAIzC;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;OAEG;IACH,cAAc,IAAI,OAAO,EAAE;IAI3B;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,cAAc,IAAI,OAAO,EAAE;IAI3B;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,WAAW,IAAI,OAAO,EAAE;IAQxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IASpC;;;;;OAKG;IACG,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IASzE;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS/B"}
1
+ {"version":3,"file":"WebUntis.d.ts","sourceRoot":"","sources":["../src/WebUntis.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ5C,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAG3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAG7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;gBAEzC,WAAW,EAAE,WAAW;IAiCpC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IASnC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,UAAU,IAAI,WAAW,GAAG,IAAI;IAQhC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAKpC;;OAEG;IACH,oBAAoB,IAAI,iBAAiB;IAIzC;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;OAEG;IACH,cAAc,IAAI,OAAO,EAAE;IAI3B;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,cAAc,IAAI,OAAO,EAAE;IAI3B;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,WAAW,IAAI,OAAO,EAAE;IAQxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IASpC;;;;;OAKG;IACG,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IASnE,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAShF;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAS/B"}
package/dist/WebUntis.js CHANGED
@@ -5,6 +5,7 @@ import { ValidationError } from "./errors/Validation";
5
5
  import { AuthenticationManager } from "./managers/Authentication";
6
6
  import { TokenManager } from "./managers/Token";
7
7
  import { AppDataService } from "./services/AppData";
8
+ import { HomeworksService } from './services/Homeworks';
8
9
  import { ProfileService } from "./services/Profile";
9
10
  import { TimetableService } from "./services/Timetable";
10
11
  export class WebUntisClient {
@@ -18,6 +19,7 @@ export class WebUntisClient {
18
19
  // Services
19
20
  _appDataService;
20
21
  _profileService;
22
+ _homeworksService;
21
23
  _timetableService;
22
24
  constructor(credentials) {
23
25
  const { identity, url } = credentials;
@@ -32,6 +34,7 @@ export class WebUntisClient {
32
34
  // Services
33
35
  this._appDataService = new AppDataService(this._apiClient);
34
36
  this._profileService = new ProfileService(this._apiClient);
37
+ this._homeworksService = new HomeworksService(this._apiClient);
35
38
  this._timetableService = new TimetableService(this._apiClient, this._authManager);
36
39
  }
37
40
  //#region Authentication
@@ -179,6 +182,12 @@ export class WebUntisClient {
179
182
  return await this._timetableService.getOwnTimetable(start, end);
180
183
  }
181
184
  //#endregion
185
+ //#region Homeworks and Lessons
186
+ async getHomeworksLessons(start, end) {
187
+ this._ensureAuthenticated();
188
+ return await this._homeworksService.getHomeworksLessons(start, end);
189
+ }
190
+ //#endregion
182
191
  //#region Helpers
183
192
  /**
184
193
  * Ensure user is authenticated
@@ -1,4 +1,5 @@
1
1
  import { AppData } from '../types/app-data';
2
+ import { HomeworksLessonsResponse } from '../types/homework';
2
3
  import { ProfileResponse } from '../types/profile';
3
4
  import { TimetableResponse } from '../types/timetable';
4
5
  import { HttpClient } from './Http';
@@ -24,5 +25,6 @@ export declare class ApiClient {
24
25
  * Fetch timetable entries
25
26
  */
26
27
  fetchOwnTimetable(params: URLSearchParams): Promise<TimetableResponse>;
28
+ fetchHomeworksLessons(params: URLSearchParams): Promise<HomeworksLessonsResponse>;
27
29
  }
28
30
  //# sourceMappingURL=Api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/clients/Api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;GAEG;AACH,qBAAa,SAAS;IAEd,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAJhB,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,MAAM,MAAM,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAChC,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,EACjC,gBAAgB,EAAE,MAAM,MAAM;IAGnD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBtC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAS9C;;OAEG;IACG,iBAAiB,CACnB,MAAM,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC;CAoBhC"}
1
+ {"version":3,"file":"Api.d.ts","sourceRoot":"","sources":["../../src/clients/Api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;GAEG;AACH,qBAAa,SAAS;IAEd,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAJhB,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,MAAM,MAAM,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAChC,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,EACjC,gBAAgB,EAAE,MAAM,MAAM;IAInD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBtC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAS9C;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqBtE,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAQ1F"}
@@ -27,7 +27,7 @@ export class ApiClient {
27
27
  return this._httpClient.get('/WebUntis/api/rest/view/v1/app/data', {
28
28
  Authorization: `Bearer ${token}`,
29
29
  'tenant-id': tenantId,
30
- Cookie: cookies,
30
+ Cookie: cookies
31
31
  });
32
32
  }
33
33
  /**
@@ -52,7 +52,11 @@ export class ApiClient {
52
52
  Authorization: `Bearer ${token}`,
53
53
  'tenant-id': tenantId,
54
54
  'x-webuntis-api-school-year-id': schoolYearId,
55
- Cookie: cookies,
55
+ Cookie: cookies
56
56
  });
57
57
  }
58
+ async fetchHomeworksLessons(params) {
59
+ const cookies = this._getCookies();
60
+ return await this._httpClient.get(`/WebUntis/api/homeworks/lessons?${params}`, { Cookie: cookies });
61
+ }
58
62
  }
@@ -0,0 +1,18 @@
1
+ import { ApiClient } from '../clients/Api';
2
+ import { HomeworksLessonsData } from '../types/homework';
3
+ /**
4
+ * Service for managing homeworks
5
+ */
6
+ export declare class HomeworksService {
7
+ private readonly _apiClient;
8
+ constructor(_apiClient: ApiClient);
9
+ /**
10
+ * Get homeworks and lessons
11
+ */
12
+ getHomeworksLessons(start: Date, end: Date): Promise<HomeworksLessonsData>;
13
+ /**
14
+ * Build query parameters for homeworks and lessons request
15
+ */
16
+ private _buildHomeworksLessonsParams;
17
+ }
18
+ //# sourceMappingURL=Homeworks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Homeworks.d.ts","sourceRoot":"","sources":["../../src/services/Homeworks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;GAEG;AACH,qBAAa,gBAAgB;IACb,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,SAAS;IAElD;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMhF;;OAEG;IACH,OAAO,CAAC,4BAA4B;CAYvC"}
@@ -0,0 +1,29 @@
1
+ import { UtilsDate } from '../utils/date';
2
+ /**
3
+ * Service for managing homeworks
4
+ */
5
+ export class HomeworksService {
6
+ _apiClient;
7
+ constructor(_apiClient) {
8
+ this._apiClient = _apiClient;
9
+ }
10
+ /**
11
+ * Get homeworks and lessons
12
+ */
13
+ async getHomeworksLessons(start, end) {
14
+ const params = this._buildHomeworksLessonsParams(start, end);
15
+ const response = await this._apiClient.fetchHomeworksLessons(params);
16
+ return response.data;
17
+ }
18
+ /**
19
+ * Build query parameters for homeworks and lessons request
20
+ */
21
+ _buildHomeworksLessonsParams(start, end) {
22
+ const startDate = UtilsDate.formatDate(start, "YYYYMMDD");
23
+ const endDate = UtilsDate.formatDate(end, "YYYYMMDD");
24
+ return new URLSearchParams({
25
+ startDate: startDate,
26
+ endDate: endDate,
27
+ });
28
+ }
29
+ }
@@ -16,9 +16,5 @@ export declare class TimetableService {
16
16
  * Build query parameters for timetable request
17
17
  */
18
18
  private _buildTimetableParams;
19
- /**
20
- * Format date to YYYY-MM-DD
21
- */
22
- private _formatDate;
23
19
  }
24
20
  //# sourceMappingURL=Timetable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Timetable.d.ts","sourceRoot":"","sources":["../../src/services/Timetable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;GAEG;AACH,qBAAa,gBAAgB;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,UAAU,EAAE,SAAS,EACrB,YAAY,EAAE,qBAAqB;IAGxD;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAYzE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACH,OAAO,CAAC,WAAW;CAGtB"}
1
+ {"version":3,"file":"Timetable.d.ts","sourceRoot":"","sources":["../../src/services/Timetable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;GAEG;AACH,qBAAa,gBAAgB;IAErB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,UAAU,EAAE,SAAS,EACrB,YAAY,EAAE,qBAAqB;IAGxD;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAYzE;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAmBhC"}
@@ -1,4 +1,5 @@
1
1
  import { AuthenticationError } from "../errors/Authentication";
2
+ import { UtilsDate } from '../utils/date';
2
3
  /**
3
4
  * Service for fetching timetable data
4
5
  */
@@ -24,8 +25,8 @@ export class TimetableService {
24
25
  * Build query parameters for timetable request
25
26
  */
26
27
  _buildTimetableParams(start, end, personId) {
27
- const startDate = this._formatDate(start);
28
- const endDate = this._formatDate(end);
28
+ const startDate = UtilsDate.formatDate(start);
29
+ const endDate = UtilsDate.formatDate(end);
29
30
  return new URLSearchParams({
30
31
  start: startDate,
31
32
  end: endDate,
@@ -37,10 +38,4 @@ export class TimetableService {
37
38
  layout: 'START_TIME',
38
39
  });
39
40
  }
40
- /**
41
- * Format date to YYYY-MM-DD
42
- */
43
- _formatDate(date) {
44
- return date.toISOString().split('T')[0];
45
- }
46
41
  }
@@ -0,0 +1,34 @@
1
+ export interface HomeworkRecord {
2
+ homeworkId: number;
3
+ teacherId: number;
4
+ elementIds: number[];
5
+ }
6
+ export interface Homework {
7
+ id: number;
8
+ lessonId: number;
9
+ date: number;
10
+ dueDate: number;
11
+ text: string;
12
+ remark: string;
13
+ completed: boolean;
14
+ attachments: unknown[];
15
+ }
16
+ export interface Teacher {
17
+ id: number;
18
+ name: string;
19
+ }
20
+ export interface Lesson {
21
+ id: number;
22
+ subject: string;
23
+ lessonType: string;
24
+ }
25
+ export interface HomeworksLessonsData {
26
+ records: HomeworkRecord[];
27
+ homeworks: Homework[];
28
+ teachers: Teacher[];
29
+ lessons: Lesson[];
30
+ }
31
+ export interface HomeworksLessonsResponse {
32
+ data: HomeworksLessonsData;
33
+ }
34
+ //# sourceMappingURL=homework.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homework.d.ts","sourceRoot":"","sources":["../../src/types/homework.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,oBAAoB,CAAC;CAC9B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ export type Format = "YYYY-MM-DD" | "YYYYMMDD";
2
+ export declare class UtilsDate {
3
+ /**
4
+ * Format date to YYYY-MM-DD or YYYYMMDD
5
+ */
6
+ static formatDate(date: Date, format?: Format): string;
7
+ }
8
+ //# sourceMappingURL=date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;AAE/C,qBAAa,SAAS;IAClB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,GAAE,MAAqB,GAAG,MAAM;CASvE"}
@@ -0,0 +1,12 @@
1
+ export class UtilsDate {
2
+ /**
3
+ * Format date to YYYY-MM-DD or YYYYMMDD
4
+ */
5
+ static formatDate(date, format = "YYYY-MM-DD") {
6
+ const isoDate = date.toISOString().split('T')[0];
7
+ if (format === "YYYYMMDD") {
8
+ return isoDate.replace(/-/g, '');
9
+ }
10
+ return isoDate;
11
+ }
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webuntis-client",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "A Web Untis API Client",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",