diff --git a/libs/api-hjarntorget/lib/apiHjarntorget.ts b/libs/api-hjarntorget/lib/apiHjarntorget.ts index 8e1f93d10..295a1bc32 100644 --- a/libs/api-hjarntorget/lib/apiHjarntorget.ts +++ b/libs/api-hjarntorget/lib/apiHjarntorget.ts @@ -45,6 +45,7 @@ import { calendarsUrl, calendarEventUrl } from './routes' +import { fakeFetcher } from './fake/fakeFetcher' function getDateOfISOWeek(week: number, year: number,) { @@ -61,6 +62,7 @@ function getDateOfISOWeek(week: number, year: number,) { export class ApiHjarntorget extends EventEmitter implements Api { private fetch: Fetcher + private realFetcher: Fetcher private personalNumber?: string @@ -68,13 +70,28 @@ export class ApiHjarntorget extends EventEmitter implements Api { public isLoggedIn: boolean = false + private _isFake: boolean = false; + + public set isFake(fake: boolean) { + this._isFake = fake + if(this._isFake) { + this.fetch = fakeFetcher + } else { + this.fetch = this.realFetcher + } + } + + public get isFake() { + return this._isFake + } + constructor( fetch: Fetch, cookieManager: CookieManager, options?: FetcherOptions ) { super() - this.fetch = wrap(fetch, options) + this.realFetcher = this.fetch = wrap(fetch, options) this.cookieManager = cookieManager } @@ -89,7 +106,7 @@ export class ApiHjarntorget extends EventEmitter implements Api { startDateIso: from.toISODate(), endDateIso: to.toISODate(), } - const lessonsResponse = await this.fetch('lessons', lessonsUrl(lessonParams)) + const lessonsResponse = await this.fetch(`lessons-${lessonParams.forUser}`, lessonsUrl(lessonParams)) const lessonsResponseJson: any[] = await lessonsResponse.json() return lessonsResponseJson.map(l => { @@ -220,7 +237,6 @@ export class ApiHjarntorget extends EventEmitter implements Api { throw new Error('Not logged in...') } - const infoResponse = await this.fetch('info', infoUrl) const infoResponseJson: any[] = await infoResponse.json() // TODO: Filter out read messages? @@ -246,7 +262,7 @@ export class ApiHjarntorget extends EventEmitter implements Api { async getNewsDetails(_child: EtjanstChild, item: NewsItem): Promise { - this.fetch('infoSetReadUrl', infoSetReadUrl(item), { + await this.fetch('infoSetReadUrl', infoSetReadUrl(item), { method: 'POST', }) @@ -274,7 +290,7 @@ export class ApiHjarntorget extends EventEmitter implements Api { const eventMembers = await Promise.all(rolesInEvenResponseJson.map(async r => { const roleId = r.id - const membersWithRoleResponse = await this.fetch(`event-role-members-${eventId}`, membersWithRoleUrl(eventId, roleId)) + const membersWithRoleResponse = await this.fetch(`event-role-members-${eventId}-${roleId}`, membersWithRoleUrl(eventId, roleId)) const membersWithRoleResponseJson: any[] = await membersWithRoleResponse.json() return membersWithRoleResponseJson })) @@ -326,7 +342,7 @@ export class ApiHjarntorget extends EventEmitter implements Api { startDateIso: startDate.toISODate(), endDateIso: endDate.toISODate(), } - const lessonsResponse = await this.fetch('lessons', lessonsUrl(lessonParams)) + const lessonsResponse = await this.fetch(`lessons-${lessonParams.forUser}`, lessonsUrl(lessonParams)) const lessonsResponseJson: any[] = await lessonsResponse.json() return lessonsResponseJson.map(l => { @@ -359,6 +375,11 @@ export class ApiHjarntorget extends EventEmitter implements Api { } public async login(personalNumber?: string): Promise { + // short circut the bank-id login if in fake mode + if (personalNumber !== undefined && personalNumber.endsWith('1212121212')) return this.fakeMode() + + this.isFake = false + console.log("initiating login to hjarntorget") const beginLoginRedirectResponse = await this.fetch('begin-login', beginLoginUrl, { redirect: 'follow' @@ -424,4 +445,17 @@ export class ApiHjarntorget extends EventEmitter implements Api { return statusChecker } + + private async fakeMode(): Promise { + this.isFake = true + + setTimeout(() => { + this.isLoggedIn = true + this.emit('login') + }, 50) + + const emitter: any = new EventEmitter() + emitter.token = 'fake' + return emitter + } } \ No newline at end of file diff --git a/libs/api-hjarntorget/lib/fake/calendars.ts b/libs/api-hjarntorget/lib/fake/calendars.ts new file mode 100644 index 000000000..1a5afc640 --- /dev/null +++ b/libs/api-hjarntorget/lib/fake/calendars.ts @@ -0,0 +1,21 @@ +export const calendars = () => ({ + "url": "https://hjarntorget.goteborg.se/pp/system/calendar/cal_events.jsp", + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36", + "cookie": "REMOVED" + }, + "status": 200, + "statusText": "200", + "text": () => Promise.resolve("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThe PING PONG Calendar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\n\t\n\n\n\n\t\t\n\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t

Make a selection

\n\n\t\t\t\t

Here you get an overview of your calendars. Choose from which calendars you wish to see events. Choose if you want to search for a word. Click Show to see the result.

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
Show calendar events for the checked calendars
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\n
\"\"
\n\n\n\n
removed checkbox
\"\"
\n\n\n\n
removed checkbox
\"\"
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Group the events per calendar\n\t\t\t\t\t\t\t\t\t
Don't group\n\t\t\t\t\t\t\t\t\t
From - to:\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
Search for
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t
\n\n\t\t\t

Calendar events

\n\n\t\t\t\t\n\t\t\t\t

\n\t\t\t\t\t No events was found \n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t\t\n\n\t\t\t
\n\t\t
\n\t
\n\n\n\n\n") +}) as any as Response + +export const calendar_14241345 = () => ({ + "url": "https://hjarntorget.goteborg.se/pp/system/calendar/cal_events.jsp?order_by=start_date&show_cal_ids=14241345&mode=separate&filter_start_date=2021-11-09&filter_end_date=2021-12-09&search_for=", + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36", + "cookie": "REMOVED" + }, + "status": 200, + "statusText": "200", + "text": () => Promise.resolve("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThe PING PONG Calendar\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t
\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\n\t\n\n\n\n\t\t\n\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t

Make a selection

\n\n\t\t\t\t

Here you get an overview of your calendars. Choose from which calendars you wish to see events. Choose if you want to search for a word. Click Show to see the result.

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
Show calendar events for the checked calendars
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\n
removed checkbox
\"\"
\n\n\n\n
removed checkbox
\"\"
\n\n\n\n
removed checkbox
\"\"
\n\n\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
Group the events per calendar\n\t\t\t\t\t\t\t\t\t
Don't group\n\t\t\t\t\t\t\t\t\t
From - to:\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
Search for
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t
\n\n\t\t\t

Calendar events

\n\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t\t\tTitle\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDates\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tTimes\n\n\t\t\t\t\t\t\t
138JÄTS Provschema år 8
\"\"
\nProv/komplettering franska 2021-11-0913:00-14:00
\"\"
\nTyska läxförhör2021-11-0913:00-13:30\"The
\"\"
\nLäxa i franska2021-11-1109:40-10:20\"The
\"\"
\nSpanskaprov Repasamos 1- 42021-11-1110:00-11:00
\"\"
\nTyska läxförhör2021-11-1613:00-13:30\"The
\"\"
\nLäxa i franska2021-11-1809:40-10:20\"The
\"\"
\nDeadline engelska - Postcard from Great Britain2021-11-1915:00-16:00\"The
\"\"
\nLäxa engelska2021-11-2208:00-09:00\"The
\"\"
\nTyska läxförhör2021-11-2313:00-13:30\"The
\"\"
\nLäxa i franska2021-11-2509:40-10:20\"The
\"\"
\nLäxa engelska2021-11-2908:00-09:00\"The
\"\"
\nProv franska åk 72021-11-3012:00-13:00
\"\"
\nLäxa i franska2021-12-0209:40-10:20\"The
\"\"
\nLäxa engelska2021-12-0608:00-09:00\"The
\n\n\t\t\t\t\n\n\t\t\t
\n\t\t
\n\t
\n\n\n\n\n") +}) as any as Response \ No newline at end of file diff --git a/libs/api-hjarntorget/lib/fake/current-user.ts b/libs/api-hjarntorget/lib/fake/current-user.ts new file mode 100644 index 000000000..5a2ed961d --- /dev/null +++ b/libs/api-hjarntorget/lib/fake/current-user.ts @@ -0,0 +1,18 @@ +export const currentUser = () => ({ + "url": "https://hjarntorget.goteborg.se/api/core/current-user", + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36", + "cookie": "REMOVED" + }, + "status": 200, + "statusText": "200", + "json": () => Promise.resolve({ + "id": "889911_goteborgsstad", + "firstName": "TOLV", + "lastName": "TOLVAN", + "email": null, + "online": true, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }) +}) as any as Response \ No newline at end of file diff --git a/libs/api-hjarntorget/lib/fake/event-role-members.ts b/libs/api-hjarntorget/lib/fake/event-role-members.ts new file mode 100644 index 000000000..37e0300b1 --- /dev/null +++ b/libs/api-hjarntorget/lib/fake/event-role-members.ts @@ -0,0 +1,213 @@ +export const eventRoleMembers21 = () => ({ + "url": "https://hjarntorget.goteborg.se/api/event-members/members-having-role?eventId=21&roleId=821", + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36", + "cookie": "REMOVED" + }, + "status": 200, + "statusText": "200", + "json": () => Promise.resolve([ + { + "id": "__system$virtual$calendar__", + "firstName": "Kalendern", + "lastName": "i PING PONG", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/default/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + // Klass: 8B + "id": "133700_goteborgsstad", + "firstName": "Azra", + "lastName": "Göransson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + ]) +}) as any as Response + +export const eventRoleMembers14 = () => ({ + "url": "https://hjarntorget.goteborg.se/api/event-members/members-having-role?eventId=14&roleId=821", + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36", + "cookie": "REMOVED" + }, + "status": 200, + "statusText": "200", + "json": () => Promise.resolve([ + { + // Klass: 8B + "id": "133700_goteborgsstad", + "firstName": "Azra", + "lastName": "Göransson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "362119_goteborgsstad", + "firstName": "Elina", + "lastName": "Cocolis", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "999999_goteborgsstad", + "firstName": "Sanne", + "lastName": "Berggren", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "168925_goteborgsstad", + "firstName": "Teddy", + "lastName": "Karlsson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "494949_goteborgsstad", + "firstName": "Fideli", + "lastName": "Sundström", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + ]) +}) as any as Response + +export const eventRoleMembers18 = () => ({ + "url": "https://hjarntorget.goteborg.se/api/event-members/members-having-role?eventId=18&roleId=821", + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36", + "cookie": "REMOVED" + }, + "status": 200, + "statusText": "200", + "json": () => Promise.resolve([ + { + "id": "776655_goteborgsstad", + "firstName": "Walid", + "lastName": "Söderström", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "388601_goteborgsstad", + "firstName": "Rosa", + "lastName": "Fredriksson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "654654_goteborgsstad", + "firstName": "Moses", + "lastName": "Johansson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "1313131_goteborgsstad", + "firstName": "Haris", + "lastName": "Jonsson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "887766_goteborgsstad", + "firstName": "Neo", + "lastName": "Lundström", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + // Klass: 5A + "id": "123456_goteborgsstad", + "firstName": "Jon", + "lastName": "Göransson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + ]) +}) as any as Response + +export const eventRoleMembers24 = () => ({ + "url": "https://hjarntorget.goteborg.se/api/event-members/members-having-role?eventId=24&roleId=821", + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36", + "cookie": "REMOVED" + }, + "status": 200, + "statusText": "200", + "json": () => Promise.resolve([ + { + "id": "393939_goteborgsstad", + "firstName": "Malik Maria", + "lastName": "Henriksson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "444444_goteborgsstad", + "firstName": "Idas", + "lastName": "Svensson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "818181_goteborgsstad", + "firstName": "Nadja", + "lastName": "Ekström", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + "id": "919191_goteborgsstad", + "firstName": "Karim", + "lastName": "Fakir", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + { + // Klass: Förskola + "id": "133737_goteborgsstad", + "firstName": "Havin", + "lastName": "Göransson", + "email": null, + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + ]) +}) as any as Response \ No newline at end of file diff --git a/libs/api-hjarntorget/lib/fake/events.ts b/libs/api-hjarntorget/lib/fake/events.ts new file mode 100644 index 000000000..281262405 --- /dev/null +++ b/libs/api-hjarntorget/lib/fake/events.ts @@ -0,0 +1,35 @@ +export const events = () => ({ + "url": "https://hjarntorget.goteborg.se/api/events/events-sorted-by-name?offset=0&limit=100", + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36", + "cookie": "REMOVED" + }, + "status": 200, + "statusText": "200", + "json": () => Promise.resolve([ + { + "id": 18, + "name": "138JÄTS 21/22 5A", + "url": "https://hjarntorget.goteborg.se/o/apiAccessWithKey.do?forwardUrl=%2FlaunchCourse.do%3Fid%3D12", + "state": "ONGOING" + }, + { + "id": 14, + "name": "138JÄTS 21/22 8B", + "url": "https://hjarntorget.goteborg.se/o/apiAccessWithKey.do?forwardUrl=%2FlaunchCourse.do%3Fid%3D14", + "state": "ONGOING" + }, + { + "id": 21, + "name": "138JÄTS Provschema år 8", + "url": "https://hjarntorget.goteborg.se/o/apiAccessWithKey.do?forwardUrl=%2FlaunchCourse.do%3Fid%3D21", + "state": "ONGOING" + }, + { + "id": 24, + "name": "139SS27F Södra Bangatan förskola", + "url": "https://hjarntorget.goteborg.se/o/apiAccessWithKey.do?forwardUrl=%2FlaunchCourse.do%3Fid%3D24", + "state": "ONGOING" + } + ]) +}) as any as Response \ No newline at end of file diff --git a/libs/api-hjarntorget/lib/fake/fakeFetcher.ts b/libs/api-hjarntorget/lib/fake/fakeFetcher.ts new file mode 100644 index 000000000..59d9900e7 --- /dev/null +++ b/libs/api-hjarntorget/lib/fake/fakeFetcher.ts @@ -0,0 +1,38 @@ +import { Fetcher } from '../../../api/lib/fetcher' +import { Response } from '../../../api/lib/types' +import { calendars, calendar_14241345 } from './calendars'; +import { currentUser } from './current-user'; +import { events } from './events'; +import { lessons_123456_goteborgsstad, lessons_133700_goteborgsstad, lessons_133737_goteborgsstad } from './lessons'; +import { myChildren } from './my-children'; +import { wallEvents } from './wall-events'; +import { information } from './information' +import { genericRolesInEvent } from './roles-in-event'; +import { eventRoleMembers14, eventRoleMembers18, eventRoleMembers21, eventRoleMembers24 } from './event-role-members'; + +const fetchMappings: { [name:string]: () => Response} = { + 'current-user': currentUser, + 'events': events, + 'my-children': myChildren, + 'wall-events': wallEvents, + 'lessons-133700_goteborgsstad': lessons_133700_goteborgsstad, + 'lessons-133737_goteborgsstad': lessons_133737_goteborgsstad, + 'lessons-123456_goteborgsstad': lessons_123456_goteborgsstad, + 'info': information, + 'roles-in-event-14': genericRolesInEvent, + 'roles-in-event-18': genericRolesInEvent, + 'roles-in-event-21': genericRolesInEvent, + 'roles-in-event-24': genericRolesInEvent, + 'event-role-members-14-821': eventRoleMembers14, + 'event-role-members-18-821': eventRoleMembers18, + 'event-role-members-21-821': eventRoleMembers21, + 'event-role-members-24-821': eventRoleMembers24, + 'calendars': calendars, + 'calendar-14241345': calendar_14241345, + +} + +export const fakeFetcher: Fetcher = (name: string, url: string, init?: any): Promise => { + const responder = fetchMappings[name] ?? (() => {throw new Error("Request not faked for name: " + name)}) + return Promise.resolve(responder()); +} diff --git a/libs/api-hjarntorget/lib/fake/information.ts b/libs/api-hjarntorget/lib/fake/information.ts new file mode 100644 index 000000000..4430b7be2 --- /dev/null +++ b/libs/api-hjarntorget/lib/fake/information.ts @@ -0,0 +1,110 @@ +export const information = () => ({ + "url": "https://hjarntorget.goteborg.se/api/information/messages-by-date-desc?messageStatus=CURRENT&offset=0&limit=10&language=en", + "headers": { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36", + "cookie": "REMOVED" + }, + "status": 200, + "statusText": "200", + "json": () => Promise.resolve([ + { + "id": 3276034, + "title": "Nu får du och ditt barn tillgång till Polyglutt hemma", + "body": "

Nu får alla barn som går i kommunal förskola i Göteborg tillgång till bilderboksappen Polyglutt hemifrån! Det innebär att du som vårdnadshavare och barn kan ta del av ett bibliotek av böcker på både svenska och 60 andra språk, inklusive TAKK och teckenspråk via telefon eller läsplatta.<\/strong><\/p>\r\n

Polyglutt är en app med bilderböcker som fungerar som ett verktyg för att arbeta med språkutveckling och litteratur i förskolan och hemma.<\/p>\r\n

Polyglutt Home Access är en tjänst som innebär att alla barn som går i kommunal förskola i Göteborg får tillgång till ett bibliotek av böcker på både svenska och 60 andra språk, inklusive TAKK och teckenspråk hemifrån. Varje förskola kan också skapa egna bokhyllor med boktips i appen som du och ditt barn kan läsa hemma.<\/p>\r\n

Tjänsten fungerar på iPad, Androidplattor och i mobilen.<\/p>\r\n

Vill du veta mer om tjänsten, kontakta pedagogerna på ditt barns förskola.<\/p>", + "creator": { + "id": "501747_goteborgsstad", + "firstName": "Information Digitalisering", + "lastName": "Innovation", + "email": "information.digitaliseringochinnovation@forskola.goteborg.se", + "online": false, + "imagePath": "/pp/lookAndFeel/skins/hjarntorget/icons/monalisa_large.png", + "extraInfoInCatalog": "" + }, + "recipientGroups": [ + { + "id": 1121821, + "name": "DL Göteborg Vhavare förskolor" + } + ], + "created": { + "ts": 1629970713111, + "timezoneOffsetMinutes": 120 + }, + "attachments": [], + "readByUser": false, + "archivedByUser": false + }, + { + "id": 3270718, + "title": "Information från grundskoleförvaltningen", + "body": "

Till vårdnadshavare med barn på Göteborgs Stads grundskolor och grundsärskolor.<\/p>\r\n

Spridningen av covid-19 har ökat. Därför är det viktigt att alla hjälper till att minska spridningen av smitta.<\/p>\r\n

Vi fortsätter hålla avstånd<\/h2>\r\n