Vodafone: set MeinVF credentails via widget params

Signed-off-by: Benny Samir Hierl <bennysamir@posteo.de>
This commit is contained in:
Benny Samir Hierl 2020-10-23 17:43:18 +02:00
parent 86a61030ab
commit 2cfd3e8a05
No known key found for this signature in database
GPG key ID: 69DE3C3C097DB7F7
2 changed files with 36 additions and 44 deletions

View file

@ -37,15 +37,13 @@ After the first usage, the informations are cached and will be used in case of a
[[Download]](https://raw.githubusercontent.com/ThisIsBenny/iOS-Widgets/main/VodafoneDE/VodafoneDE.js) [[Download]](https://raw.githubusercontent.com/ThisIsBenny/iOS-Widgets/main/VodafoneDE/VodafoneDE.js)
### Options ### Options
#### Set own color scheme
To overwrite the colors, you have to add four color codes separated by | to the widget parameter option: `BackgroundColor|TextColor|CircleFillColor|CircleStrokeColor`
Example: `D32D1F|EDEDED|EDEDED|B0B0B0`
If no parameter are set or not four colors are set the default color set for light or dark Mode will be used.
#### Use MeinVodafone Login #### Use MeinVodafone Login
It is possible to add the MeinVodafone Credentails to the beginning of script, which allows the widget to update itself even with active WIFI or show data usage of another mobile contract. It is possible to set the MeinVodafone Credentails via widget parameter, which allows the widget to update itself even with active WIFI or to show data usage of a different mobile contract.
Add your Credentails in this format to your widget parameters: `username|password|mobile-number`. the mobile-number has to start with 49 instead of 0. 491721234567
Example: `JohnSmith|TopSecret!|491721234567`
_Remark: If your password contains a | character, you have to adapt the script and use a different divider._
### Roadmap ### Roadmap
* Add Medium Widget Support to display GigaDepot usage * Add Medium Widget Support to display GigaDepot usage

View file

@ -3,9 +3,12 @@
// icon-color: red; icon-glyph: broadcast-tower; // icon-color: red; icon-glyph: broadcast-tower;
/************** /**************
Version 1.1.1 Version 1.2.0
Changelog: Changelog:
v1.2.0:
- Option to set colors by widget parameters removed
- Option to set MeinVodafone credentails via widget parameters added
v1.1.1: v1.1.1:
- new CallYa Tariff added: C_DIY_Data_National - new CallYa Tariff added: C_DIY_Data_National
v1.1.0: v1.1.0:
@ -32,12 +35,6 @@ Credits:
// How many minutes should the cache be valid // How many minutes should the cache be valid
let cacheMinutes = 60; let cacheMinutes = 60;
// Login via MeinVodafone Login
// Please never share the content of this script with included credentails!
const username = "";
const password = "";
const phonenumber = ""; // with leading 49 instead of 0. Example: 4917212345678
// Please add additional values to these list, in case that your contract/tarif isn't supported by these default values. // Please add additional values to these list, in case that your contract/tarif isn't supported by these default values.
const containerList = ['Daten', 'D_EU_DATA', 'C_DIY_Data_National'] const containerList = ['Daten', 'D_EU_DATA', 'C_DIY_Data_National']
const codeList = ['-1', '45500'] const codeList = ['-1', '45500']
@ -48,23 +45,24 @@ let backColor2; //Widget background color
let textColor; //Widget text color let textColor; //Widget text color
let fillColor; let fillColor;
let strokeColor; let strokeColor;
let useGradient = true
let widgetInputRAW = args.widgetParameter; let widgetInputRAW = args.widgetParameter;
let widgetInput = null; let widgetInput = null;
let user, pass, number
if (widgetInputRAW !== null) { if (widgetInputRAW !== null) {
widgetInput = widgetInputRAW.toString().split("|"); [user, pass, number] = widgetInputRAW.toString().split("|");
if(!user || !pass || !number) {
throw new Error("Invalid Widget parameter. Expected format: username|password|phonenumber")
}
if(/^49[\d]{5,}/.test(number) === false) {
throw new Error("Invalid phonenumber format. Expected format: 491721234567")
}
} }
// BackgroundColor|TextColor|CircleFillColor|CircleStrokeColor if (Device.isUsingDarkAppearance()) {
if (widgetInput !== null && widgetInput.length == 4) {
backColor = widgetInput[0];
textColor = widgetInput[1];
fillColor = widgetInput[2];
strokeColor = widgetInput[3];
useGradient = false
} else if (Device.isUsingDarkAppearance()) {
backColor = '111111'; backColor = '111111';
backColor2 = '222222'; backColor2 = '222222';
textColor = 'EDEDED'; textColor = 'EDEDED';
@ -157,7 +155,7 @@ async function getSessionCookiesViaNetworkLogin() {
} }
}; };
async function getSessionCookiesViaMeinVodafoneLogin() { async function getSessionCookiesViaMeinVodafoneLogin(u, p) {
let req; let req;
req = new Request("https://www.vodafone.de/mint/rest/session/start") req = new Request("https://www.vodafone.de/mint/rest/session/start")
req.method = "POST"; req.method = "POST";
@ -168,8 +166,8 @@ async function getSessionCookiesViaMeinVodafoneLogin() {
req.body = JSON.stringify({ req.body = JSON.stringify({
"clientType": "Portal", "clientType": "Portal",
"username": username, "username": u,
"password": password, "password": p,
}) })
try { try {
let res = await req.loadJSON() let res = await req.loadJSON()
@ -180,13 +178,13 @@ async function getSessionCookiesViaMeinVodafoneLogin() {
} }
}; };
async function getUsage() { async function getUsage(user, pass, number) {
let cookies, msisdn; let cookies, msisdn;
if (username !== "" && password !== "" && msisdn !== "") { if (user && pass && number) {
console.log("Login via MeinVodafone") console.log("Login via MeinVodafone")
let { cookies: c }= await getSessionCookiesViaMeinVodafoneLogin(); let { cookies: c }= await getSessionCookiesViaMeinVodafoneLogin(user, pass);
cookies = c; cookies = c;
msisdn = phonenumber; msisdn = number;
} else { } else {
console.log("Login via Network") console.log("Login via Network")
let { cookies: c, msisdn: m } = await getSessionCookiesViaNetworkLogin(); let { cookies: c, msisdn: m } = await getSessionCookiesViaNetworkLogin();
@ -281,7 +279,7 @@ try {
lastUpdate = cacheDate lastUpdate = cacheDate
} else { } else {
console.log("Get from API") console.log("Get from API")
data = await getUsage() data = await getUsage(user, pass, number)
console.log("Write Data to Cache") console.log("Write Data to Cache")
try { try {
files.writeString(cachePath, JSON.stringify(data)) files.writeString(cachePath, JSON.stringify(data))
@ -310,17 +308,13 @@ widget.setPadding(10, 10, 10, 10)
if (data !== undefined) { if (data !== undefined) {
console.log(data) console.log(data)
if (useGradient) { const gradient = new LinearGradient()
const gradient = new LinearGradient() gradient.locations = [0, 1]
gradient.locations = [0, 1] gradient.colors = [
gradient.colors = [ new Color(backColor),
new Color(backColor), new Color(backColor2)
new Color(backColor2) ]
] widget.backgroundGradient = gradient
widget.backgroundGradient = gradient
} else {
widget.backgroundColor = new Color(backColor)
}
let firstLineStack = widget.addStack() let firstLineStack = widget.addStack()