iro/newinterface.py
author Sandro Knauß <knauss@netzguerilla.net>
Wed, 21 Dec 2011 21:49:58 +0100
branchdevel
changeset 84 741df1947e6d
parent 81 fea4c6760ca5
child 85 edf7e94cd607
permissions -rw-r--r--
iunstall_requirements update
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
#Copyright (C) 2009  Sandro Knauß <bugs@sandroknauss.de>
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
#This program is free software; you can redistribute it and/or modify it under the terms
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     5
#of the GNU General Public License as published by the Free Software Foundation;
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
#either version 3 of the License, or any later version.
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
#See the GNU General Public License for more details.
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
#You should have received a copy of the GNU General Public License
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
#along with this program; if not, see <http://www.gnu.org/licenses/>.
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
    13
from twisted.web import soap, xmlrpc, resource, server
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
    14
import logging
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
    15
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s')
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    17
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    18
class User(object):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    19
    def __init__(self,name,userhash):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    20
        self.name=name
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    21
        self.userhash=userhash
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    22
    
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    23
    def __repr__(self):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    24
        return"User<'%s','%s'>"%(self.name,self.userhash)
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    25
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    26
users={"1":User("spam","1"),
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    27
       "2":User("foo","2")
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    28
}
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    29
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    30
def getuser(userhash):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    31
    try:
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    32
        return users[userhash]
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    33
    except KeyError:
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    34
        raise UserNotFound()
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    35
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    36
def with_user(f):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    37
    def new_f(*args,**kargs):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    38
        args=list(args)
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    39
        try:
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    40
            logging.debug("Entering %s"%f.__name__)
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    41
            try:
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    42
                kargs["user"]=getuser(kargs["apikey"])
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    43
                del kargs["apikey"]
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    44
            except KeyError:
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    45
                kargs["user"]=getuser(args[1])
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    46
                del args[1]
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    47
            ret=f(*args,**kargs)
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    48
            logging.debug("Exited %s"%f.__name__)
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    49
            return ret
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    50
        except InterfaceException, e:
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    51
            return e.dict()
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    52
    new_f.__name__ = f.__name__
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    53
    return new_f
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    54
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    55
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    56
class InterfaceException(Exception):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    57
    def __init__(self, code=999, msg="Unbekannter Fehler."):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    58
        self.code=code
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    59
        self.msg=msg
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    60
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    61
    def dict(self):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    62
        return {"code":self.code,
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    63
                "msg":self.msg,
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    64
                }
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    65
    def __str__(self):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    66
        return "%i:%s"%(self.code,self.msg)
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    67
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    68
class UserNotFound(InterfaceException):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    69
    def __init__(self):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    70
        InterfaceException.__init__(self, 901, "Der API-Key ist ungültig.")
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    71
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    72
class ExternalException(InterfaceException):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    73
    def __init__(self):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    74
        InterfaceException.__init__(self, 950, "Fehler in externer API.")
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    75
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    76
80
265124610789 renaming newuser->newinterface
Sandro Knauß <knauss@netzguerilla.net>
parents: 79
diff changeset
    77
class Interface(object):
76
9f7da8dc8df8 using decode('utf8') to get docstrings.
Sandro Knauß <knauss@netzguerilla.net>
parents: 75
diff changeset
    78
    '''class for a xmlrpc user
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
    '''
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    80
    
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    81
    @with_user
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    82
    def status(self, user, id=None, detailed=False):
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    83
        '''Gibt den aktuellen Status eines Auftrages oder Mehreren zurück.
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    84
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    85
        Keywords:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    86
        apikey[string]: Der API Key
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    87
        id[hash]: Eine Auftragsnummer
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    88
        detailed[boolean]: Details ausgeben
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    89
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    90
        Return:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    91
        jobs[list]: Eine Liste der Aufträge.
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    92
        job.name[string]: Angebener Name
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    93
        job.status[string]: Status des Auftrages
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    94
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    95
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    96
        '''
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
    97
        #return user.status(id,detailed)
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
    98
        return ""
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    99
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   100
    @with_user
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   101
    def stop(self, user, id):
76
9f7da8dc8df8 using decode('utf8') to get docstrings.
Sandro Knauß <knauss@netzguerilla.net>
parents: 75
diff changeset
   102
        '''Stoppt den angegeben Auftrag.
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   103
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   104
        Keywords:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   105
        apikey[string]: Der API Key
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   106
        id[hash]: Eine Auftragsnummer
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   107
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   108
        Return:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   109
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   110
        '''
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   111
        return ""
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   112
    
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   113
    @with_user
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   114
    def sms(self, user, message, recipients, route="default"):
