summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--py-fake-service/app/adapter/__init__.py1
-rw-r--r--py-fake-service/app/adapter/mail.py26
-rw-r--r--py-fake-service/app/adapter/mail_service.py19
-rw-r--r--py-fake-service/app/adapter/mailset.py14
-rw-r--r--py-fake-service/app/pixelated_user_agent.py35
-rw-r--r--py-fake-service/config/pixelated_ua.cfg6
-rw-r--r--py-fake-service/requirements.txt4
7 files changed, 95 insertions, 10 deletions
diff --git a/py-fake-service/app/adapter/__init__.py b/py-fake-service/app/adapter/__init__.py
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/py-fake-service/app/adapter/__init__.py
@@ -0,0 +1 @@
+
diff --git a/py-fake-service/app/adapter/mail.py b/py-fake-service/app/adapter/mail.py
new file mode 100644
index 00000000..1140f062
--- /dev/null
+++ b/py-fake-service/app/adapter/mail.py
@@ -0,0 +1,26 @@
+from datetime import datetime
+
+class Mail:
+
+ def __init__(self, mbox_mail, ident):
+ self.header = self._get_headers(mbox_mail)
+ self.ident = ident
+ self.body = mbox_mail.get_payload()
+ self.tags = self._get_tags(mbox_mail)
+ self.security_casing = {}
+ self.status = []
+
+ def _get_headers(self, mbox_mail):
+ headers = {}
+ headers['from'] = mbox_mail.get_from()
+ headers['to'] = [mbox_mail.items()['To']]
+ headers['subject'] = mbox_mail.items()['Subject']
+ headers['date'] = datetime.fromtimestamp(random.randrange(1222222222, 1444444444)).isoformat()
+ return headers
+
+ def _get_tags(self, mbox_mail):
+ return mbox_mail.items()['X-TW-Pixelated-Tags'].split(', ')
+
+
+
+
diff --git a/py-fake-service/app/adapter/mail_service.py b/py-fake-service/app/adapter/mail_service.py
new file mode 100644
index 00000000..b657e59a
--- /dev/null
+++ b/py-fake-service/app/adapter/mail_service.py
@@ -0,0 +1,19 @@
+import os
+import mailbox
+
+
+class MailService:
+ MAILSET_PATH = os.join(os.environ('HOME'), 'mailset', 'mediumtagged'))
+
+ def __init__(self):
+ self.mails = MailSet()
+
+ def load_mailset(self):
+ mbox_filenames = [filename for filename in os.listdir(MAILSET_PATH) if mbox.startswith('mbox')]
+ boxes = (mailbox.mbox(os.path.join(MAILSET_PATH, mbox)) for mbox in mbox_filenames)
+
+ for box in boxes:
+ message = box.popitem()
+ self.mails.add(message[1])
+
+
diff --git a/py-fake-service/app/adapter/mailset.py b/py-fake-service/app/adapter/mailset.py
new file mode 100644
index 00000000..d81600e0
--- /dev/null
+++ b/py-fake-service/app/adapter/mailset.py
@@ -0,0 +1,14 @@
+from mail import Mail
+
+
+class MailSet:
+
+ def __init__(self):
+ self.ident = 0
+ self.mails = {}
+
+ def add(self, mbox_mail):
+ self.mails[self.ident] = Mail(mbox_mail)
+ self.ident += 1
+
+
diff --git a/py-fake-service/app/pixelated_user_agent.py b/py-fake-service/app/pixelated_user_agent.py
index 7cc49d48..62ccd206 100644
--- a/py-fake-service/app/pixelated_user_agent.py
+++ b/py-fake-service/app/pixelated_user_agent.py
@@ -8,12 +8,18 @@ app = Flask(__name__, static_url_path='', static_folder='../../web-ui/app')
client = None
converter = None
account = None
+mail_service = MailService()
def respond_json(entity):
response = json.dumps(entity)
return Response(response=response, mimetype="application/json")
+@app.route('/disabled_features')
+def disabled_features():
+ return respond_json([])
+
+
@app.route('/mails', methods=['POST'])
def save_draft_or_send():
return respond_json({'ident': 123})
@@ -76,16 +82,37 @@ def draft_reply_for(mail_id):
return respond_json(None)
+@app.route('/control/mailset/<mailset>/load', methods=['POST'])
+def load_mailset(mailset):
+ import os
+ from tarfile import TarFile
+ mbox_root = os.path.join(os.environ['HOME'], 'mailsets')
+ if not os.path.isdir(os.path.join(mbox_root)):
+ os.mkdir(mbox_root)
+
+ if len(os.listdir(mbox_root)) == 0:
+ response = requests.get('https://example.wazokazi.is:8154/go/static/mediumtagged.tar.gz', verify=False)
+ mbox_archive_path = os.path.join(mbox_root, 'mediumtagged.tar.gz')
+ mbox_archive = open(mbox_archive_path, 'w')
+ mbox_archive.write(response.content)
+ mbox_archive.close()
+ tarfile = TarFile(name=mbox_archive_path)
+ tarfile.extractall(path=mbox_root)
+
+ mail_service.load_mailset()
+
+ return respond_json(None)
+
+
+
@app.route('/')
def index():
return app.send_static_file('index.html')
+
def setup():
- app.config.from_envvar('PIXELATED_UA_CFG')
- provider = app.config['PROVIDER']
- account = app.config['ACCOUNT']
+ app.run(host="0.0.0.0", debug=True, port=4567)
- app.run(host=app.config['HOST'], debug=app.config['DEBUG'], port=app.config['PORT'])
if __name__ == '__main__':
setup()
diff --git a/py-fake-service/config/pixelated_ua.cfg b/py-fake-service/config/pixelated_ua.cfg
deleted file mode 100644
index 083e1dd4..00000000
--- a/py-fake-service/config/pixelated_ua.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-DEBUG=True
-HOST="0.0.0.0"
-ACCOUNT="pixelatedinboxapp@gmail.com"
-PROVIDER="inboxapp"
-PORT=3333
-
diff --git a/py-fake-service/requirements.txt b/py-fake-service/requirements.txt
new file mode 100644
index 00000000..8f4785c6
--- /dev/null
+++ b/py-fake-service/requirements.txt
@@ -0,0 +1,4 @@
+flask==0.10.1
+scanner==0.0.5
+requests==2.3.0
+