wip: fetch more data
This commit is contained in:
parent
6130fdb796
commit
9276db3c76
|
@ -68,11 +68,11 @@ async function run() {
|
||||||
const menu = await api.getMenu(children[0])
|
const menu = await api.getMenu(children[0])
|
||||||
console.log(menu)
|
console.log(menu)
|
||||||
|
|
||||||
/*
|
|
||||||
console.log('calendar')
|
console.log('calendar')
|
||||||
const calendar = await api.getCalendar(children[0])
|
const calendar = await api.getCalendar(children[0])
|
||||||
console.log(calendar)
|
console.log(calendar)
|
||||||
|
/*
|
||||||
/*console.log('classmates')
|
/*console.log('classmates')
|
||||||
const classmates = await api.getClassmates(children[0])
|
const classmates = await api.getClassmates(children[0])
|
||||||
console.log(classmates)
|
console.log(classmates)
|
||||||
|
|
|
@ -191,11 +191,100 @@ export class ApiAdmentum extends EventEmitter implements Api {
|
||||||
}) as Skola24Child & EtjanstChild);
|
}) as Skola24Child & EtjanstChild);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async getCalendar(child: EtjanstChild): Promise<CalendarItem[]> {
|
async getCalendar(child: EtjanstChild): Promise<CalendarItem[]> {
|
||||||
|
try {
|
||||||
|
if (!this.isLoggedIn) {
|
||||||
|
throw new Error('Not logged in...')
|
||||||
|
}
|
||||||
|
const now = DateTime.local()
|
||||||
|
const [year, week] = now.toISOWeekDate().split('-')
|
||||||
|
const isoWeek = week.replace('W','')
|
||||||
|
|
||||||
|
const fetchUrl = apiUrls.overview(year.toString(), isoWeek.toString())
|
||||||
|
console.log('fetching calendar', fetchUrl)
|
||||||
|
//const calendarResponse = await this.fetch('get-calendar', fetchUrl)
|
||||||
|
//const calendarResponseJson = await calendarResponse.json()
|
||||||
|
const overviewResponse = await this.fetch('get-overview', fetchUrl)
|
||||||
|
console.log('overview response', overviewResponse)
|
||||||
|
const overviewJson = await overviewResponse.json()
|
||||||
|
console.log('overview response', overviewJson)
|
||||||
|
const schedule_events = (await overviewJson)?.data?.schedule_events // .breaks: [] | .assignments: []
|
||||||
|
if (!schedule_events) {
|
||||||
|
return Promise.resolve([])
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
"url": "https://skola.admentum.se/api/v1/schedule_event_instances/2990834/",
|
||||||
|
"id": 2990834,
|
||||||
|
"school_id": 824,
|
||||||
|
"start_date": "2023-08-07",
|
||||||
|
"end_date": "2023-08-07",
|
||||||
|
"schedule_event": {
|
||||||
|
"url": "https://skola.admentum.se/api/v1/schedule_events/148722/",
|
||||||
|
"id": 148722,
|
||||||
|
"eid": null,
|
||||||
|
"schedule_id": 4385,
|
||||||
|
"name": "Engelska",
|
||||||
|
"start_time": "08:00:00",
|
||||||
|
"end_time": "09:30:00",
|
||||||
|
"rooms": [
|
||||||
|
{
|
||||||
|
"url": "https://skola.admentum.se/api/v1/rooms/7200/",
|
||||||
|
"id": 7200
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"teachers": [
|
||||||
|
{
|
||||||
|
"url": "https://skola.admentum.se/api/v1/users/437302/",
|
||||||
|
"id": 437302
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"schedule_groups": [],
|
||||||
|
"primary_groups": [
|
||||||
|
{
|
||||||
|
"url": "https://skola.admentum.se/api/v1/primary_groups/36874/",
|
||||||
|
"id": 36874
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"weekly_interval": ""
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
return Promise.resolve(schedule_events.map(({ menu, date } : any) => ({
|
||||||
|
title: date,
|
||||||
|
description: menu
|
||||||
|
})))
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Error fetching menu', e)
|
||||||
|
return Promise.resolve([])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getScheduledEvents(child: EtjanstChild): Promise<CalendarItem[]> {
|
||||||
if (!this.isLoggedIn) {
|
if (!this.isLoggedIn) {
|
||||||
throw new Error('Not logged in...')
|
throw new Error('Not logged in...')
|
||||||
}
|
}
|
||||||
|
console.log('get calendar')
|
||||||
|
const fetchUrl = apiUrls.schedule_events;
|
||||||
|
console.log('fetching calendar', fetchUrl)
|
||||||
|
const eventsResponse = await this.fetch('scheduled-events', fetchUrl, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json, text/plain, */*',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
if (eventsResponse.status === 403) {
|
||||||
|
console.error('Not allwed. Error headers', eventsResponse.headers)
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
if (eventsResponse.status !== 200) {
|
||||||
|
console.error('Error headers', eventsResponse.headers)
|
||||||
|
throw new Error('Could not fetch children. Response code: ' + eventsResponse.status)
|
||||||
|
}
|
||||||
|
|
||||||
|
const eventsResponseJson = await eventsResponse.json();
|
||||||
|
console.log('eventsResponseJson', eventsResponseJson)
|
||||||
return []
|
return []
|
||||||
// const fetchUrl = apiUrls.schedule_events
|
// const fetchUrl = apiUrls.schedule_events
|
||||||
// const events = await this.fetch('scheduled-events', fetchUrl, {
|
// const events = await this.fetch('scheduled-events', fetchUrl, {
|
||||||
|
@ -214,6 +303,38 @@ export class ApiAdmentum extends EventEmitter implements Api {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
getClassmates(_child: EtjanstChild): Promise<Classmate[]> {
|
getClassmates(_child: EtjanstChild): Promise<Classmate[]> {
|
||||||
// TODO: We could get this from the events a child is associated with...
|
// TODO: We could get this from the events a child is associated with...
|
||||||
|
/*
|
||||||
|
GET /api/v1/schedule_groups/423145/
|
||||||
|
{
|
||||||
|
"url": "https://skola.admentum.se/api/v1/schedule_groups/423145/",
|
||||||
|
"id": 423145,
|
||||||
|
"eid": null,
|
||||||
|
"schedule": {
|
||||||
|
"url": "https://skola.admentum.se/api/v1/schedules/4385/",
|
||||||
|
"id": 4385,
|
||||||
|
"school_year": "23/24"
|
||||||
|
},
|
||||||
|
"name": "1 A SV",
|
||||||
|
"guid": null,
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"url": "https://skola.admentum.se/api/v1/users/436741/",
|
||||||
|
"id": 436741,
|
||||||
|
"email": null,
|
||||||
|
"first_name": "Arvid",
|
||||||
|
"last_name": "Forslin",
|
||||||
|
"role": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://skola.admentum.se/api/v1/users/436747/",
|
||||||
|
"id": 436747,
|
||||||
|
"email": null,
|
||||||
|
"first_name": "Emmy",
|
||||||
|
"last_name": "Granström",
|
||||||
|
"role": 1
|
||||||
|
}
|
||||||
|
...
|
||||||
|
*/
|
||||||
if (!this.isLoggedIn) {
|
if (!this.isLoggedIn) {
|
||||||
throw new Error('Not logged in...')
|
throw new Error('Not logged in...')
|
||||||
}
|
}
|
||||||
|
@ -268,24 +389,34 @@ export class ApiAdmentum extends EventEmitter implements Api {
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
async getMenu(_child: EtjanstChild): Promise<MenuItem[]> {
|
async getMenu(_child: EtjanstChild): Promise<MenuItem[]> {
|
||||||
if (!this.isLoggedIn) {
|
try {
|
||||||
throw new Error('Not logged in...')
|
if (!this.isLoggedIn) {
|
||||||
|
throw new Error('Not logged in...')
|
||||||
|
}
|
||||||
|
const now = DateTime.local()
|
||||||
|
const [year, week] = now.toISOWeekDate().split('-')
|
||||||
|
const isoWeek = week.replace('W', '')
|
||||||
|
|
||||||
|
const fetchUrl = apiUrls.menu(year.toString(), isoWeek.toString())
|
||||||
|
console.log('fetching menu', fetchUrl)
|
||||||
|
const menuResponse = (await this.fetch('get-menu', fetchUrl))
|
||||||
|
console.log('menu response', menuResponse)
|
||||||
|
const menuResponseJson = await menuResponse.text()
|
||||||
|
console.log('menu response', menuResponseJson)
|
||||||
|
const days = (await menuResponseJson)
|
||||||
|
//if (!days) {
|
||||||
|
return Promise.resolve([])
|
||||||
|
//}
|
||||||
|
/*return Promise.resolve(
|
||||||
|
days.map(({ menu, date }: any) => ({
|
||||||
|
title: date,
|
||||||
|
description: menu,
|
||||||
|
}))
|
||||||
|
)*/
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Error fetching menu', e)
|
||||||
|
return Promise.resolve([])
|
||||||
}
|
}
|
||||||
const now = DateTime.local()
|
|
||||||
const [year, week] = now.toISOWeekDate().split('-')
|
|
||||||
const isoWeek = week.replace('W','')
|
|
||||||
|
|
||||||
const fetchUrl = apiUrls.menu(year.toString(), isoWeek.toString())
|
|
||||||
|
|
||||||
const menuResponse = (await this.fetch('get-menu', fetchUrl))
|
|
||||||
const menuResponseJson = await menuResponse.json()
|
|
||||||
console.log('menu response', menuResponseJson)
|
|
||||||
const days = (await menuResponseJson)?.data?.food_week?.food_days
|
|
||||||
|
|
||||||
return Promise.resolve(days.map(({ menu, date } : any) => ({
|
|
||||||
title: date,
|
|
||||||
description: menu
|
|
||||||
})))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async getChildEventsWithAssociatedMembers(child: EtjanstChild) {
|
async getChildEventsWithAssociatedMembers(child: EtjanstChild) {
|
||||||
|
|
|
@ -94,7 +94,7 @@ export const parseCalendarItem = (jsonData: any): any => {
|
||||||
timeStart: lesson.time.substring(0, 5),
|
timeStart: lesson.time.substring(0, 5),
|
||||||
timeEnd: lesson.time.substring(9),
|
timeEnd: lesson.time.substring(9),
|
||||||
dayOfWeek,
|
dayOfWeek,
|
||||||
blockName: lesson.title || lesson.subject_name
|
blockName: lesson.title || lesson.subject_name
|
||||||
} as TimetableEntry)
|
} as TimetableEntry)
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
|
@ -17,6 +17,7 @@ export const apiUrls = {
|
||||||
lessons: api + 'lessons',
|
lessons: api + 'lessons',
|
||||||
organisations: api + 'organisations',
|
organisations: api + 'organisations',
|
||||||
orientations: api + 'orientations',
|
orientations: api + 'orientations',
|
||||||
|
overview: (year: string, week: string) => baseUrl + `overview?week=${week}&year=${year}`,
|
||||||
permission_groups: api + 'permission_groups',
|
permission_groups: api + 'permission_groups',
|
||||||
primary_group_enrollments: api + 'primary_group_enrollments',
|
primary_group_enrollments: api + 'primary_group_enrollments',
|
||||||
primary_group_municipality_statistics:
|
primary_group_municipality_statistics:
|
||||||
|
|
Loading…
Reference in New Issue