feat: 🎸 lade till hämta alla barn, för att få rätt id:n

This commit is contained in:
Kajetan Kazimierczak 2021-04-05 01:18:15 +02:00
parent 5ed9836d23
commit 6738bd14fd
2 changed files with 55 additions and 9 deletions

View File

@ -4,12 +4,17 @@ Schema POC
## Status
POC fungerar, jag tror att jag förstår ungefär hur systemen fungerar. Har bara följt de request och de anrop som görs när jag är inloggad. Vet inte hur det fungerar för någon annan.
Jag har benat ut lite frågetecken angående id:n
Eftersom detta är ett annat system så har allting andra GUIDar än de vi får från skolplattformen. I värsta fall får vi matcha på namn.
Jag har har lagt till en funktion som hämtar alla ens barn och loopar igenom dem och skriver ut schema.
//Kajetan
## För att testa
Ändra xxx-xxx-xxx till ditt barns childId (eller sdsId - vet inte vilket än).
Lägg in en cookie från din webbläsare i 'cookie' fältet. Då ska koden logga in dig och visa schema för valt barn
cookie= 'din cookie'
getSchema(cookie, 'xxxx-xxxx-xxx', '15', '2021')
Kör igång

View File

@ -14,7 +14,7 @@ const sso = async (cookie, targetSystem) => {
return result
}
const getSchema = async (cookie, childId, week, year) => {
const getSchema = async (cookie, childId, unitId, week, year) => {
await sso(cookie, 'TimetableViewer')
const form = await fetch('https://fns.stockholm.se/ng/timetable/timetable-viewer/fns.stockholm.se/', { headers: { cookie }, redirect: 'follow', follow: 20 }).then(res => !res.ok ? Promise.reject(res.statusText) : res).then(res => res.text())
console.log('form', form)
@ -41,7 +41,7 @@ const getSchema = async (cookie, childId, week, year) => {
const body = {
renderKey: key,
host: 'fns.stockholm.se',
unitGuid: 'NmRhOGRhOTYtOWNkYy05ODJkLWY4ZjgtYTExNjFjNmViOGE5', // här är jag lite osäker - den verkar inte ändra sig.
unitGuid: unitId,
startDate: null,
endDate: null,
scheduleDay: 1,
@ -49,7 +49,7 @@ const getSchema = async (cookie, childId, week, year) => {
width: 375,
height: 550,
selectionType: 5,
selection: btoa(childId),
selection: childId,
showHeader: false,
periodText: '',
week,
@ -58,14 +58,14 @@ const getSchema = async (cookie, childId, week, year) => {
privateSelectionMode: true,
customerKey: ''
}
const { data: { lessonInfo } = {} } = await fetch('https://fns.stockholm.se/ng/api/render/timetable', {
const { data : {lessonInfo} } = await fetch('https://fns.stockholm.se/ng/api/render/timetable', {
headers: {
accept: 'application/json, text/javascript, */*; q=0.01',
'accept-language': 'en-US,en;q=0.9,sv;q=0.8',
'cache-control': 'no-cache',
'content-type': 'application/json',
pragma: 'no-cache',
'x-scope': '8a22163c-8662-4535-9050-bc5e1923df48',
'x-scope': scope,
cookie
},
referrer: 'https://fns.stockholm.se/ng/timetable/timetable-viewer/fns.stockholm.se/',
@ -78,5 +78,46 @@ const getSchema = async (cookie, childId, week, year) => {
console.log('lessonInfo', JSON.stringify(lessonInfo, null, 2))
}
const cookie = 'StockholmEServiceLanguage=1053,Svenska,Language,sv; ASP.NET_SessionId=wwpssgmavxf2n2pxevisxdgt; __RequestVerificationToken_L3ZhcmRuYWRzaGF2YXJl0=0uPyfGOlR0zuIiCkylXIxwRu-hVn8-s_00GVbJ987nPfH7RSASe-kXgJZMvQlmp_W0ezbcmNGSO-tzWa8z2LSlvigXhsQcjCmcAEtE-4IrA1; StockholmEserviceAcceptCookie=true; BIGipServerpool_etjanster3_prod_vhavare_19_https=836442028.47873.0000; BIGipServerpool_etjanster2_prod_int_19=836442028.20480.0000; SMIDENTITY=Ef4wFa5FSYCqynIDNVwajJE7lG1UmtCRFAKCJQ7kBzvGyVYCRZQ7nrTDTCCMn19YMfxp1rc2zeRJxU8FtdZFufYzc2Uxrgf6BO4fBQLUzbrKoK3VM+eZFDlkkcnOYGa0xJZy5qjvVCrJvsBBp8thshDiBy9/bHYBJt5iByiuMmQAQun1UVaFveNPY3i6qy5+LhUvcQyFo5d1Ha/WNdVgOGwcaqhtwaFQtsfRB80g2+p46fQO7j4Q0Lt7RrCK/HUOckiHnfYrLO43hLjGVr3nIV15eZp8Osu9XM2ewUNtUZFcc0nAvWNdtXors1S0oEuG7jCbWYRV/MfDFFp2XbudGrdVLyPGio17/khYzfCOEcnFV2u+3tQB95a+UKpWXNDmneOB+XtSAJlL+cZirhspVkcbkUg5l6XuIZDLknzfWOJpedQLBhAd8IrnhYHD3Yqc61wQ8LUA9FakDo4wUFGLPfSDWOkOmxL6DQJS197+mADztJy10Dk7155ZW6wgHS6vi+XWCY9TkNO+YnzDSUO3TIjjmrmVhy3O71VKizXZunbCy3L96aOi5qGqx0QDF6CU; WT_FPC=id=d00d2960-cc47-42f1-ac22-4cc8e5899c67:lv=1617482359477:ss=1617482329514; SMSESSION=GkwOpGjU18qBxiTG2OqZx1Xk8rApKFcqEY4SpX4j7YioL8XDX3x8SoDQ5LKGLisMakdKH2xCv66HKzhuy2yEYwuIRDlwPZtBHupmLy0RW83PEizlRosfPg5q41yoZGoKrfreb+rBmrI1nWz1njjnpfT8KIzZcxcsdKBKFmeNnH/DrqVecZrI/+zdHvkp3iQUa9c8/laBaNXA6m9Oxh14V/XhbBCECgRzLeme1AARtUnFLmEUrUJVe3jmkCU9FSWcMpr8lyaSXGbLkvfB11dJdIz9K0pzBxaOEFfamibXmDTe5VV6ZEz0eORKdw+CsJXS7uM4Rz5ybN1fmRBNDXQoPU6QvwKH1hkxbEd0aTKMRCe823hp0KMbwDbFzrOdAODCg055hMbpJOnQJl4ZC6UYX3IxpQtjaWBK7IIVEGP1/Kj8o8WeHNL8vuTuBPFDbX1bmazM4wSG5T4K6ZBhAI5p90CXPbMRQph47WGHHAHGUqIkJwH6wR1WPb6wqH76+6bmWoivNl2QCWByuI/CcG9C6ivt0MYXrrCmrmzmpUf+aqy/l4iquc4T8mS6wypKeMJ2mx4WhbHfPV2WrEg2S76cQ55H5b5VonFB2BQC52K2QMhtL4O5thlqlVUL15VxPX1fWMLtqY3bSk7duYGq2Sjvng+9pC2tj8QnNTj678gK78sZG8M/Rw1W4EJv4PNS0Fwf07QCfJIFQxT4nmqiLyb7copdV90+fTwvzPDL01Rwis2Sdmhwyk04vWtobpynluF1eQoWx5uyfFulwivIAdZYjozopmT4tepl5BoostsXaGRz/XW83JX8+plR75rYcMji8B5Xin5zSGKt0T9IPaUuy7TLUT1jejbTZR6t8Za/dGvv3Eq2qovvKtS4X7z2dBVRTvNWifRxZIHKmemkXRqhN4a73T/Hh8YOwb1K2aPGU4J8NFk0GYoXbZg7mxeD3FJu66ThFap8RD8FtqzRUPTvgzdcqCTM9pFKIm2KaeHW4xCjsFJ/CCTeFKg/ZyGhLwFHDw+4JkLKjiIpzEfCwavUQgFIxGu/xa21y1uJ+k0aj4Cqa3t9OMpaHk7LYkyIeeg5r4myPs4NVTC8dLOEqhOKP0v6GDML0qM2HA8K0AuU/x0cqyWxLL7v+uo1XWdd/wqa'
getSchema(cookie, '6cbecaf5-d30d-94c2-d370-f9b64636b706', '15', '2021')
const getChildrenData = async (cookie) => {
const body = { getPersonalTimetablesRequest: {
hostName: 'fns.stockholm.se'
}}
const { data : {getPersonalTimetablesResponse: {childrenTimetables } } } =
await fetch('https://fns.stockholm.se/ng/api/services/skola24/get/personal/timetables', {
headers: {
accept: 'application/json, text/javascript, */*; q=0.01',
'accept-language': 'en-US,en;q=0.9,sv;q=0.8',
'cache-control': 'no-cache',
'content-type': 'application/json',
pragma: 'no-cache',
host: 'fns.stockholm.se',
'x-scope': '8a22163c-8662-4535-9050-bc5e1923df48',
cookie
},
referrer: 'https://fns.stockholm.se/ng/timetable/timetable-viewer/fns.stockholm.se/',
referrerPolicy: 'strict-origin-when-cross-origin',
body: JSON.stringify(body),
method: 'POST',
mode: 'cors'
}).then(res => res.json())
return childrenTimetables;
}
const getSchemas = async (cookie, week, year) => {
var children = await getChildrenData(cookie);
console.log(children)
children.forEach(child => {
getSchema(cookie, child.personGuid, child.unitGuid, week, year)
});
}
const cookie = '<cookie here>'
getSchemas(cookie,'15','2021');