From bd730591fcca295836329a203282c4d073e4bf7b Mon Sep 17 00:00:00 2001 From: konpsar Date: Wed, 9 Dec 2020 20:07:19 +0200 Subject: [PATCH 1/6] Added login_prompt(...) wrapper login function. Added to extend login function to dynamically ask password/totp from user, hiding password while typing. In this way, password doesn't have to be included in .py scripts. --- degiroapi/__init__.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/degiroapi/__init__.py b/degiroapi/__init__.py index 82b67b9..5b77fd5 100644 --- a/degiroapi/__init__.py +++ b/degiroapi/__init__.py @@ -66,6 +66,16 @@ def login(self, username, password, totp=None): return client_info_response + def login_prompt(self, username=None, password=None, totp=None): + import getpass + + if not username: username = input("Username: ") + if not password: password = getpass.getpass("Password:") + if not totp: totp = getpass.getpass("totp (Leave empty if none):") + + if totp=="": return self.login(username, password) + else: return self.login(username, password, totp) + def logout(self): logout_payload = { 'intAccount': self.client_info.account_id, From 1d788eae71e61cc93a7e1261b15e55c4016c5130 Mon Sep 17 00:00:00 2001 From: konpsar Date: Wed, 9 Dec 2020 20:08:55 +0200 Subject: [PATCH 2/6] Added DeGiro Constructor Constructor enbales an option to automatically login when creating DeGiro instance. (using login_prompt) --- degiroapi/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/degiroapi/__init__.py b/degiroapi/__init__.py index 5b77fd5..614f71a 100644 --- a/degiroapi/__init__.py +++ b/degiroapi/__init__.py @@ -36,6 +36,12 @@ class DeGiro: client_info = any confirmation_id = any + def __init__(self, username=None, password=None, totp=None): + if not username: # Proceed without login + pass + else: # Login prompt + DeGiro.login_prompt(self, username=username, password=password, totp=totp) + def login(self, username, password, totp=None): login_payload = { 'username': username, From 3449ae50555e2ff28a0b9745ea3c3cb8d4ff6f7d Mon Sep 17 00:00:00 2001 From: konpsar Date: Wed, 9 Dec 2020 20:10:47 +0200 Subject: [PATCH 3/6] Added examples using login_prompt and DeGiro() constructor Updated examples to include some use cases of constructor and login_prompt. --- examples/examples.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/examples/examples.py b/examples/examples.py index 0a52da7..ab0cc9b 100644 --- a/examples/examples.py +++ b/examples/examples.py @@ -9,6 +9,21 @@ degiro = degiroapi.DeGiro() degiro.login("username", "password") +# Equivalent to: +#degiro = degiroapi.DeGiro("username", "password") # prompts for totp (optional) + +# Password can be given dynamically using login_prompt: +# -not necessary to include in .py script +degiro = degiroapi.DeGiro() +degiro.login_prompt("username") # prompts for password and totp (optional) + +#Equivalent to: +#degiro = degiroapi.DeGiro("username") # prompts for password and totp (optional) + +# To dynamically provide all credentials use: +degiro = degiroapi.DeGiro() +degiro.login_prompt() #prompts for username, password and totp (optional) + # logout degiro.logout() From b1e33eb89bc966bbdd3f7bae69c6aab29212482c Mon Sep 17 00:00:00 2001 From: Konstantinos <54744378+konpsar@users.noreply.github.com> Date: Thu, 10 Dec 2020 09:27:27 +0200 Subject: [PATCH 4/6] Update degiroapi/__init__.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jakub Loucký --- degiroapi/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/degiroapi/__init__.py b/degiroapi/__init__.py index 614f71a..804ceb8 100644 --- a/degiroapi/__init__.py +++ b/degiroapi/__init__.py @@ -79,8 +79,7 @@ def login_prompt(self, username=None, password=None, totp=None): if not password: password = getpass.getpass("Password:") if not totp: totp = getpass.getpass("totp (Leave empty if none):") - if totp=="": return self.login(username, password) - else: return self.login(username, password, totp) + return self.login(username, password, totp or None) def logout(self): logout_payload = { From a60653038de83c9b2e69f617b833a4cee1dac73d Mon Sep 17 00:00:00 2001 From: Konstantinos <54744378+konpsar@users.noreply.github.com> Date: Thu, 10 Dec 2020 09:27:42 +0200 Subject: [PATCH 5/6] Update degiroapi/__init__.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jakub Loucký --- degiroapi/__init__.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/degiroapi/__init__.py b/degiroapi/__init__.py index 804ceb8..1718e12 100644 --- a/degiroapi/__init__.py +++ b/degiroapi/__init__.py @@ -37,9 +37,7 @@ class DeGiro: confirmation_id = any def __init__(self, username=None, password=None, totp=None): - if not username: # Proceed without login - pass - else: # Login prompt + if username: # Login prompt DeGiro.login_prompt(self, username=username, password=password, totp=totp) def login(self, username, password, totp=None): From 05ec3391af1aced2f426cc313d8ff1f59f2be39f Mon Sep 17 00:00:00 2001 From: Konstantinos <54744378+konpsar@users.noreply.github.com> Date: Thu, 10 Dec 2020 09:27:50 +0200 Subject: [PATCH 6/6] Update degiroapi/__init__.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jakub Loucký --- degiroapi/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/degiroapi/__init__.py b/degiroapi/__init__.py index 1718e12..c1805b0 100644 --- a/degiroapi/__init__.py +++ b/degiroapi/__init__.py @@ -38,7 +38,7 @@ class DeGiro: def __init__(self, username=None, password=None, totp=None): if username: # Login prompt - DeGiro.login_prompt(self, username=username, password=password, totp=totp) + self.login_prompt(username=username, password=password, totp=totp) def login(self, username, password, totp=None): login_payload = {