From a63f68f5b2ff28cd87eae2d731cd86fef872b63f Mon Sep 17 00:00:00 2001
From: Sebastian Lobinger <sebastian.lobinger@fu-berlin.de>
Date: Wed, 7 Jun 2017 13:31:14 +0200
Subject: [PATCH] update README.md fix issue #16

---
 README.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 78 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 0a7a8dc..ec6eff0 100644
--- a/README.md
+++ b/README.md
@@ -196,4 +196,81 @@ aus der Session der Anfrage hinzu zu fügen.
 
 #### Methoden
 
-#### Eigenschaften
\ No newline at end of file
+##### Konstruktor
+
+###### Minimalistisch:
+
+```python
+proxy = SAMSProxy(proxySpec = {
+  'in': '/testapi/
+  'out': 'https://my.testapi.host/api/'
+})
+```
+
+Jeder Proxy hat in seiner proxySpec einen 'in' und einen  'out' defineirt.
+Der Proxy stellt der SAMSApp eine URL Regel wie unter 'in' zur verfügung, die
+dann im Hub noch um ein App-Präfix ergänz wird, falls essich nicht um die
+Main-App handelt.
+Alle Anfragen die an 'in' gehen werden an 'out' weiter geleitet, wobei der
+URL-Teil bis zum ende von 'in' durch 'out' ersetzt wird.
+Aus einer Anfrage an '/testapi/user' wird also bei obigem Beispiel
+'https://my.testapi.host/api/user'.
+Die Ursprüngliche Anfrage bleibt bei dieser Minimalkonfiguration unverändert.
+
+###### Definieren eines Token
+
+```python
+proxy = SAMSProxy(proxySpec = {
+  'in': '/testapi/
+  'out': 'https://my.testapi.host/api/'
+  'token': {'name': 'Api-Token', 'value': 'C001C01A', 'param-type' : 'header'}
+})
+```
+
+Wird ein Token, wie Oben angegeben, definiert, wird der Header der Nachricht um
+die entsprehende Angabe ergänz. Sollte im aufruf ebenfalls der gleiche Name für
+einen Header verwendet worden sein, dann gewinnt der Proxy.
+Alle unterstützten 'param-type' Werte:
+
+- header (für Header)
+- url (für URL-Parameter)
+- body (für JSON oder form Parameter je nach Anfrage Content-Type)
+
+###### Session Daten Weitergeben
+
+```python
+proxy = SAMSProxy(proxySpec = {
+  'in': '/testapi/
+  'out': 'https://my.testapi.host/api/'
+  'session-passthrough': {
+    'default':{
+      'user': {'name': 'u', 'param-type': 'body'},
+      'group': {'name': 'g', 'param-type': 'url'} 
+})
+```
+
+Es ist möglich Parameter aus der Session an 'out' weiter zu reichen.
+Hierbei muss zwingend ein default Dictionary existieren, auch wenn dieses lehr ist.
+für die anderen HTTP-Verben kann dann zusätzlich ein dictionary existieren,
+falls sich die erforderlichen Parameter vom default unterscheiden.
+Es wird immer das zur HTTP Methode passende Dictionary als Grundlage verwendet.
+Das Default wird nur verwendet, wenn für die HTTP Methode kein Dictionary existiert.
+
+Das Defaut / Methoden Dictionary gibt im key immer den weiter zu leitenden
+Session-Patrameter an. Die Werte sind selbst wieder dictionaries ähnlich dem bei
+'token'. Allerdings wird hier kein 'value' benötigt, dieses wird aus der Session
+gelesen.
+
+Die HTTP Methode muss wie bei HTTP Methoden üblich in Blockschrift angegeben sein.
+
+##### proxy
+
+Methode zum registrieren als view in der flask app. Diese Methode erfüllt dann
+die eigendliche Proxy aufgabe, wenn eine Anfrage durch sie behandelt wird.
+
+#### Eigenschaften
+
+##### urlRule
+
+Flask kompatible urlRule für den Proxy. Zur verwendung mit
+```flask_app.register_url```
\ No newline at end of file
-- 
GitLab