From 3c6fe453967a4e6319cce10a0d590e9b0f5ef566 Mon Sep 17 00:00:00 2001 From: Christoph Walcher Date: Wed, 14 Oct 2020 22:39:15 +0200 Subject: [PATCH] fix fetching of subjects --- build-professors-list.js | 2 +- manifest.json | 2 +- package-lock.json | 2 +- package.json | 4 ++-- src-cordova/config.xml | 2 +- src-cordova/package-lock.json | 11 +++++------ src-cordova/package.json | 14 +++++++------- src/platform/cordova/fetch.js | 30 +++++++++++++++++++----------- src/platform/webext/fetch.js | 4 ++++ src/stores/lsf.js | 11 ++++++----- src/stores/util.js | 4 ++-- 11 files changed, 49 insertions(+), 37 deletions(-) diff --git a/build-professors-list.js b/build-professors-list.js index cc1284f..cb07892 100644 --- a/build-professors-list.js +++ b/build-professors-list.js @@ -9,7 +9,7 @@ function fetchDOM(url) { async function buildProfessorsList() { - const entries = await Promise.all((await Promise.all([1, 2] + const entries = await Promise.all((await Promise.all([1, 2, 3] .map(async page => fetchDOM('https://www.hft-stuttgart.de/personenverzeichnis?' + 'tx_solr[filter][0]=role%3AProfessor%2Fin' + diff --git a/manifest.json b/manifest.json index 7b86eb7..d2371a7 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "hft-app", - "version": "3.0.9", + "version": "3.0.10", "description": "The HFT App", "browser_specific_settings": { "gecko": { diff --git a/package-lock.json b/package-lock.json index 2162b14..95fea2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "hft-app", - "version": "3.0.9", + "version": "3.0.10", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c6db730..e3c4074 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "hft-app", - "version": "3.0.9", + "version": "3.0.10", "private": true, "description": "", "author": "Christoph Walcher & Lukas Jans", "scripts": { "build:webext": "webpack --config webpack.config.webext.js --mode=production", "sign:webext": "cd dist; web-ext sign --api-key=$AMO_JWT_ISSUER --api-secret=$AMO_JWT_SECRET; cd ..", - "serve:dev": "webpack-dev-server --config webpack.config.cordova.js", + "serve:dev": "webpack-dev-server --config webpack.config.webext.js", "lint": "eslint --ext .js,.vue src tests", "test": "jest", "icons": "cd image; ./scale.sh; cd .." diff --git a/src-cordova/config.xml b/src-cordova/config.xml index 2943875..37969fc 100644 --- a/src-cordova/config.xml +++ b/src-cordova/config.xml @@ -1,5 +1,5 @@ - + HFT App The HFT App diff --git a/src-cordova/package-lock.json b/src-cordova/package-lock.json index b7e2375..72aab74 100644 --- a/src-cordova/package-lock.json +++ b/src-cordova/package-lock.json @@ -1,6 +1,6 @@ { "name": "de.hft.app", - "version": "3.0.9", + "version": "3.0.10", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2213,9 +2213,9 @@ } }, "cordova-plugin-advanced-http": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/cordova-plugin-advanced-http/-/cordova-plugin-advanced-http-2.4.1.tgz", - "integrity": "sha512-6G8MTy/d02jE6n3Y9CVyCtD5hZGiBb+/dR2AIzhKN1RGGz38g1D2C8yE4MqHRvnmry6k/KHQWT1MsHNXrjouXQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-advanced-http/-/cordova-plugin-advanced-http-3.0.1.tgz", + "integrity": "sha512-7P3ZoSvxvYZXNYsygkxrUIw+pnzsCVvQgRsm26XhymNqqmD9yZIcF878p6wfFVQfLzf5iRHQRwgAMcrcm+cnow==" }, "cordova-plugin-file": { "version": "6.0.2", @@ -2251,8 +2251,7 @@ "cordova-plugin-whitelist": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.4.tgz", - "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==", - "dev": true + "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==" }, "cordova-plugin-x-socialsharing": { "version": "5.6.5", diff --git a/src-cordova/package.json b/src-cordova/package.json index 934bd7b..a6fd8e8 100644 --- a/src-cordova/package.json +++ b/src-cordova/package.json @@ -1,7 +1,7 @@ { "name": "de.hft.app", "displayName": "HFT App", - "version": "3.0.9", + "version": "3.0.10", "description": "The HFT App", "main": "index.js", "scripts": { @@ -22,20 +22,19 @@ "dependencies": { "cordova-android": "^9.0.0", "cordova-ios": "^6.1.1", - "cordova-plugin-advanced-http": "^2.4.1", + "cordova-plugin-advanced-http": "^3.0.1", "cordova-plugin-file": "^6.0.2", "cordova-plugin-statusbar": "^2.4.3", "cordova-plugin-webpack": "^1.0.4", + "cordova-plugin-whitelist": "^1.3.4", "cordova-plugin-x-socialsharing": "^5.6.5", "es6-promise-plugin": "^4.2.2" }, "devDependencies": { - "cordova": "^10.0.0", - "cordova-plugin-whitelist": "^1.3.4" + "cordova": "^10.0.0" }, "cordova": { "plugins": { - "cordova-plugin-whitelist": {}, "cordova-plugin-x-socialsharing": { "ANDROID_SUPPORT_V4_VERSION": "24.1.1+", "PHOTO_LIBRARY_ADD_USAGE_DESCRIPTION": "This app requires photo library access to function properly.", @@ -43,11 +42,12 @@ }, "cordova-plugin-statusbar": {}, "cordova-plugin-webpack": {}, - "cordova-plugin-advanced-http": {} + "cordova-plugin-advanced-http": {}, + "cordova-plugin-whitelist": {} }, "platforms": [ "android", "ios" ] } -} +} \ No newline at end of file diff --git a/src/platform/cordova/fetch.js b/src/platform/cordova/fetch.js index 4cee888..0b71019 100644 --- a/src/platform/cordova/fetch.js +++ b/src/platform/cordova/fetch.js @@ -4,20 +4,28 @@ export function fetchJSON(url) { }) } +export function clearCookies() { + cordova.plugin.http.clearCookies(); +} + export function fetchDOM(url) { return new Promise((resolve, reject) => { - cordova.plugin.http.get(url, {}, {}, - response => { - resolve(new DOMParser().parseFromString(response.data, 'text/html')) - }, - response => { - if (response.status === 503) { - reject({type: 'maintenance'}) - } else { - reject(response) + try { + cordova.plugin.http.get(url, {}, {}, + response => { + resolve(new DOMParser().parseFromString(response.data, 'text/html')) + }, + response => { + if (response.status === 503) { + reject({type: 'maintenance'}) + } else { + reject(response) + } } - } - ) + ) + } catch (e) { + reject(e); + } } ) } diff --git a/src/platform/webext/fetch.js b/src/platform/webext/fetch.js index dd0b2d4..556fd1a 100644 --- a/src/platform/webext/fetch.js +++ b/src/platform/webext/fetch.js @@ -18,6 +18,10 @@ export function fetchDOM(url) { }).then(text => new DOMParser().parseFromString(text, 'text/html')) } +export function clearCookies() { + //not implemented +} + export async function fetchLogin(url, data) { const queryString = Object.entries(data) .map(pair => `${pair[0]}=${encodeURIComponent(pair[1])}`) diff --git a/src/stores/lsf.js b/src/stores/lsf.js index 78009f4..e75179f 100644 --- a/src/stores/lsf.js +++ b/src/stores/lsf.js @@ -1,5 +1,5 @@ import {parseDate, sleep} from './util'; -import {fetchDOM, fetchLogin} from 'platform/fetch'; +import {fetchDOM, fetchLogin, clearCookies} from 'platform/fetch'; const BASE_URL = 'https://lsf.hft-stuttgart.de/qisserver/rds'; @@ -185,9 +185,10 @@ export const Client = { }, async loadSubjects() { + clearCookies(); const dom = await fetchDOM(BASE_URL + '?state=verpublish&publishContainer=stgPlanList'); - return Array(...dom.querySelectorAll('.content tbody tr')) + return Array(...dom.querySelectorAll('.divcontent tbody tr')) .map(element => { const href = element.children[1].children[0].getAttribute('href'); return { @@ -587,9 +588,9 @@ export default { // XXX We have to relogin to LSF await client.login(context.state.credentials); - const lecturesThisWeek = client.loadLectures(new Date()); - const lecturesNextWeek = client.loadLectures(new Date(Date.now() + 6.04e+8)); - const lectures = (await lecturesThisWeek).concat(await lecturesNextWeek); + const lecturesThisWeek = await client.loadLectures(new Date()); + const lecturesNextWeek = await client.loadLectures(new Date(Date.now() + 6.04e+8)); + const lectures = lecturesThisWeek.concat(lecturesNextWeek); context.commit('lectures', lectures); } }, diff --git a/src/stores/util.js b/src/stores/util.js index 8c31554..c4f2f30 100644 --- a/src/stores/util.js +++ b/src/stores/util.js @@ -3,9 +3,9 @@ export function parseDate(date) { return new Date(parseInt(parts[2]), parseInt(parts[1]) - 1, parseInt(parts[0])) } -export function getErrorInfo(e){ +export function getErrorInfo(e) { if (e.type) { - return e; + return e; } else if (e.constructor.name === 'TypeError') { return {type: 'offline'} } else {