#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''
Datum: 1 mei 2015
@auteur: jan baarda
'''

from http.server import BaseHTTPRequestHandler,HTTPServer
from os import curdir, sep
import socketserver
import cgi
import datetime

# code om te ontdekken wat het ip adres van de host is (voor de liefhebber om uit te zoeken hoe het werkt)
import socket
HOSTIP = ([l for l in ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2]\
         if not ip.startswith("127.")][:1], [[(s.connect(('8.8.8.8', 80)), s.getsockname()[0],\
         s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]]) if l][0][0])
POORT = 8090
# --------------------------------------------------------------------------------------------------
# code voor de afhandeling van RESTserver (POST)
class PostBezorger(BaseHTTPRequestHandler):
    """ Ontvangst, antwoord en opslag akties """
    def do_POST(self):
        # Parse de formulier data
        form = cgi.FieldStorage(
            fp=self.rfile, 
            headers=self.headers,
            environ={'REQUEST_METHOD':'POST',
                     'CONTENT_TYPE':self.headers['Content-Type'],
                     })
        # Maak een antwoordbericht
        self.send_response(200)
        self.end_headers()
        self.wfile.write(bytes("<html><head></head><body><p>Request Received</p></body></html>",'utf-8'))

        # wegschrijven van de ontvangen gegevens in bestand 'opslag'
        utc = datetime.datetime.utcnow()
        tijd = utc.strftime('%Y-%m-%dT%H:%M')
        temp = form['temperatuur'].value
        druk = form['luchtdruk'].value
        f = open('opslag', 'a')
        value = tijd + ';' + temp + ';' + druk + '\n'
        f.write(value)
        return
# --------------------------------------------------------------------------------------------------
if __name__ == '__main__':
        RESTserver = socketserver.TCPServer((HOSTIP, POORT), PostBezorger)
        print(HOSTIP,":", POORT)
        RESTserver.serve_forever()
       
        