76
9f7da8dc8df8 using decode('utf8') to get docstrings.
Sandro Knauß <knauss@netzguerilla.net>
parents: 75
diff changeset
   115
        '''Versendet eine SMS.
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   116
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   117
        Keywords:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   118
        apikey[string]: Der API Key
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   119
        message[string]: Nachricht
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   120
        recipients[list]: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   121
        route[string|list]: Route über den geschickt werden soll, 
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   122
                            oder eine Liste von Routen, um Fallbacks anzugeben
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   123
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   124
        Return:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   125
        id[hash]: Die ID des Auftrages
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   126
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   127
        '''
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   128
        return ""
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   129
   
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   130
    @with_user
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   131
    def fax(self, user, subject, fax, recipients, route="default"):
76
9f7da8dc8df8 using decode('utf8') to get docstrings.
Sandro Knauß <knauss@netzguerilla.net>
parents: 75
diff changeset
   132
        '''Versendet ein FAX.
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   133
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   134
        Keywords:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   135
        apikey[string]: Der API Key
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   136
        subject[string]: Der Betreff
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   137
        fax[string]: Das PDF base64 kodiert
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   138
        recipients[list]: Eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   139
        route[string|list]: Route über den geschickt werden soll, 
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   140
                            oder eine Liste von Routen, um Fallbacks anzugeben
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   141
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   142
        Return:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   143
        id[hash]: Die ID des Auftrages
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   144
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   145
        '''
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   146
        return ""
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   147
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   148
    @with_user
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   149
    def mail(self, user, subject,  body, recipients, frm, route="default"):
76
9f7da8dc8df8 using decode('utf8') to get docstrings.
Sandro Knauß <knauss@netzguerilla.net>
parents: 75
diff changeset
   150
        '''Versendet eine Email.
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   151
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   152
        Keywords:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   153
        apikey[string]: Der API Key
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   154
        subject[string]: Der Betreff
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   155
        body[string]: Der Email Body
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   156
        recipients[list]: Eine Liste von Emailadressen
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   157
        frm[string]: Die Absender Emailadresse
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   158
        route[string|list]: Route über den geschickt werden soll, 
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   159
                            oder eine Liste von Routen, um Fallbacks anzugeben
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   160
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   161
        Return:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   162
        id[hash]: Die ID des Auftrages
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   163
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   164
        '''
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   165
        return ""
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   166
       
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   167
    @with_user
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   168
    def routes(self, user, typ):
76
9f7da8dc8df8 using decode('utf8') to get docstrings.
Sandro Knauß <knauss@netzguerilla.net>
parents: 75
diff changeset
   169
        '''Gibt eine Liste aller verfügbaren Provider zurück.
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   170
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   171
        Keywords:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   172
        apikey[string]: Der API Key
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   173
        typ[string]: Der Typ zu dem die Providerloste ausgeben werden soll
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   174
                     Einer der Liste ["sms","fax","mail"]
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   175
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   176
        Return:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   177
        providerlist[list]: Eine Liste aller möglichen Provider
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   178
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   179
        '''
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   180
        return ""
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   181
        
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   182
    @with_user
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   183
    def defaultRoute(self, user, typ):
76
9f7da8dc8df8 using decode('utf8') to get docstrings.
Sandro Knauß <knauss@netzguerilla.net>
parents: 75
diff changeset
   184
        '''Gibt den Standardprovider zurück.
73
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   185
 
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   186
        Keywords:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   187
        apikey[string]: Der API Key
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   188
        typ[string]: Der Typ zu dem die Providerloste ausgeben werden soll
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   189
                     Einer der Liste ["sms","fax","mail"]
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   190
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   191
        Return:
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   192
        provider[string]: Der Standardprovider für den angeben Typ
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   193
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   194
f2f247a5b6c9 update Documentation
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   195
        '''
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   196
        return ""
75
c6a281dafa7a adding statistic method for new api
Sandro Knauß <knauss@netzguerilla.net>
parents: 73
diff changeset
   197
81
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   198
    @with_user
fea4c6760ca5 ein wenig aufräumen
Sandro Knauß <knauss@netzguerilla.net>
parents: 80
diff changeset
   199
    def statistic(self, user):
