From b8866fa549ab32551610c955e8764a851ec31daf Mon Sep 17 00:00:00 2001
From: Steffen Vogel <post@steffenvogel.de>
Date: Mon, 23 Nov 2020 20:49:02 +0100
Subject: [PATCH] added new package villas.web for loading results from
 VILLASweb

---
 setup.py                  |  5 +++--
 villas/web/__init__.py    |  0
 villas/web/result.py      | 28 ++++++++++++++++++++++++++++
 villas/web/result_test.py | 11 +++++++++++
 4 files changed, 42 insertions(+), 2 deletions(-)
 create mode 100644 villas/web/__init__.py
 create mode 100644 villas/web/result.py
 create mode 100644 villas/web/result_test.py

diff --git a/setup.py b/setup.py
index c87d586..05af92d 100644
--- a/setup.py
+++ b/setup.py
@@ -31,7 +31,7 @@ setup(
     license = 'GPL-3.0',
     keywords = 'simulation power system real-time data processing',
     url = 'https://git.rwth-aachen.de/acs/public/villas/dataprocessing',
-    packages = [ 'villas.dataprocessing' ],
+    packages = [ 'villas.dataprocessing', 'villas.web' ],
     long_description = read('README.md'),
     classifiers = [
         'Development Status :: 4 - Beta',
@@ -45,7 +45,8 @@ setup(
     install_requires = [
         'matplotlib',
         'numpy',
-        'pandas'
+        'pandas',
+        'requests'
     ],
     setup_requires = [
         'm2r',
diff --git a/villas/web/__init__.py b/villas/web/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/villas/web/result.py b/villas/web/result.py
new file mode 100644
index 0000000..73ccc8e
--- /dev/null
+++ b/villas/web/result.py
@@ -0,0 +1,28 @@
+import requests
+from zipfile import ZipFile 
+
+class Result:
+
+    def __init__(self, file_id, token, endpoint='https://villas.k8s.eonerc.rwth-aachen.de'):
+        self.file_id = file_id
+        self.token = token
+        self.endpoint = endpoint
+
+    def open(self):
+        resp = requests.request('GET',
+            url=f'{self.endpoint}/api/v2/files/{self.file_id}',
+            headers={
+                'Authorization': 'Bearer ' + self.token
+            },
+            stream=True)
+
+        resp.raise_for_status()
+
+        return resp.raw
+
+    def open_zip(self, filename):
+        f = self.open()
+
+        zf = ZipFile(f)
+        
+        return zf.open(filename)
diff --git a/villas/web/result_test.py b/villas/web/result_test.py
new file mode 100644
index 0000000..f561a16
--- /dev/null
+++ b/villas/web/result_test.py
@@ -0,0 +1,11 @@
+import pandas
+from villas.web.result import Result
+
+if __name__ == '__main__':
+
+    r = Result('https://l.0l.de/W3OQo', '')
+    f = r.open_zip('Sample100.csv')
+
+    df = pandas.read_csv(f)
+
+    print(df)
-- 
GitLab