76
9f7da8dc8df8 using decode('utf8') to get docstrings.
Sandro Knauß <knauss@netzguerilla.net>
parents: 75
diff changeset
   200
        '''Gibt eine Statik zurück über die versendendeten Nachrichten und des Preises.
75
c6a281dafa7a adding statistic method for new api
Sandro Knauß <knauss@netzguerilla.net>
parents: 73
diff changeset
   201
c6a281dafa7a adding statistic method for new api
Sandro Knauß <knauss@netzguerilla.net>
parents: 73
diff changeset
   202
        Keywords:
c6a281dafa7a adding statistic method for new api
Sandro Knauß <knauss@netzguerilla.net>
parents: 73
diff changeset
   203
        apikey[string]: Der API Key
c6a281dafa7a adding statistic method for new api
Sandro Knauß <knauss@netzguerilla.net>
parents: 73
diff changeset
   204
c6a281dafa7a adding statistic method for new api
Sandro Knauß <knauss@netzguerilla.net>
parents: 73
diff changeset
   205
        Return:
c6a281dafa7a adding statistic method for new api
Sandro Knauß <knauss@netzguerilla.net>
parents: 73
diff changeset
   206
        statistic[list]: Eine Liste nach Nachrichtentypen
c6a281dafa7a adding statistic method for new api
Sandro Knauß <knauss@netzguerilla.net>
parents: 73
diff changeset
   207
        '''
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   208
        return ""
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   209
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   210
    def listMethods(self):
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   211
        """Since we override lookupProcedure, its suggested to override
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   212
        listProcedures too.
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   213
        """
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   214
        return self.listProcedures()
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   215
  
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   216
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   217
    def listProcedures(self):
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   218
        """Since we override lookupProcedure, its suggested to override
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   219
        listProcedures too.
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   220
        """
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   221
        return ['listMethods','status','stop','sms','fax','mail','routes','defaultRoute','statistic']
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   222
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   223
80
265124610789 renaming newuser->newinterface
Sandro Knauß <knauss@netzguerilla.net>
parents: 79
diff changeset
   224
class XMLRPCInterface(Interface,xmlrpc.XMLRPC): 
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   225
    def __init__(self):
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   226
        xmlrpc.XMLRPC.__init__(self) 
80
265124610789 renaming newuser->newinterface
Sandro Knauß <knauss@netzguerilla.net>
parents: 79
diff changeset
   227
        Interface.__init__(self)
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   228
    
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   229
    def lookupProcedure(self, procedurePath):
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   230
        logging.debug("lookupProcedure('%s')"%procedurePath)
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   231
        if procedurePath not in self.listProcedures():
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   232
            raise xmlrpc.NoSuchFunction(self.NOT_FOUND,
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   233
                        "procedure %s not found" % procedurePath)
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   234
        try:
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   235
            return getattr(self,procedurePath)
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   236
        except KeyError:
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   237
            raise xmlrpc.NoSuchFunction(self.NOT_FOUND,
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   238
                        "procedure %s not found" % procedurePath)
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   239
80
265124610789 renaming newuser->newinterface
Sandro Knauß <knauss@netzguerilla.net>
parents: 79
diff changeset
   240
class SOAPInterface(Interface,soap.SOAPPublisher): 
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   241
    def __init__(self):
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   242
        soap.SOAPPublisher.__init__(self) 
80
265124610789 renaming newuser->newinterface
Sandro Knauß <knauss@netzguerilla.net>
parents: 79
diff changeset
   243
        Interface.__init__(self)
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   244
        
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   245
    def lookupFunction(self, functionName):
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   246
        """Lookup published SOAP function.
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   247
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   248
        Override in subclasses. Default behaviour - publish methods
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   249
        starting with soap_, if they have true attribute useKeywords
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   250
        they are expected to accept keywords.
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   251
        
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   252
        @return: tuple (callable, useKeywords), or (None, None) if not found.
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   253
        """
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   254
        if functionName in self.listProcedures():
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   255
            function = getattr(self, functionName, None)
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   256
            if function:
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   257
                return function, getattr(function, "useKeywords", False)
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   258
            return None
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   259
        else:
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   260
            return None
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   261
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   262
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   263
def main():
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   264
    from twisted.internet import reactor
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   265
    root = resource.Resource()
80
265124610789 renaming newuser->newinterface
Sandro Knauß <knauss@netzguerilla.net>
parents: 79
diff changeset
   266
    root.putChild('RPC2', XMLRPCInterface())
265124610789 renaming newuser->newinterface
Sandro Knauß <knauss@netzguerilla.net>
parents: 79
diff changeset
   267
    root.putChild('SOAP', SOAPInterface())
79
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   268
    reactor.listenTCP(7080, server.Site(root))
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   269
    reactor.run()
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   270
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   271
if __name__ == '__main__':
17a00b99b9fd twisted XMLRPC&SOAP support
Sandro Knauß <knauss@netzguerilla.net>
parents: 76
diff changeset
   272
    main()