--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/createdoc.py Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,128 @@
+#!/usr/bin/env python2.7
+# -*- coding: utf-8 -*-
+
+from genshi.template import TemplateLoader
+
+loader = TemplateLoader('doc/tmpl', auto_reload=True)
+
+import re
+import inspect
+from iro.user import User
+
+
+user_methods = dict(inspect.getmembers(User(None,None)))
+
+class Link():
+ def __init__(self,name,title):
+ self.name=name
+ self.title=title
+
+ def getLink(self):
+ return self.name
+
+ def __getitem__(self,name):
+ if name == "link":
+ return self.getLink()
+ return AttributeError(name)
+
+class Site(Link):
+ pass
+
+
+class Keyword():
+ def __init__(self,name,typ,description):
+ self.name=name
+ self.typ=typ
+ self.description=description
+
+def section(text):
+ ret={}
+ li=[]
+ kw=None
+ for line in text.split("\n"):
+ if re.match("^\s*$",line):
+ continue
+
+ if line[0] not in (" ","\t"):
+ if kw:
+ ret[kw.name]=kw
+ li.append(kw)
+ l=re.match(r"^(?P<name>[a-zA-Z0-9-_.]*)\[(?P<typ>[a-zA-Z0-9-_]*)\]:(?P<d>.*)$",line)
+ kw=Keyword(name=l.group("name"),typ=l.group("typ"),description=l.group("d"))
+ else:
+ kw.description+="\n"+line.strip()
+ if kw:
+ ret[kw.name]=kw
+ li.append(kw)
+ return ret,li
+
+
+
+def keywords(f):
+ doc=f.__doc__
+ kwds=re.search("Keywords:\n(?P<keywords>(?P<whitespace>\s*)(.+\n)*)\n",doc)
+ k=kwds.group("keywords")
+ #get rid of beginning whitespaces
+ k=re.sub(re.compile(r"^"+kwds.group("whitespace"),re.M),"",k)
+ return section(k)
+
+def ret(f):
+ doc=f.__doc__
+ kwds=re.search("Return:\n(?P<ret>(?P<whitespace>\s*)(.+\n)*)\n",doc)
+ k=kwds.group("ret")
+ #get rid of beginning whitespaces
+ k=re.sub(re.compile(r"^"+kwds.group("whitespace"),re.M),"",k)
+ return section(k)
+
+
+
+class Arg():
+ def __init__(self,name,f):
+ self.name=name
+ k,_ = keywords(f)
+ kwd=k[name]
+ self.typ=kwd.typ
+ self.description=kwd.description
+
+
+
+class Method(Link):
+ def __init__(self,name,title):
+ Link.__init__(self,name,title)
+ m=user_methods[name]
+ self.description = m.__doc__.split("\n")[0]
+ a=inspect.getargspec(m)
+ self.args=[Arg(a,m) for a in a.args if a is not "self"]
+ _, self.rets=ret(m)
+
+
+def main():
+ sites=[Site("index.html","Iro"),
+ Site("current.html","API Documentation"),
+ Site("new.html","geplante API Documentation"),
+ Site("impressum.html","Impressum"),
+ ]
+
+ methods=[
+ Method("startSMS","StartSMS"),
+ Method("startFAX","StartFAX"),
+ Method("startMail","StartMail"),
+
+ Method("status","Status"),
+ Method("stop","Stop"),
+
+ Method("getProvider","GetProvider"),
+ Method("getDefaultProvider","GetDefaultProvider"),
+ ]
+ for site in sites:
+ print("generiere %s" % site.name)
+ tmpl = loader.load(site.name)
+ def a(s):
+ if s == site:
+ return {"class":"menu active"}
+ stream = tmpl.generate(sites=sites,active=a,methods=methods)
+ with open('doc/'+site.name, "w") as g:
+ g.write(stream.render('html', doctype='html'))
+
+if __name__ == '__main__':
+ main()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/css/960.css Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,1 @@
+.container_12,.container_16{margin-left:auto;margin-right:auto;width:960px}.grid_1,.grid_2,.grid_3,.grid_4,.grid_5,.grid_6,.grid_7,.grid_8,.grid_9,.grid_10,.grid_11,.grid_12,.grid_13,.grid_14,.grid_15,.grid_16{display:inline;float:left;margin-left:10px;margin-right:10px}.push_1,.pull_1,.push_2,.pull_2,.push_3,.pull_3,.push_4,.pull_4,.push_5,.pull_5,.push_6,.pull_6,.push_7,.pull_7,.push_8,.pull_8,.push_9,.pull_9,.push_10,.pull_10,.push_11,.pull_11,.push_12,.pull_12,.push_13,.pull_13,.push_14,.pull_14,.push_15,.pull_15{position:relative}.container_12 .grid_3,.container_16 .grid_4{width:220px}.container_12 .grid_6,.container_16 .grid_8{width:460px}.container_12 .grid_9,.container_16 .grid_12{width:700px}.container_12 .grid_12,.container_16 .grid_16{width:940px}.alpha{margin-left:0}.omega{margin-right:0}.container_12 .grid_1{width:60px}.container_12 .grid_2{width:140px}.container_12 .grid_4{width:300px}.container_12 .grid_5{width:380px}.container_12 .grid_7{width:540px}.container_12 .grid_8{width:620px}.container_12 .grid_10{width:780px}.container_12 .grid_11{width:860px}.container_16 .grid_1{width:40px}.container_16 .grid_2{width:100px}.container_16 .grid_3{width:160px}.container_16 .grid_5{width:280px}.container_16 .grid_6{width:340px}.container_16 .grid_7{width:400px}.container_16 .grid_9{width:520px}.container_16 .grid_10{width:580px}.container_16 .grid_11{width:640px}.container_16 .grid_13{width:760px}.container_16 .grid_14{width:820px}.container_16 .grid_15{width:880px}.container_12 .prefix_3,.container_16 .prefix_4{padding-left:240px}.container_12 .prefix_6,.container_16 .prefix_8{padding-left:480px}.container_12 .prefix_9,.container_16 .prefix_12{padding-left:720px}.container_12 .prefix_1{padding-left:80px}.container_12 .prefix_2{padding-left:160px}.container_12 .prefix_4{padding-left:320px}.container_12 .prefix_5{padding-left:400px}.container_12 .prefix_7{padding-left:560px}.container_12 .prefix_8{padding-left:640px}.container_12 .prefix_10{padding-left:800px}.container_12 .prefix_11{padding-left:880px}.container_16 .prefix_1{padding-left:60px}.container_16 .prefix_2{padding-left:120px}.container_16 .prefix_3{padding-left:180px}.container_16 .prefix_5{padding-left:300px}.container_16 .prefix_6{padding-left:360px}.container_16 .prefix_7{padding-left:420px}.container_16 .prefix_9{padding-left:540px}.container_16 .prefix_10{padding-left:600px}.container_16 .prefix_11{padding-left:660px}.container_16 .prefix_13{padding-left:780px}.container_16 .prefix_14{padding-left:840px}.container_16 .prefix_15{padding-left:900px}.container_12 .suffix_3,.container_16 .suffix_4{padding-right:240px}.container_12 .suffix_6,.container_16 .suffix_8{padding-right:480px}.container_12 .suffix_9,.container_16 .suffix_12{padding-right:720px}.container_12 .suffix_1{padding-right:80px}.container_12 .suffix_2{padding-right:160px}.container_12 .suffix_4{padding-right:320px}.container_12 .suffix_5{padding-right:400px}.container_12 .suffix_7{padding-right:560px}.container_12 .suffix_8{padding-right:640px}.container_12 .suffix_10{padding-right:800px}.container_12 .suffix_11{padding-right:880px}.container_16 .suffix_1{padding-right:60px}.container_16 .suffix_2{padding-right:120px}.container_16 .suffix_3{padding-right:180px}.container_16 .suffix_5{padding-right:300px}.container_16 .suffix_6{padding-right:360px}.container_16 .suffix_7{padding-right:420px}.container_16 .suffix_9{padding-right:540px}.container_16 .suffix_10{padding-right:600px}.container_16 .suffix_11{padding-right:660px}.container_16 .suffix_13{padding-right:780px}.container_16 .suffix_14{padding-right:840px}.container_16 .suffix_15{padding-right:900px}.container_12 .push_3,.container_16 .push_4{left:240px}.container_12 .push_6,.container_16 .push_8{left:480px}.container_12 .push_9,.container_16 .push_12{left:720px}.container_12 .push_1{left:80px}.container_12 .push_2{left:160px}.container_12 .push_4{left:320px}.container_12 .push_5{left:400px}.container_12 .push_7{left:560px}.container_12 .push_8{left:640px}.container_12 .push_10{left:800px}.container_12 .push_11{left:880px}.container_16 .push_1{left:60px}.container_16 .push_2{left:120px}.container_16 .push_3{left:180px}.container_16 .push_5{left:300px}.container_16 .push_6{left:360px}.container_16 .push_7{left:420px}.container_16 .push_9{left:540px}.container_16 .push_10{left:600px}.container_16 .push_11{left:660px}.container_16 .push_13{left:780px}.container_16 .push_14{left:840px}.container_16 .push_15{left:900px}.container_12 .pull_3,.container_16 .pull_4{left:-240px}.container_12 .pull_6,.container_16 .pull_8{left:-480px}.container_12 .pull_9,.container_16 .pull_12{left:-720px}.container_12 .pull_1{left:-80px}.container_12 .pull_2{left:-160px}.container_12 .pull_4{left:-320px}.container_12 .pull_5{left:-400px}.container_12 .pull_7{left:-560px}.container_12 .pull_8{left:-640px}.container_12 .pull_10{left:-800px}.container_12 .pull_11{left:-880px}.container_16 .pull_1{left:-60px}.container_16 .pull_2{left:-120px}.container_16 .pull_3{left:-180px}.container_16 .pull_5{left:-300px}.container_16 .pull_6{left:-360px}.container_16 .pull_7{left:-420px}.container_16 .pull_9{left:-540px}.container_16 .pull_10{left:-600px}.container_16 .pull_11{left:-660px}.container_16 .pull_13{left:-780px}.container_16 .pull_14{left:-840px}.container_16 .pull_15{left:-900px}.clear{clear:both;display:block;overflow:hidden;visibility:hidden;width:0;height:0}.clearfix:after{clear:both;content:' ';display:block;font-size:0;line-height:0;visibility:hidden;width:0;height:0}* html .clearfix,*:first-child+html .clearfix{zoom:1}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/css/reset.css Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,1 @@
+html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outline:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/css/style-ie.css Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,15 @@
+#head #menu {
+
+ width: 750px;
+
+}
+
+ #head #menu li {
+
+ display: inline;
+ position: relative;
+ float: left;
+ margin: 0px;
+ padding: 0px;
+
+ }
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/css/style.css Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,975 @@
+
+body {
+
+ background-color: #eee;
+ color: #111;
+ margin: 0px;
+ padding: 0px;
+ font-family: "DroidSans", "Trebuchet MS", sans-serif;
+ line-height: 1.6em;
+ font-size: 1.3em;
+
+}
+
+ #head-container {
+
+ display: block;
+ position: relative;
+ width: 100%;
+ height: 90px;
+
+ background: #111 url(../images/head.png) top left repeat-x;
+
+ }
+
+ #head {
+
+ display: block;
+ position: relative;
+ width: 960px;
+ height: 90px;
+ margin: 0px auto;
+
+ }
+
+ #head #logo {
+
+ display: block;
+ position: absolute;
+ left: 0px;
+ bottom: 10px;
+ width: 200px;
+ height: 70px;
+
+ }
+
+ #head #logo a {
+
+ display: block;
+ position: relative;
+ width: 200px;
+ padding-left: 70px;
+ height: 70px;
+ background: url(../images/netzguerilla-3.png) 0px 0px no-repeat;
+ text-decoration: none;
+
+ }
+
+ #head #logo a span {
+
+ display: none;
+
+ }
+
+ #head #menu {
+
+ display: block;
+ position: absolute;
+ right: 0px;
+ bottom: 0px;
+ margin: 0px;
+ padding: 0px;
+
+ }
+
+ #head #menu li {
+
+ display: inline-block;
+ position: relative;
+ margin: 0px;
+ padding: 0px;
+
+ }
+
+ #head #menu li a {
+
+ display: block;
+ position: relative;
+
+ color: #c03;
+ text-decoration: none;
+ text-transform: uppercase;
+ padding: 0px 7px;
+ background: #333 url(../images/fade-top.png) bottom left repeat-x;
+ margin-left: 5px;
+ font-size: .8em;
+ font-weight: bold;
+
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+
+ }
+
+ #head #menu li a:hover {
+
+ background: #c03 url(../images/fade-top.png) bottom left repeat-x;
+ color: #fff;
+
+ }
+
+ #head #menu li a.active {
+
+ background-color: #eee;
+ background-image: none;
+ color: #000;
+
+ }
+
+ #content-container {
+
+ display: block;
+ position: relative;
+
+ }
+ #content {
+
+ padding: 20px 0px;
+
+ }
+
+ #main {}
+
+ #main h2 {
+
+ display: block;
+ position: relative;
+ color: #a01;
+ font-size: 1.8em;
+ line-height: 1.4em;
+ margin-bottom: 15px;
+ text-shadow: 0px 0px 5px #fff;
+
+ }
+
+ #main h3 {
+
+ display: block;
+ position: relative;
+ color: #b02;
+ font-size: 1.4em;
+ line-height: 1.4em;
+ margin: 10px 0px;
+
+ }
+
+ #main h4 {
+
+ display: block;
+ position: relative;
+ color: #a01;
+ font-size: 1.3em;
+ line-height: 1.4em;
+ margin: 10px 0px;
+
+ }
+
+ #main h5 {
+
+ display: block;
+ position: relative;
+ color: #900;
+ font-size: 1.2em;
+ line-height: 1.4em;
+ margin: 10px 0px;
+
+ }
+
+ #main .item {
+
+ display: block;
+ position: relative;
+
+ padding: 30px 40px;
+
+ border-radius: 15px;
+ -o-border-radius: 15px;
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+
+ -moz-box-shadow: 0px 0px 20px #eee;
+ -o-box-shadow: 0px 0px 20px #eee;
+ -webkit-box-shadow: 0px 0px 20px #eee;
+ box-shadow: 0px 0px 20px #eee;
+
+ background-color: #fff;
+ margin-bottom: 20px;
+ font-size: .9em;
+
+ }
+
+ #main .item p {
+
+ margin: 5px 0px;
+
+ }
+
+ #main .item a {
+
+ text-decoration: none;
+ color: #b02;
+
+ }
+
+ #main .item ol {
+
+ list-style-type: none;
+ list-style-position: inside;
+
+ }
+
+ #main .item ol li {
+
+ margin-left: 2em;
+
+ }
+
+ #main .item table {
+
+ width: 100%;
+ margin: 0px;
+
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+
+ -moz-box-shadow: 0px 0px 15px #ccc;
+ -o-box-shadow: 0px 0px 15px #ccc;
+ -webkit-box-shadow: 0px 0px 15px #ccc;
+ box-shadow: 0px 0px 15px #ccc;
+
+
+ }
+
+ #main .item table.docs {
+
+ font-size: .8em;
+
+ }
+
+ #main .item table.docs td {
+
+ font-weight: bold;
+ padding-right: 0.2em;
+ min-width: 120px;
+
+ }
+
+ #main .item table.docs td+td {
+
+ font-weight: normal;
+ padding-right: 0.2em;
+ min-width: 80px;
+
+ }
+
+ #main .item table.docs td+td+td {
+
+ font-weight: normal;
+ padding-right: 0em;
+ white-space: normal;
+
+ }
+
+ #main .item table td {
+
+ background-color: #eee;
+ line-height: 1.7em;
+
+ }
+
+ #main .item table thead tr td {
+
+ background-color: #c03;
+ color: #fff;
+ font-size: .8em;
+ padding: 5px;
+
+ }
+
+ #main .item table tbody tr td {
+
+ color: #222;
+ vertical-align: top;
+
+ }
+
+ #main .item table tbody tr td.content {
+
+ padding: 10px;
+ font-size: .8em;
+
+ }
+
+ #main .item table tbody tr td.content strong.title {
+
+ display: inline-block;
+ position: relative;
+ max-width: 140px;
+ overflow: hidden;
+
+ }
+
+ #main .item table tbody tr td.content span.meta {
+
+ display: block;
+ position: relative;
+ max-width: 140px;
+ overflow: hidden;
+ line-height: 1.4em;
+ font-size: .8em;
+
+ }
+
+ #main .item table tbody tr td.content span.hate {
+
+ display: block;
+ position: relative;
+ line-height: 1.4em;
+ border: 1px solid #ccc;
+ padding: 10px;
+ text-align: justify;
+
+ }
+ #main .item table tbody tr:nth-child(odd) td {
+
+ background-color: #f9f9f9;
+
+ }
+
+ #main .item table tbody tr:nth-child(even) td {
+
+ background-color: #f6f6f6;
+
+ }
+
+ #main .item table tr td:first-child {
+
+ padding-left: 5px;
+
+ }
+
+ #main .item table tr td:last-child {
+
+ padding-right: 5px;
+
+ }
+
+ #main .item table tr td.controls {
+
+ width: 80px;
+ text-align: right;
+
+ }
+
+ #main .item table tr td.controls a {
+
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ overflow: hidden;
+ text-indent: 30px;
+ background-color: #eee;
+
+ -moz-box-shadow: 0px 0px 5px #ccc;
+ -o-box-shadow: 0px 0px 5px #ccc;
+ -webkit-box-shadow: 0px 0px 5px #ccc;
+ box-shadow: 0px 0px 5px #ccc;
+
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+
+ vertical-align: bottom;
+ margin: 0px 0px 4px 2px;
+
+ background-image: url(../images/icons/bug.png);
+ background-position: center center;
+ background-repeat: no-repeat;
+
+ }
+
+ #main .item table tr td.controls a:hover {
+
+ background-color: #c03;
+
+ }
+
+ #main .item table tr td.controls a.edit {
+
+ background-image: url(../images/icons/pencil.png);
+
+ }
+
+ #main .item table tr td.controls a.delete {
+
+ background-image: url(../images/icons/bin.png);
+
+ }
+
+ #main .item table tr td.controls a.details {
+
+ background-image: url(../images/icons/zoom.png);
+
+ }
+
+ #main .item table tr td.controls a.accept {
+
+ background-image: url(../images/icons/accept.png);
+
+ }
+
+ /* round corners */
+
+ #main .item table thead tr:first-child td:first-child {
+
+ -webkit-border-top-left-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ border-top-left-radius: 5px;
+
+ }
+
+ #main .item table thead tr:first-child td:last-child {
+
+ -webkit-border-top-right-radius: 5px;
+ -moz-border-radius-topright: 5px;
+ border-top-right-radius: 5px;
+
+ }
+
+ #main .item table tbody tr:last-child td:first-child {
+
+ -webkit-border-bottom-left-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ border-bottom-left-radius: 5px;
+
+ }
+
+ #main .item table tbody tr:last-child td:last-child {
+
+ -webkit-border-bottom-right-radius: 5px;
+ -moz-border-radius-bottomright: 5px;
+ border-bottom-right-radius: 5px;
+
+ }
+
+ #main .item code.copyme {
+
+ display: block;
+ margin: 0px 0px 10px;
+ padding: 10px;
+ line-height: 1em;
+ border: 1px solid #ccc;
+ background-color: #eee;
+
+ }
+
+ /* main view */
+
+ #main .hate-pagination {
+
+ display: block;
+ position: relative;
+ line-height: 1.2em;
+ padding: 10px 0px;
+
+ }
+
+ #main .hate-pagination-back {
+
+ display: block;
+ position: relative;
+ width: 300px;
+ text-align: left;
+ float: left;
+
+ }
+
+ #main .hate-pagination-forward {
+
+ display: block;
+ position: relative;
+ width: 300px;
+ text-align: right;
+ float: right;
+
+ }
+
+ #main .ad-item {
+
+ display: block;
+ position: relative;
+ border-bottom: 1px solid #ccc;
+ line-height: 1.2em;
+ padding: 20px 0px;
+ text-align: center;
+
+ }
+
+ #main .hate-item {
+
+ display: block;
+ position: relative;
+ border-bottom: 1px solid #ccc;
+ line-height: 1.2em;
+ padding: 10px 0px;
+
+ }
+
+ #main .hate-item .hate-item-icon {
+
+ display: block;
+ position: relative;
+ width: 48px;
+ padding: 5px 0px 5px 10px;
+ float: left;
+
+ }
+
+ #main .hate-item .hate-item-main {
+
+ display: block;
+ position: relative;
+ width: 550px;
+ float: right;
+
+ }
+
+ #main .hate-item .hate-item-author {
+
+ display: block;
+ position: relative;
+ font-size: .8em;
+ font-weight: bold;
+ color: #222;
+
+ }
+
+ #main .hate-item .hate-item-author a {
+
+ color: #222;
+
+ }
+
+ #main .hate-item .hate-item-content {
+
+ display: block;
+ position: relative;
+ font-size: .8em;
+ font-weight: normal;
+ color: #444;
+
+ }
+
+ #main .hate-item .hate-item-meta {
+
+ display: block;
+ position: relative;
+ font-size: .6em;
+ color: #666;
+
+ }
+
+ #main .hate-item .hate-item-meta a {
+
+ color: #666;
+
+ }
+
+ #main .hate-item .hate-item-meta a.facepalm {
+
+ display: inline-block;
+ padding-left: 20px;
+ line-height: 16px;
+ background: url(../images/icons/facepalm.png) top left no-repeat;
+
+ }
+
+ #main .hate-item:hover .hate-item-meta a.facepalm {
+
+ background: url(../images/icons/facepalm-hl.png) top left no-repeat;
+
+ }
+
+ #main .hate-item .hate-item-meta span.godwin {
+
+ display: inline-block;
+ padding-left: 20px;
+ line-height: 16px;
+ background: url(../images/icons/godwinbonus.png) top left no-repeat;
+
+ }
+
+ #main .hate-item:hover {
+
+ background-color: #fce;
+
+ }
+
+ #main .hate-item:hover a {
+
+ color: #c03;
+
+ }
+
+ #main .hate-detail {
+
+ display: block;
+ position: relative;
+ border-bottom: 1px solid #ccc;
+ line-height: 1.2em;
+ padding: 10px 0px;
+
+ }
+
+ #main .hate-detail .hate-item-icon {
+
+ display: block;
+ position: relative;
+ width: 48px;
+ padding: 5px 0px;
+ float: left;
+
+ }
+
+ #main .hate-detail .hate-item-main {
+
+ display: block;
+ position: relative;
+
+ }
+
+ #main .hate-detail .hate-item-author {
+
+ display: block;
+ position: relative;
+ font-size: 1.2em;
+ line-height: 50px;
+ font-weight: bold;
+ color: #222;
+ width: 560px;
+ float: right;
+
+ }
+
+ #main .hate-detail .hate-item-content {
+
+ display: block;
+ position: relative;
+ font-size: 1.2em;
+ line-height: 1.4em;
+ font-weight: normal;
+ color: #444;
+ padding: 10px 0px;
+
+ }
+
+ #main .hate-detail .hate-item-meta {
+
+ display: block;
+ position: relative;
+ font-size: .8em;
+ color: #666;
+
+ }
+
+ #main .hate-detail .hate-item-meta a {
+
+ color: #666;
+
+ }
+
+ #main .hate-detail .hate-item-meta a.facepalm {
+
+ display: inline-block;
+ padding-left: 20px;
+ line-height: 16px;
+ background: url(../images/icons/facepalm.png) top left no-repeat;
+
+ }
+
+ #main .hate-detail:hover .hate-item-meta a.facepalm {
+
+ background: url(../images/icons/facepalm-hl.png) top left no-repeat;
+
+ }
+
+ #main .hate-detail .hate-item-meta span.godwin {
+
+ display: inline-block;
+ padding-left: 20px;
+ line-height: 16px;
+ background: url(../images/icons/godwinbonus.png) top left no-repeat;
+
+ }
+
+
+ /* special stuff */
+
+ #main span.redacted {
+
+ display: inline-block;
+ background-color: #333;
+ color: #c03;
+ line-height: 1.1em;
+ padding: 0px 5px;
+
+ }
+
+ #main code.apikey {
+
+ font-size: 1.1em;
+ background-color: #a01;
+ color: #fff;
+ display: inline-block;
+ padding: 0px 5px;
+
+ }
+
+ #main a.bookmarklet {
+
+ font-size: 1.4em;
+ background-color: #ccc;
+ color: #666;
+ border: 1px solid #666;
+ display: inline-block;
+ padding: 5px 10px;
+
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+
+ }
+
+ #main form input[type=text],
+ #main form input[type=password] {
+
+ display: block;
+ position: relative;
+ border: 1px solid #999;
+ font-size: .9em;
+ padding: 3px;
+
+ border-radius: 5px;
+ -o-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+
+ }
+
+ #main form input[type=submit] {
+
+ display: block;
+ position: relative;
+ border: 1px solid #ccc;
+ color: #111;
+ font-size: .9em;
+ padding: 2px;
+
+ border-radius: 5px;
+ -o-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+
+
+ }
+
+ #main form span.input {
+
+ display: inline-block;
+ position: relative;
+ border: 1px solid #999;
+ font-size: .9em;
+ padding: 0px 2px;
+ background-color: #fff;
+ border-radius: 5px;
+ -o-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+
+
+ }
+
+ #main form span.input input[type=text] {
+
+ display: inline-block;
+ position: relative;
+ border-width: 0px;
+ font-size: 1em;
+ padding: 0px;
+ background-color: #fff;
+
+ }
+
+ #main form span.input input[type=text].right {
+
+ text-align: right;
+
+ }
+
+ #main form span.input input.size-2 {
+
+ width: 1.5em !important;
+
+ }
+
+ #main form span.input input.size-4 {
+
+ width: 2.5em !important;
+
+ }
+
+ #main form label {
+
+ display: block;
+ position: relative;
+ font-size: .75em;
+ color: #666;
+
+ }
+
+ #main form textarea {
+
+ display: block;
+ position: relative;
+ border: 1px solid #999;
+ font-size: .9em;
+ font-family: sans-serif;
+ padding: 3px;
+
+ border-radius: 5px;
+ -o-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+
+ }
+
+
+ #main form fieldset {
+
+ border: 1px solid #ccc;
+ padding: 5px;
+ margin: 5px 0px;
+
+ }
+
+ #main form fieldset legend {
+
+ font-size: .75em;
+ color: #666;
+
+ }
+
+ #sidebar {}
+
+ #sidebar h3 {
+
+ display: block;
+ position: relative;
+ color: #fff;
+ font-size: 1.2em;
+ line-height: 1.4em;
+ margin: 5px 0px;
+
+ }
+
+ #sidebar .item {
+
+ display: block;
+ position: relative;
+
+ padding: 0px 10px;
+
+ border-radius: 10px;
+ -o-border-radius: 10px;
+ -moz-border-radius: 10px;
+ -webkit-border-radius: 10px;
+
+ -moz-box-shadow: 0px 0px 20px #eee;
+ -o-box-shadow: 0px 0px 20px #eee;
+ -webkit-box-shadow: 0px 0px 20px #eee;
+ box-shadow: 0px 0px 20px #eee;
+
+ background-color: #333;
+ margin-bottom: 20px;
+ font-size: .8em;
+
+ }
+
+ #sidebar .center {
+
+ text-align: center;
+
+ }
+
+ #sidebar .counter-item .content {
+
+ font-size: 3em;
+ color: #c03;
+ font-weight: bold;
+ line-height: 1em;
+ padding-bottom: 5px;
+ text-align: center;
+
+ }
+
+ #sidebar .submenu-item {
+
+ background-color: #ddd;
+
+ }
+
+ #sidebar .submenu-item ul {}
+
+ #sidebar .submenu-item ul li {}
+
+ #sidebar .submenu-item ul li+li {
+
+ border-top: 1px dotted #999;
+
+ }
+
+ #sidebar .submenu-item ul a {
+
+ color: #c03;
+ text-decoration: none;
+ text-transform: uppercase;
+
+ }
+
+ #sidebar .submenu-item ul a:hover {
+
+ color: #a01;
+
+ }
+
+ #foot-container {
+
+ display: block;
+ position: relative;
+ background: #222;
+ color: #ddd;
+
+ }
+
+ #foot {
+
+ display: block;
+ position: relative;
+ width: 960px;
+ margin: 0px auto;
+ padding: 20px;
+ font-size: .8em;
+
+ }
+
+ #foot a {
+
+ text-decoration: none;
+ color: #c03;
+
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/current.html Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,385 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+
+
+ <head>
+ <title>Iro · API docs</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta charset="utf-8">
+ <meta name="description" content="">
+ <meta name="keywords" content="">
+ <link rel="shortcut icon" type="image/x-icon" href="images/favicon.png">
+ <link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="css/960.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
+ <!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css" media="screen" /><![endif] -->
+ </head>
+ <body>
+ <div id="head-container">
+ <div id="head">
+ <h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+ <ul id="menu">
+ <li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu active">API Documentation</a></li><li><a href="new.html" class="menu">geplante API Documentation</a></li><li><a href="impressum.html" class="menu">Impressum</a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="content-container">
+ <div id="content" class="container_12">
+ <div id="main" class="grid_9">
+ <h2>API Dokumentation</h2>
+ <div class="item">
+ <p>
+ </p>
+ <ol>
+ <li value="1">1. <a href="#api-intro">Einführung</a></li>
+ <li value="2">2.
+ <a href="#api-interfaces">Interfaces</a>
+ <ol>
+ <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+ </ol>
+ </li>
+ <li value="3">3.
+ <a href="#api-methods">Methoden</a>
+ <ol>
+ <li value="3.1">3.1 <a href="#method-startSMS">StartSMS</a></li><li value="3.2">3.2 <a href="#method-startFAX">StartFAX</a></li><li value="3.3">3.3 <a href="#method-startMail">StartMail</a></li><li value="3.4">3.4 <a href="#method-status">Status</a></li><li value="3.5">3.5 <a href="#method-stop">Stop</a></li><li value="3.6">3.6 <a href="#method-getProvider">GetProvider</a></li><li value="3.7">3.7 <a href="#method-getDefaultProvider">GetDefaultProvider</a></li>
+ </ol>
+ </li>
+ </ol>
+ </div><div class="item" id="api-intro">
+ <h3>Einführung</h3>
+ <p>
+ Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
+ </p>
+ </div><div class="item" id="api-interfaces">
+ <h3>Interfaces</h3>
+ <p>
+ Die Iro API stellt zur Zeit nur ein Interfaces bereit.
+ </p>
+ <div class="item" id="interface-xmlrpc">
+ <h4>XML-RPC</h4>
+ <p>
+ Interface-URI: <code>https://<em><benutzer></em>:<em><passwort></em>@localhost:8000</code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird dabei im <code><methodName /></code> übergeben.
+ </p>
+ </div>
+ </div><div class="item" id="api-methods">
+ <h3>Methoden</h3>
+ <div class="item" id="method-startSMS">
+ <h4>StartSMS</h4>
+ <p><code>startSMS</code></p>
+ <p>Versendet eine SMS.</p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>message</td>
+ <td>string</td>
+ <td> Nachricht</td>
+ </tr><tr>
+ <td>recipients</td>
+ <td>list</td>
+ <td> eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)</td>
+ </tr><tr>
+ <td>provider</td>
+ <td>string</td>
+ <td> Provider über den geschickt werden soll;
+default - verschickt über den Standardprovider</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>id</td>
+ <td>hash</td>
+ <td> Die ID des Auftrages</td>
+ </tr>
+ </tbody>
+ </table>
+ </div><div class="item" id="method-startFAX">
+ <h4>StartFAX</h4>
+ <p><code>startFAX</code></p>
+ <p>Versendet ein FAX.</p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>subject</td>
+ <td>string</td>
+ <td> der Betreff</td>
+ </tr><tr>
+ <td>fax</td>
+ <td>string</td>
+ <td> das pdf base64 kodiert</td>
+ </tr><tr>
+ <td>recipients</td>
+ <td>list</td>
+ <td> eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)</td>
+ </tr><tr>
+ <td>provider</td>
+ <td>string</td>
+ <td> Provider über den geschickt werden soll;
+default - verschickt über den Standardprovider</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>id</td>
+ <td>hash</td>
+ <td> Die ID des Auftrages</td>
+ </tr>
+ </tbody>
+ </table>
+ </div><div class="item" id="method-startMail">
+ <h4>StartMail</h4>
+ <p><code>startMail</code></p>
+ <p>Versendet eine Email.</p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>subject</td>
+ <td>string</td>
+ <td> der Betreff</td>
+ </tr><tr>
+ <td>body</td>
+ <td>string</td>
+ <td> der Email Body</td>
+ </tr><tr>
+ <td>recipients</td>
+ <td>list</td>
+ <td> eine Liste von Emailadressen</td>
+ </tr><tr>
+ <td>frm</td>
+ <td>string</td>
+ <td> Die Absender Emailadresse</td>
+ </tr><tr>
+ <td>provider</td>
+ <td>string</td>
+ <td> Provider über den geschickt werden soll;
+default - verschickt über den Standardprovider</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>id</td>
+ <td>hash</td>
+ <td> Die ID des Auftrages</td>
+ </tr>
+ </tbody>
+ </table>
+ </div><div class="item" id="method-status">
+ <h4>Status</h4>
+ <p><code>status</code></p>
+ <p>Gibt den aktuellen Status eines Auftrages zurück.</p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>id</td>
+ <td>hash</td>
+ <td> Eine Auftragsnummer
+default - alle Aufträge ausgeben</td>
+ </tr><tr>
+ <td>detailed</td>
+ <td>boolean</td>
+ <td> Details ausgeben
+default - False</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>jobs</td>
+ <td>list</td>
+ <td> Eine Liste der Aufträge.</td>
+ </tr><tr>
+ <td>job.name</td>
+ <td>string</td>
+ <td> Angebener Name</td>
+ </tr><tr>
+ <td>job.status</td>
+ <td>string</td>
+ <td> Status des Auftrages</td>
+ </tr>
+ </tbody>
+ </table>
+ </div><div class="item" id="method-stop">
+ <h4>Stop</h4>
+ <p><code>stop</code></p>
+ <p>Stoppt den angegeben Auftrag.</p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>id</td>
+ <td>hash</td>
+ <td> Eine Auftragsnummer</td>
+ </tr>
+ </tbody>
+ </table>
+ </div><div class="item" id="method-getProvider">
+ <h4>GetProvider</h4>
+ <p><code>getProvider</code></p>
+ <p>Gibt eine Liste aller verfügbaren Provider zurück.</p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>typ</td>
+ <td>string</td>
+ <td> Der Typ zu dem die Providerloste ausgeben werden soll
+Einer der Liste ["sms","fax","mail"]</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>providerlist</td>
+ <td>list</td>
+ <td> Eine Liste aller möglichen Provider</td>
+ </tr>
+ </tbody>
+ </table>
+ </div><div class="item" id="method-getDefaultProvider">
+ <h4>GetDefaultProvider</h4>
+ <p><code>getDefaultProvider</code></p>
+ <p>Gibt den Standardprovider zurück.</p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>typ</td>
+ <td>string</td>
+ <td> Der Typ zu dem die Providerloste ausgeben werden soll
+Einer der Liste ["sms","fax","mail"]</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>provider</td>
+ <td>string</td>
+ <td> Der Standardprovider für den angeben Typ</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div id="foot-container">
+ <div id="foot">
+ <p>© 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
Binary file doc/images/netzguerilla-3.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/impressum.html Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+
+
+ <head>
+ <title>Iro · Impressum</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta charset="utf-8">
+ <meta name="description" content="">
+ <meta name="keywords" content="">
+ <link rel="shortcut icon" type="image/x-icon" href="images/favicon.png">
+ <link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="css/960.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
+ <!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css" media="screen" /><![endif] -->
+ </head>
+ <body>
+ <div id="head-container">
+ <div id="head">
+ <h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+ <ul id="menu">
+ <li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="new.html" class="menu">geplante API Documentation</a></li><li><a href="impressum.html" class="menu active">Impressum</a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="content-container">
+ <div id="content" class="container_12">
+ <div id="main" class="grid_9">
+ <h2>Impressum</h2>
+ <div class="item">
+ <h3>Kontakt</h3>
+ <p>
+ <strong>Netzguerilla.net</strong> Clerc Knauß Vollnhals GbR<br>
+ Manteuffelstraße 40<br>
+ 10997 Berlin
+ </p>
+ <p>
+ WWW: <a href="https://netzguerilla.net/">netzguerilla.net</a><br>
+ </p>
+ <p>
+ E-Mail: <a href="mailto:iro@netzguerilla.net">iro@netzguerilla.net</a><br>
+ </p>
+ <p>
+ Telefon: <a href="tel:+493069201075">+49 30 69201075</a><br>
+ </p>
+ <h3>Inhaltlich verantwortlich</h3>
+ <p>
+ <small>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV bzw. §5 TMG sowie beauftragt mit dem Jugendschutz gemäß TMG, JMStV sowie GjSM:</small><br>
+ <strong>Sandro Knauß</strong>, Anschrift wie oben, <a href="mailto:iro@netzguerilla.net">iro@netzguerilla.net</a>
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div id="foot-container">
+ <div id="foot">
+ <p>© 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/index.html Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+
+
+ <head>
+ <title>Iro · work in progress</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta charset="utf-8">
+ <meta name="description" content="">
+ <meta name="keywords" content="">
+ <link rel="shortcut icon" type="image/x-icon" href="images/favicon.png">
+ <link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="css/960.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
+ <!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css" media="screen" /><![endif] -->
+ </head>
+ <body>
+ <div id="head-container">
+ <div id="head">
+ <h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+ <ul id="menu">
+ <li><a href="index.html" class="menu active">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="new.html" class="menu">geplante API Documentation</a></li><li><a href="impressum.html" class="menu">Impressum</a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="content-container">
+ <div id="content" class="container_12">
+ <div id="main" class="grid_9">
+ <h2>Iro</h2>
+ <div class="item">
+ <p>
+ Iro ist toll, ist aber noch nicht fertig.
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div id="foot-container">
+ <div id="foot">
+ <p>© 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/new.html Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,1036 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+
+
+ <head>
+ <title>Iro · api docs new</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta charset="utf-8">
+ <meta name="description" content="">
+ <meta name="keywords" content="">
+ <link rel="shortcut icon" type="image/x-icon" href="images/favicon.png">
+ <link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="css/960.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
+ <!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css" media="screen" /><![endif] -->
+ </head>
+ <body>
+ <div id="head-container">
+ <div id="head">
+ <h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+ <ul id="menu">
+ <li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="new.html" class="menu active">geplante API Documentation</a></li><li><a href="impressum.html" class="menu">Impressum</a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="content-container">
+ <div id="content" class="container_12">
+ <div id="main" class="grid_9">
+ <h2>geplante API Dokumentation</h2>
+ <div class="item">
+ <p>
+ </p>
+ <ol>
+ <li value="1">1. <a href="#api-intro">Einführung</a></li>
+ <li value="2">2.
+ <a href="#api-interfaces">Interfaces</a>
+ <ol>
+ <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+ <li value="2.2">2.2 <a href="#interface-xml">XML</a></li>
+ <li value="2.3">2.3 <a href="#interface-json">JSON</a></li>
+ <li value="2.4">2.4 <a href="#interface-jsonp">JSONP</a></li>
+ <li value="2.5">2.5 <a href="#interface-php">PHP</a></li>
+ </ol>
+ </li>
+ <li value="3">3.
+ <a href="#api-methods">Methoden</a>
+ <ol>
+ <li value="3.1">3.1 <a href="#method-route">Route</a></li>
+ <li value="3.2">3.2 <a href="#method-dist">Dist</a></li>
+ <li value="3.3">3.3 <a href="#method-geocode">Geocode</a></li>
+ <li value="3.4">3.4 <a href="#method-sms">SMS</a></li>
+ <li value="3.5">3.5 <a href="#method-bank">Bank</a></li>
+ <li value="3.6">3.6 <a href="#method-bank">Boxcar</a></li>
+ <li value="3.7">3.7 <a href="#method-postcode-match">Postcode-Match</a></li>
+ <li value="3.8">3.8 <a href="#method-postcode-shape">Postcode-Shape</a></li>
+ </ol>
+ </li>
+ <li value="4">4. <a href="#api-errors">Fehlermeldungen</a></li>
+ </ol>
+ </div><div class="item" id="api-intro">
+ <h3>Einführung</h3>
+ <p>
+ Die Mesngr API enthält viele Funktionen, die von Fahrradkurierdiensten benötigt werden.
+ </p>
+ </div><div class="item" id="api-interfaces">
+ <h3>Interfaces</h3>
+ <p>
+ Die Mesngr API stellt verschiedene Interfaces bereit, die unterschiedlich angesprochen werden, aber das selbe tun.
+ </p>
+ <div class="item" id="interface-xmlrpc">
+ <h4>XML-RPC</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/xmlrpc</code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird dabei im <code><methodName /></code> übergeben.
+ </p>
+ <p>
+ Das XML-RPC Interface nimmt die Parameter der aufgerufenen Methode als <code><struct /></code> inerhalb des ersten <code><param /></code> entgegen, alle weiteren <code><param /></code>s werden ignoriert.
+ </p>
+ <p>
+ Zeichen außerhalb des ASCII-Sets sind als HTML Entities zu übergeben.
+ </p>
+ </div>
+ <div class="item" id="interface-xml">
+ <h4>XML</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/xml/<em><methode></em></code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+ </p>
+ <p>
+ Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+ </p>
+ <p>
+ Die Ausgabe erfolgt als XML Markup.
+ </p>
+ </div>
+ <div class="item" id="interface-json">
+ <h4>JSON</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/json/<em><methode></em></code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+ </p>
+ <p>
+ Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> oder JSON-Objekt übergeben werden.
+ </p>
+ <p>
+ Die Ausgabe erfolgt als JSON-Objekt.
+ </p>
+ </div>
+ <div class="item" id="interface-json">
+ <h4>JSONP</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/jsonp/<em><methode></em>?callback=<callback></code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+ </p>
+ <p>
+ Der Name für die Callback-Methode wird als Parameter Callback übergeben.
+ </p>
+ <p>
+ Parameter können via HTTP per GET im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+ </p>
+ <p>
+ Die Ausgabe erfolgt als Javascript-Funktionsaufruf mit einem JSON-Objekt als Parameter.
+ </p>
+ </div>
+ <div class="item" id="interface-php">
+ <h4>PHP</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/php/<em><methode></em></code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+ </p>
+ <p>
+ Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+ </p>
+ <p>
+ Die Ausgabe erfolgt als serialisiertes PHP-Objekt.
+ </p>
+ </div>
+ </div><div class="item" id="api-methods">
+ <h3>Methoden</h3>
+ <div class="item" id="method-route">
+ <h4>Route</h4>
+ <p><code>route</code></p>
+ <p>
+ Diese Methode ermittelt die Routing-Entfernung zwischen zwei Koordinaten.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>enum[car,bicycle,foot]</td>
+ <td>Die gewünschte Routing-Methode</td>
+ </tr>
+ <tr>
+ <td>flon</td>
+ <td>float</td>
+ <td>Der Längengrad des Startpunktes</td>
+ </tr>
+ <tr>
+ <td>flat</td>
+ <td>float</td>
+ <td>Der Breitengrad des Startpunktes</td>
+ </tr>
+ <tr>
+ <td>tlon</td>
+ <td>float</td>
+ <td>Der Längengrad des Zielpunktes</td>
+ </tr>
+ <tr>
+ <td>tlat</td>
+ <td>float</td>
+ <td>Der Breitengrad des Zielpunktes</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>distance</td>
+ <td>float</td>
+ <td>Die ermittelte Routing-Distanz in km</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-dist">
+ <h4>Dist</h4>
+ <p><code>dist</code></p>
+ <p>
+ Diese Methode ermittelt die direkte Entfernung zwischen zwei Koordinaten.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>flon</td>
+ <td>float</td>
+ <td>Der Längengrad des Startpunktes</td>
+ </tr>
+ <tr>
+ <td>flat</td>
+ <td>float</td>
+ <td>Der Breitengrad des Startpunktes</td>
+ </tr>
+ <tr>
+ <td>tlon</td>
+ <td>float</td>
+ <td>Der Längengrad des Zielpunktes</td>
+ </tr>
+ <tr>
+ <td>tlat</td>
+ <td>float</td>
+ <td>Der Breitengrad des Zielpunktes</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>distance</td>
+ <td>float</td>
+ <td>Die ermittelte Routing-Distanz in km</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-geocode">
+ <h4>Geocode</h4>
+ <p><code>geocode</code></p>
+ <p>
+ Ermittelt die Koordinaten zu einer Adresse. Diese Methode ist Kostenpflichtig.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>enum[fast, complete]</td>
+ <td>Die Eingabemethode. Im Modus <em>fast</em> wird der Parameter <code>number</code> an den Parameter <code>street</code> angehängt sowie der Parameter <code>postcode</code> vor den Parameter <code>city</code>; Die Parameter <code>postcode</code> und <code>number</code> werden dann ignoriert.</td>
+ </tr>
+ <tr>
+ <td>street</td>
+ <td>str</td>
+ <td>Der Straßenname der Adresse</td>
+ </tr>
+ <tr>
+ <td>number</td>
+ <td>str</td>
+ <td>Die Hausnummer der Adresse</td>
+ </tr>
+ <tr>
+ <td>postcode</td>
+ <td>str</td>
+ <td>Die Postleitzahl der Adresse</td>
+ </tr>
+ <tr>
+ <td>city</td>
+ <td>str</td>
+ <td>Die Stadt der Adresse</td>
+ </tr>
+ <tr>
+ <td>country</td>
+ <td>str</td>
+ <td>Das Land der Adresse, ISO 3166</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>stage</td>
+ <td>enum[1,2,3]</td>
+ <td>
+ Grad des Erfolges des Geocodings:<br>
+ 1 → Es stehen mehrere mögliche Adressen zur Auswahl.<br>
+ 2 → Eine mögliche Adresse als Korrekturvorschlag.<br>
+ 3 → Die Adresse konnte verifiziert und zugehörige Geokoordinaten ermittelt werden.
+ </td>
+ </tr>
+ <tr>
+ <td>data</td>
+ <td>array</td>
+ <td>
+ Die ermittelten Adressdaten
+ </td>
+ </tr>
+ <tr>
+ <td>data[i]</td>
+ <td>array</td>
+ <td>
+ Ein ermittelter Adressdatensatz
+ </td>
+ </tr>
+ <tr>
+ <td>data[i][street]</td>
+ <td>str</td>
+ <td>Name der Straße</td>
+ </tr>
+ <tr>
+ <td>data[i][nr]</td>
+ <td>str</td>
+ <td>Hausnummer</td>
+ </tr>
+ <tr>
+ <td>data[i][fragment]</td>
+ <td>str</td>
+ <td>Hausnummernzusatz (z.B. <em>a</em> bei <em>12a</em>)</td>
+ </tr>
+ <tr>
+ <td>data[i][postcode]</td>
+ <td>str</td>
+ <td>Postleitzahl</td>
+ </tr>
+ <tr>
+ <td>data[i][city]</td>
+ <td>str</td>
+ <td>Ort</td>
+ </tr>
+ <tr>
+ <td>data[i][country]</td>
+ <td>str[2]</td>
+ <td>Land (gemäß ISO 3166)</td>
+ </tr>
+ <tr>
+ <td>data[i][accuracy]</td>
+ <td>int</td>
+ <td>Genauigkeit (Genau > Ungenau)</td>
+ </tr>
+ <tr>
+ <td>data[i][lat]</td>
+ <td>float</td>
+ <td>Breitengrad</td>
+ </tr>
+ <tr>
+ <td>data[i][lon]</td>
+ <td>float</td>
+ <td>Längengrad</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-sms">
+ <h4>SMS</h4>
+ <p><code>sms</code></p>
+ <p>
+ Versendet eine SMS-Nachricht. Diese Methode ist kostenpflichtig.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>from</td>
+ <td>str[11]|tel[16]</td>
+ <td>Der gewünschte Absender (optional)</td>
+ </tr>
+ <tr>
+ <td>to</td>
+ <td>tel[15]</td>
+ <td>Emfänger-Nummer (gemäß ITU-T E.123)</td>
+ </tr>
+ <tr>
+ <td>ref</td>
+ <td>str</td>
+ <td>Referenz für Antworten</td>
+ </tr>
+ <tr>
+ <td>callback</td>
+ <td>str</td>
+ <td>Callback-URL für SMS-Antworten. Noch nicht implementiert.</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-bank">
+ <h4>Bank</h4>
+ <p><code>bank</code></p>
+ <p>
+ Prüft Bankdaten auf Plausibilität.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>country</td>
+ <td>[de]</td>
+ <td>Das Land des Bankdatenformates</td>
+ </tr>
+ <tr>
+ <td>bank</td>
+ <td>int[8]</td>
+ <td>Die Bankleitzahl</td>
+ </tr>
+ <tr>
+ <td>account</td>
+ <td>int[10]</td>
+ <td>Die Kontonummer (optional)</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>bank</td>
+ <td>array</td>
+ <td>Der Bankdatensatz</td>
+ </tr>
+ <tr>
+ <td>bank[id]</td>
+ <td>int[8]</td>
+ <td>Die Bankleitzahl</td>
+ </tr>
+ <tr>
+ <td>bank[name]</td>
+ <td>str</td>
+ <td>Name der Bank</td>
+ </tr>
+ <tr>
+ <td>bank[city]</td>
+ <td>str</td>
+ <td>Stadt</td>
+ </tr>
+ <tr>
+ <td>bank[bic]</td>
+ <td>str</td>
+ <td>Der BIC der Bank</td>
+ </tr>
+ <tr>
+ <td>account</td>
+ <td>array</td>
+ <td>Der Kontodatensatz</td>
+ </tr>
+ <tr>
+ <td>account[id]</td>
+ <td>int[10]</td>
+ <td>Die Kontonummer</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-bank">
+ <h4>Boxcar</h4>
+ <p><code>boxcar</code></p>
+ <p>
+ Sendet eine Push-Notification via Boxcar. Ist der Boxcar-user nicht subskribiert, wird statt der Nachricht eine Subskriptions-Anfrage gesendet.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>to</td>
+ <td>str</td>
+ <td>E-Mail-Adresse des Boxcar-Accounts</td>
+ </tr>
+ <tr>
+ <td>from</td>
+ <td>str</td>
+ <td>Absender</td>
+ </tr>
+ <tr>
+ <td>message</td>
+ <td>str</td>
+ <td>Die Nachricht</td>
+ </tr>
+ <tr>
+ <td>url</td>
+ <td>str</td>
+ <td>Die URL die aufgerufen werden soll</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-postcode-match">
+ <h4>Postcode-Match</h4>
+ <p><code>postcodematch</code></p>
+ <p>
+ Liefert die Schwerpunkt-Koordinaten aller Postleizahlengebiete innerhalb eines Bereiches.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>bbox_n</td>
+ <td>float</td>
+ <td>Maximale Latitude</td>
+ </tr>
+ <tr>
+ <td>bbox_s</td>
+ <td>float</td>
+ <td>Minimale Latitude</td>
+ </tr>
+ <tr>
+ <td>bbox_e</td>
+ <td>float</td>
+ <td>Maximale Longitude</td>
+ </tr>
+ <tr>
+ <td>bbox_w</td>
+ <td>float</td>
+ <td>Minimale Longitude</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>postcodes</td>
+ <td>array</td>
+ <td>Ergebnisse</td>
+ </tr>
+ <tr>
+ <td>postcodes[i]</td>
+ <td>array</td>
+ <td>Ergebnis</td>
+ </tr>
+ <tr>
+ <td>postcodes[i][postcode]</td>
+ <td>str</td>
+ <td>Postleitzahl</td>
+ </tr>
+ <tr>
+ <td>postcodes[i][lat]</td>
+ <td>float</td>
+ <td>Latitude des Schwerpunktes</td>
+ </tr>
+ <tr>
+ <td>postcodes[i][lon]</td>
+ <td>float</td>
+ <td>Longitude des Schwerpunktes</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-postcode-shape">
+ <h4>Postcode-Shape</h4>
+ <p><code>postcodeshape</code></p>
+ <p>
+ Gibt eine Näherung an die geografische Definition eines Postleitzahlengebietes aus.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>postcode</td>
+ <td>str</td>
+ <td>Die Postleitzahl des Gebietes</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>postcode</td>
+ <td>str</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>center</td>
+ <td>array</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>center[lat]</td>
+ <td>flaot</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>center[lon]</td>
+ <td>flaot</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox</td>
+ <td>array</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox[n]</td>
+ <td>float</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox[s]</td>
+ <td>float</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox[w]</td>
+ <td>float</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox[e]</td>
+ <td>float</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>shape</td>
+ <td>array</td>
+ <td>Alle Shapes dieses Postleitzahlengebietes</td>
+ </tr>
+ <tr>
+ <td>shape[i]</td>
+ <td>array</td>
+ <td>Ein Shape des Postleitzahlengebietes</td>
+ </tr>
+ <tr>
+ <td>shape[i][j]</td>
+ <td>array</td>
+ <td>Ein Punkt des Shapes</td>
+ </tr>
+ <tr>
+ <td>shape[i][j][lat]</td>
+ <td>array</td>
+ <td>Die Latitude des Punktes</td>
+ </tr>
+ <tr>
+ <td>shape[i][j][lon]</td>
+ <td>array</td>
+ <td>Die Longitude des Punktes</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div><div class="item" id="api-errors">
+ <h3>Fehlercode</h3>
+ <p>
+ Wenn der Ausgabeparameter <code>status</code> einen Fehler indiziert, werden alle weiteren Ausgabeparameter ersetzt durch die Parameter <code>code</code> und <code>msg</code>.
+ </p>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>code</td>
+ <td>int[3]</td>
+ <td>Fehlercode</td>
+ </tr>
+ <tr>
+ <td>msg</td>
+ <td>str</td>
+ <td>Fehlermeldung</td>
+ </tr>
+ <tr>
+ <td>result</td>
+ <td></td>
+ <td>Optionale weitere Daten</td>
+ </tr>
+ </tbody>
+ </table>
+ <h4>Fehlercodes</h4>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Code</td>
+ <td>Bedeutung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>900</td>
+ <td>Die aufgerufene Methode existiert nicht</td>
+ </tr>
+ <tr>
+ <td>901</td>
+ <td>Der API-Key ist ungültig</td>
+ </tr>
+ <tr>
+ <td>902</td>
+ <td>Fehler in externer API</td>
+ </tr>
+ <tr>
+ <td>903</td>
+ <td>Encoding-Problem: Ein Nicht-UTF-8-Zeichen hat den Parser gestoppt</td>
+ </tr>
+ <tr>
+ <td>904</td>
+ <td>Es wurden keine gültigen JSON-Daten im POST-Request gefunden</td>
+ </tr>
+ <tr>
+ <td>910</td>
+ <td>Ungültige Eingabemethode</td>
+ </tr>
+ <tr>
+ <td>911</td>
+ <td>Die eingegebenen Daten reichen nicht aus, um die Adresse zu bestimmen</td>
+ </tr>
+ <tr>
+ <td>912</td>
+ <td>Die Adresse wurde nicht gefunden</td>
+ </tr>
+ <tr>
+ <td>913</td>
+ <td>Für diese Adresse wurden keine Koordinaten gefunden</td>
+ </tr>
+ <tr>
+ <td>914</td>
+ <td>Die Koordinaten für diese Adresse sind nicht eindeutig</td>
+ </tr>
+ <tr>
+ <td>921</td>
+ <td>Ungültige Koordinaten</td>
+ </tr>
+ <tr>
+ <td>922</td>
+ <td>Keine Route gefunden</td>
+ </tr>
+ <tr>
+ <td>930</td>
+ <td>Keine Verbindung zum Gateway</td>
+ </tr>
+ <tr>
+ <td>931</td>
+ <td>Empfänger fehlerhaft</td>
+ </tr>
+ <tr>
+ <td>932</td>
+ <td>Absenderkennung zu lang</td>
+ </tr>
+ <tr>
+ <td>933</td>
+ <td>Nachrichtentext zu lang</td>
+ </tr>
+ <tr>
+ <td>934</td>
+ <td>Messagetyp nicht korrekt</td>
+ </tr>
+ <tr>
+ <td>935</td>
+ <td>Falscher SMS-Typ</td>
+ </tr>
+ <tr>
+ <td>936</td>
+ <td>Fehler bei Login</td>
+ </tr>
+ <tr>
+ <td>937</td>
+ <td>Guthaben zu gering</td>
+ </tr>
+ <tr>
+ <td>938</td>
+ <td>Netz wird von Route nicht unterstützt</td>
+ </tr>
+ <tr>
+ <td>939</td>
+ <td>Feature nicht über diese Route möglich</td>
+ </tr>
+ <tr>
+ <td>940</td>
+ <td>Ungültige BLZ</td>
+ </tr>
+ <tr>
+ <td>941</td>
+ <td>Ungültige Kontonummer</td>
+ </tr>
+ <tr>
+ <td>942</td>
+ <td>Ungültiges Land</td>
+ </tr>
+ <tr>
+ <td>945</td>
+ <td>Ungültiger Empfänger</td>
+ </tr>
+ <tr>
+ <td>946</td>
+ <td>Keine Nachricht angegeben</td>
+ </tr>
+ <tr>
+ <td>947</td>
+ <td>Der Empfänger ist nicht subskribiert</td>
+ </tr>
+ <tr>
+ <td>948</td>
+ <td>Der Empfänger hat den Dienst abgeschaltet</td>
+ </tr>
+ <tr>
+ <td>950</td>
+ <td>Die Postleitzahl ist ungültig.</td>
+ </tr>
+ <tr>
+ <td>951</td>
+ <td>Für diese Postleitzahl gibt es keine Shapes.</td>
+ </tr>
+ <tr>
+ <td>952</td>
+ <td>In diesem Bereich wurden keine Postleitzahlen gefunden.</td>
+ </tr>
+ <tr>
+ <td>953</td>
+ <td>Dieser Bereich enthält zu viele Postleitzahlen.</td>
+ </tr>
+ <tr>
+ <td>999</td>
+ <td>Unbekannter Fehler</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div id="foot-container">
+ <div id="foot">
+ <p>© 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/current.html Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:py="http://genshi.edgewall.org/">
+ <xi:include href="layout.tmpl" />
+ <head>
+ <title>API docs</title>
+ </head>
+ <body>
+ <title>API Dokumentation</title>
+ <div class="item">
+ <p>
+
+ </p>
+ <ol>
+ <li value="1">1. <a href="#api-intro">Einführung</a></li>
+ <li value="2">2.
+ <a href="#api-interfaces">Interfaces</a>
+ <ol>
+ <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+ </ol>
+ </li>
+ <li value="3">3.
+ <a href="#api-methods">Methoden</a>
+ <ol>
+ <li py:for="(key,method) in enumerate(methods)" value="3.${key+1}">3.${key+1} <a href="#method-${method.name}">${method.title}</a></li>
+ </ol>
+ </li>
+ </ol>
+ </div>
+ <div class="item" id="api-intro">
+ <h3>Einführung</h3>
+ <p>
+ Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
+ </p>
+ </div>
+ <div class="item" id="api-interfaces">
+ <h3>Interfaces</h3>
+ <p>
+ Die Iro API stellt zur Zeit nur ein Interfaces bereit.
+ </p>
+ <div class="item" id="interface-xmlrpc">
+ <h4>XML-RPC</h4>
+ <p>
+ Interface-URI: <code>https://<em><benutzer></em>:<em><passwort></em>@localhost:8000</code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird dabei im <code><methodName /></code> übergeben.
+ </p>
+ </div>
+ </div>
+ <div class="item" id="api-methods">
+ <h3>Methoden</h3>
+ <div py:for="method in methods" class="item" id="method-${method.name}">
+ <h4>${method.title}</h4>
+ <p><code>${method.name}</code></p>
+ <p py:content="method.description">
+ Diese Methode at bis jetzt noch keine Beschreibung.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr py:for="arg in method.args">
+ <td>${arg.name}</td>
+ <td>${arg.typ}</td>
+ <td>${arg.description}</td>
+ </tr>
+ </tbody>
+ </table>
+ <py:if test="method.rets">
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr py:for="arg in method.rets">
+ <td>${arg.name}</td>
+ <td>${arg.typ}</td>
+ <td>${arg.description}</td>
+ </tr>
+ </tbody>
+ </table>
+ </py:if>
+ </div>
+ </div>
+ </body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/impressum.html Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:py="http://genshi.edgewall.org/">
+ <xi:include href="layout.tmpl" />
+ <head>
+ <title>Impressum</title>
+ </head>
+ <body>
+ <title>Impressum</title>
+
+ <div class="item">
+ <h3>Kontakt</h3>
+ <p>
+ <strong>Netzguerilla.net</strong> Clerc Knauß Vollnhals GbR<br />
+ Manteuffelstraße 40<br />
+ 10997 Berlin
+ </p>
+ <p>
+ WWW: <a href="https://netzguerilla.net/">netzguerilla.net</a><br />
+ </p>
+ <p>
+ E-Mail: <a href="mailto:iro@netzguerilla.net">iro@netzguerilla.net</a><br />
+ </p>
+ <p>
+ Telefon: <a href="tel:+493069201075">+49 30 69201075</a><br />
+ </p>
+ <h3>Inhaltlich verantwortlich</h3>
+ <p>
+ <small>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV bzw. §5 TMG sowie beauftragt mit dem Jugendschutz gemäß TMG, JMStV sowie GjSM:</small><br />
+ <strong>Sandro Knauß</strong>, Anschrift wie oben, <a href="mailto:iro@netzguerilla.net">iro@netzguerilla.net</a>
+ </p>
+ </div>
+ </body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/index.html Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:py="http://genshi.edgewall.org/">
+ <xi:include href="layout.tmpl" />
+ <head>
+ <title>work in progress</title>
+ </head>
+ <body>
+ <title>Iro</title>
+ <div class="item">
+ <p>
+ Iro ist toll, ist aber noch nicht fertig.
+ </p>
+ </div>
+ </body>
+</html>
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/layout.tmpl Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:py="http://genshi.edgewall.org/" py:strip="">
+
+ <py:match path="head" once="true">
+ <head py:attrs="select('@*')">
+ <title py:with="title = list(select('title/text()'))">Iro <py:if test="title">· ${title}</py:if></title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta charset="utf-8" />
+ <meta name="description" content="" />
+ <meta name="keywords" content="" />
+ <link rel="shortcut icon" type="image/x-icon" href="images/favicon.png" />
+ <link rel="stylesheet" href="css/reset.css" type="text/css" media="screen" />
+ <link rel="stylesheet" href="css/960.css" type="text/css" media="screen" />
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />
+ <!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css" media="screen" /><![endif] -->
+ ${select('*[local-name()!="title"]')}
+ </head>
+ </py:match>
+
+ <py:match path="body" once="true">
+ <body py:attrs="select('@*')">
+ <div id="head-container">
+ <div id="head">
+ <h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+ <ul id="menu">
+ <li py:for="site in sites"><a href="${site.link}" class="menu" py:attrs="active(site)">${site.title}</a></li>
+ </ul>
+ </div>
+ </div>
+
+
+ <div id="content-container">
+ <div id="content" class="container_12">
+ <div id="main" class="grid_9">
+ <h2 py:with="title = list(select('title/text()'))"><py:if test="title">${title}</py:if></h2>
+ ${select('*[local-name()!="title"]')}
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+
+ <div id="foot-container">
+ <div id="foot">
+ <p>© 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+ </div>
+ </div>
+
+ </body>
+ </py:match>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/layout.tmpl.bak Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <head>
+ <title>Geddit</title>
+ </head>
+ <body class="index">
+ <div id="header">
+ <h1>Geddit</h1>
+ </div>
+ <p>Welcome!</p>
+ <div id="footer">
+ <p class="legalese">© 2007 Edgewall Software</p>
+ </div>
+ </body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/new.html Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,1015 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:py="http://genshi.edgewall.org/">
+ <xi:include href="layout.tmpl" />
+ <head>
+ <title>api docs new</title>
+ </head>
+ <body>
+ <title>geplante API Dokumentation</title>
+ <div class="item">
+ <p>
+
+ </p>
+ <ol>
+ <li value="1">1. <a href="#api-intro">Einführung</a></li>
+ <li value="2">2.
+ <a href="#api-interfaces">Interfaces</a>
+ <ol>
+ <li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+ <li value="2.2">2.2 <a href="#interface-xml">XML</a></li>
+ <li value="2.3">2.3 <a href="#interface-json">JSON</a></li>
+ <li value="2.4">2.4 <a href="#interface-jsonp">JSONP</a></li>
+ <li value="2.5">2.5 <a href="#interface-php">PHP</a></li>
+ </ol>
+ </li>
+ <li value="3">3.
+ <a href="#api-methods">Methoden</a>
+ <ol>
+ <li value="3.1">3.1 <a href="#method-route">Route</a></li>
+ <li value="3.2">3.2 <a href="#method-dist">Dist</a></li>
+ <li value="3.3">3.3 <a href="#method-geocode">Geocode</a></li>
+ <li value="3.4">3.4 <a href="#method-sms">SMS</a></li>
+ <li value="3.5">3.5 <a href="#method-bank">Bank</a></li>
+ <li value="3.6">3.6 <a href="#method-bank">Boxcar</a></li>
+ <li value="3.7">3.7 <a href="#method-postcode-match">Postcode-Match</a></li>
+ <li value="3.8">3.8 <a href="#method-postcode-shape">Postcode-Shape</a></li>
+ </ol>
+ </li>
+ <li value="4">4. <a href="#api-errors">Fehlermeldungen</a></li>
+ </ol>
+ </div>
+ <div class="item" id="api-intro">
+ <h3>Einführung</h3>
+ <p>
+ Die Mesngr API enthält viele Funktionen, die von Fahrradkurierdiensten benötigt werden.
+ </p>
+ </div>
+ <div class="item" id="api-interfaces">
+ <h3>Interfaces</h3>
+ <p>
+ Die Mesngr API stellt verschiedene Interfaces bereit, die unterschiedlich angesprochen werden, aber das selbe tun.
+ </p>
+ <div class="item" id="interface-xmlrpc">
+ <h4>XML-RPC</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/xmlrpc</code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird dabei im <code><methodName /></code> übergeben.
+ </p>
+ <p>
+ Das XML-RPC Interface nimmt die Parameter der aufgerufenen Methode als <code><struct /></code> inerhalb des ersten <code><param /></code> entgegen, alle weiteren <code><param /></code>s werden ignoriert.
+ </p>
+ <p>
+ Zeichen außerhalb des ASCII-Sets sind als HTML Entities zu übergeben.
+ </p>
+ </div>
+ <div class="item" id="interface-xml">
+ <h4>XML</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/xml/<em><methode></em></code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+ </p>
+ <p>
+ Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+ </p>
+ <p>
+ Die Ausgabe erfolgt als XML Markup.
+ </p>
+ </div>
+ <div class="item" id="interface-json">
+ <h4>JSON</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/json/<em><methode></em></code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+ </p>
+ <p>
+ Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> oder JSON-Objekt übergeben werden.
+ </p>
+ <p>
+ Die Ausgabe erfolgt als JSON-Objekt.
+ </p>
+ </div>
+ <div class="item" id="interface-json">
+ <h4>JSONP</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/jsonp/<em><methode></em>?callback=<callback></code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+ </p>
+ <p>
+ Der Name für die Callback-Methode wird als Parameter Callback übergeben.
+ </p>
+ <p>
+ Parameter können via HTTP per GET im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+ </p>
+ <p>
+ Die Ausgabe erfolgt als Javascript-Funktionsaufruf mit einem JSON-Objekt als Parameter.
+ </p>
+ </div>
+ <div class="item" id="interface-php">
+ <h4>PHP</h4>
+ <p>
+ Interface-URI: <code>http://api.mesngr.de/php/<em><methode></em></code>
+ </p>
+ <p>
+ Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+ </p>
+ <p>
+ Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+ </p>
+ <p>
+ Die Ausgabe erfolgt als serialisiertes PHP-Objekt.
+ </p>
+ </div>
+ </div>
+ <div class="item" id="api-methods">
+ <h3>Methoden</h3>
+ <div class="item" id="method-route">
+ <h4>Route</h4>
+ <p><code>route</code></p>
+ <p>
+ Diese Methode ermittelt die Routing-Entfernung zwischen zwei Koordinaten.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>enum[car,bicycle,foot]</td>
+ <td>Die gewünschte Routing-Methode</td>
+ </tr>
+ <tr>
+ <td>flon</td>
+ <td>float</td>
+ <td>Der Längengrad des Startpunktes</td>
+ </tr>
+ <tr>
+ <td>flat</td>
+ <td>float</td>
+ <td>Der Breitengrad des Startpunktes</td>
+ </tr>
+ <tr>
+ <td>tlon</td>
+ <td>float</td>
+ <td>Der Längengrad des Zielpunktes</td>
+ </tr>
+ <tr>
+ <td>tlat</td>
+ <td>float</td>
+ <td>Der Breitengrad des Zielpunktes</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>distance</td>
+ <td>float</td>
+ <td>Die ermittelte Routing-Distanz in km</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-dist">
+ <h4>Dist</h4>
+ <p><code>dist</code></p>
+ <p>
+ Diese Methode ermittelt die direkte Entfernung zwischen zwei Koordinaten.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>flon</td>
+ <td>float</td>
+ <td>Der Längengrad des Startpunktes</td>
+ </tr>
+ <tr>
+ <td>flat</td>
+ <td>float</td>
+ <td>Der Breitengrad des Startpunktes</td>
+ </tr>
+ <tr>
+ <td>tlon</td>
+ <td>float</td>
+ <td>Der Längengrad des Zielpunktes</td>
+ </tr>
+ <tr>
+ <td>tlat</td>
+ <td>float</td>
+ <td>Der Breitengrad des Zielpunktes</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>distance</td>
+ <td>float</td>
+ <td>Die ermittelte Routing-Distanz in km</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-geocode">
+ <h4>Geocode</h4>
+ <p><code>geocode</code></p>
+ <p>
+ Ermittelt die Koordinaten zu einer Adresse. Diese Methode ist Kostenpflichtig.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>type</td>
+ <td>enum[fast, complete]</td>
+ <td>Die Eingabemethode. Im Modus <em>fast</em> wird der Parameter <code>number</code> an den Parameter <code>street</code> angehängt sowie der Parameter <code>postcode</code> vor den Parameter <code>city</code>; Die Parameter <code>postcode</code> und <code>number</code> werden dann ignoriert.</td>
+ </tr>
+ <tr>
+ <td>street</td>
+ <td>str</td>
+ <td>Der Straßenname der Adresse</td>
+ </tr>
+ <tr>
+ <td>number</td>
+ <td>str</td>
+ <td>Die Hausnummer der Adresse</td>
+ </tr>
+ <tr>
+ <td>postcode</td>
+ <td>str</td>
+ <td>Die Postleitzahl der Adresse</td>
+ </tr>
+ <tr>
+ <td>city</td>
+ <td>str</td>
+ <td>Die Stadt der Adresse</td>
+ </tr>
+ <tr>
+ <td>country</td>
+ <td>str</td>
+ <td>Das Land der Adresse, ISO 3166</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>stage</td>
+ <td>enum[1,2,3]</td>
+ <td>
+ Grad des Erfolges des Geocodings:<br />
+ 1 → Es stehen mehrere mögliche Adressen zur Auswahl.<br />
+ 2 → Eine mögliche Adresse als Korrekturvorschlag.<br />
+ 3 → Die Adresse konnte verifiziert und zugehörige Geokoordinaten ermittelt werden.
+ </td>
+ </tr>
+ <tr>
+ <td>data</td>
+ <td>array</td>
+ <td>
+ Die ermittelten Adressdaten
+ </td>
+ </tr>
+ <tr>
+ <td>data[i]</td>
+ <td>array</td>
+ <td>
+ Ein ermittelter Adressdatensatz
+ </td>
+ </tr>
+ <tr>
+ <td>data[i][street]</td>
+ <td>str</td>
+ <td>Name der Straße</td>
+ </tr>
+ <tr>
+ <td>data[i][nr]</td>
+ <td>str</td>
+ <td>Hausnummer</td>
+ </tr>
+ <tr>
+ <td>data[i][fragment]</td>
+ <td>str</td>
+ <td>Hausnummernzusatz (z.B. <em>a</em> bei <em>12a</em>)</td>
+ </tr>
+ <tr>
+ <td>data[i][postcode]</td>
+ <td>str</td>
+ <td>Postleitzahl</td>
+ </tr>
+ <tr>
+ <td>data[i][city]</td>
+ <td>str</td>
+ <td>Ort</td>
+ </tr>
+ <tr>
+ <td>data[i][country]</td>
+ <td>str[2]</td>
+ <td>Land (gemäß ISO 3166)</td>
+ </tr>
+ <tr>
+ <td>data[i][accuracy]</td>
+ <td>int</td>
+ <td>Genauigkeit (Genau > Ungenau)</td>
+ </tr>
+ <tr>
+ <td>data[i][lat]</td>
+ <td>float</td>
+ <td>Breitengrad</td>
+ </tr>
+ <tr>
+ <td>data[i][lon]</td>
+ <td>float</td>
+ <td>Längengrad</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-sms">
+ <h4>SMS</h4>
+ <p><code>sms</code></p>
+ <p>
+ Versendet eine SMS-Nachricht. Diese Methode ist kostenpflichtig.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>from</td>
+ <td>str[11]|tel[16]</td>
+ <td>Der gewünschte Absender (optional)</td>
+ </tr>
+ <tr>
+ <td>to</td>
+ <td>tel[15]</td>
+ <td>Emfänger-Nummer (gemäß ITU-T E.123)</td>
+ </tr>
+ <tr>
+ <td>ref</td>
+ <td>str</td>
+ <td>Referenz für Antworten</td>
+ </tr>
+ <tr>
+ <td>callback</td>
+ <td>str</td>
+ <td>Callback-URL für SMS-Antworten. Noch nicht implementiert.</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-bank">
+ <h4>Bank</h4>
+ <p><code>bank</code></p>
+ <p>
+ Prüft Bankdaten auf Plausibilität.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>country</td>
+ <td>[de]</td>
+ <td>Das Land des Bankdatenformates</td>
+ </tr>
+ <tr>
+ <td>bank</td>
+ <td>int[8]</td>
+ <td>Die Bankleitzahl</td>
+ </tr>
+ <tr>
+ <td>account</td>
+ <td>int[10]</td>
+ <td>Die Kontonummer (optional)</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>bank</td>
+ <td>array</td>
+ <td>Der Bankdatensatz</td>
+ </tr>
+ <tr>
+ <td>bank[id]</td>
+ <td>int[8]</td>
+ <td>Die Bankleitzahl</td>
+ </tr>
+ <tr>
+ <td>bank[name]</td>
+ <td>str</td>
+ <td>Name der Bank</td>
+ </tr>
+ <tr>
+ <td>bank[city]</td>
+ <td>str</td>
+ <td>Stadt</td>
+ </tr>
+ <tr>
+ <td>bank[bic]</td>
+ <td>str</td>
+ <td>Der BIC der Bank</td>
+ </tr>
+ <tr>
+ <td>account</td>
+ <td>array</td>
+ <td>Der Kontodatensatz</td>
+ </tr>
+ <tr>
+ <td>account[id]</td>
+ <td>int[10]</td>
+ <td>Die Kontonummer</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-bank">
+ <h4>Boxcar</h4>
+ <p><code>boxcar</code></p>
+ <p>
+ Sendet eine Push-Notification via Boxcar. Ist der Boxcar-user nicht subskribiert, wird statt der Nachricht eine Subskriptions-Anfrage gesendet.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>to</td>
+ <td>str</td>
+ <td>E-Mail-Adresse des Boxcar-Accounts</td>
+ </tr>
+ <tr>
+ <td>from</td>
+ <td>str</td>
+ <td>Absender</td>
+ </tr>
+ <tr>
+ <td>message</td>
+ <td>str</td>
+ <td>Die Nachricht</td>
+ </tr>
+ <tr>
+ <td>url</td>
+ <td>str</td>
+ <td>Die URL die aufgerufen werden soll</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-postcode-match">
+ <h4>Postcode-Match</h4>
+ <p><code>postcodematch</code></p>
+ <p>
+ Liefert die Schwerpunkt-Koordinaten aller Postleizahlengebiete innerhalb eines Bereiches.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>bbox_n</td>
+ <td>float</td>
+ <td>Maximale Latitude</td>
+ </tr>
+ <tr>
+ <td>bbox_s</td>
+ <td>float</td>
+ <td>Minimale Latitude</td>
+ </tr>
+ <tr>
+ <td>bbox_e</td>
+ <td>float</td>
+ <td>Maximale Longitude</td>
+ </tr>
+ <tr>
+ <td>bbox_w</td>
+ <td>float</td>
+ <td>Minimale Longitude</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>postcodes</td>
+ <td>array</td>
+ <td>Ergebnisse</td>
+ </tr>
+ <tr>
+ <td>postcodes[i]</td>
+ <td>array</td>
+ <td>Ergebnis</td>
+ </tr>
+ <tr>
+ <td>postcodes[i][postcode]</td>
+ <td>str</td>
+ <td>Postleitzahl</td>
+ </tr>
+ <tr>
+ <td>postcodes[i][lat]</td>
+ <td>float</td>
+ <td>Latitude des Schwerpunktes</td>
+ </tr>
+ <tr>
+ <td>postcodes[i][lon]</td>
+ <td>float</td>
+ <td>Longitude des Schwerpunktes</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="item" id="method-postcode-shape">
+ <h4>Postcode-Shape</h4>
+ <p><code>postcodeshape</code></p>
+ <p>
+ Gibt eine Näherung an die geografische Definition eines Postleitzahlengebietes aus.
+ </p>
+ <h5>Parameter</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>apikey</td>
+ <td>str[20]</td>
+ <td>Der API Key</td>
+ </tr>
+ <tr>
+ <td>postcode</td>
+ <td>str</td>
+ <td>Die Postleitzahl des Gebietes</td>
+ </tr>
+ </tbody>
+ </table>
+ <h5>Ausgabe</h5>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>postcode</td>
+ <td>str</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>center</td>
+ <td>array</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>center[lat]</td>
+ <td>flaot</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>center[lon]</td>
+ <td>flaot</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox</td>
+ <td>array</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox[n]</td>
+ <td>float</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox[s]</td>
+ <td>float</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox[w]</td>
+ <td>float</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>bbox[e]</td>
+ <td>float</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>shape</td>
+ <td>array</td>
+ <td>Alle Shapes dieses Postleitzahlengebietes</td>
+ </tr>
+ <tr>
+ <td>shape[i]</td>
+ <td>array</td>
+ <td>Ein Shape des Postleitzahlengebietes</td>
+ </tr>
+ <tr>
+ <td>shape[i][j]</td>
+ <td>array</td>
+ <td>Ein Punkt des Shapes</td>
+ </tr>
+ <tr>
+ <td>shape[i][j][lat]</td>
+ <td>array</td>
+ <td>Die Latitude des Punktes</td>
+ </tr>
+ <tr>
+ <td>shape[i][j][lon]</td>
+ <td>array</td>
+ <td>Die Longitude des Punktes</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="item" id="api-errors">
+ <h3>Fehlercode</h3>
+ <p>
+ Wenn der Ausgabeparameter <code>status</code> einen Fehler indiziert, werden alle weiteren Ausgabeparameter ersetzt durch die Parameter <code>code</code> und <code>msg</code>.
+ </p>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Parameter</td>
+ <td>Typ</td>
+ <td>Beschreibung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>status</td>
+ <td>bool</td>
+ <td>Fehlerindikator</td>
+ </tr>
+ <tr>
+ <td>code</td>
+ <td>int[3]</td>
+ <td>Fehlercode</td>
+ </tr>
+ <tr>
+ <td>msg</td>
+ <td>str</td>
+ <td>Fehlermeldung</td>
+ </tr>
+ <tr>
+ <td>result</td>
+ <td></td>
+ <td>Optionale weitere Daten</td>
+ </tr>
+ </tbody>
+ </table>
+ <h4>Fehlercodes</h4>
+ <table class="docs">
+ <thead>
+ <tr>
+ <td>Code</td>
+ <td>Bedeutung</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>900</td>
+ <td>Die aufgerufene Methode existiert nicht</td>
+ </tr>
+ <tr>
+ <td>901</td>
+ <td>Der API-Key ist ungültig</td>
+ </tr>
+ <tr>
+ <td>902</td>
+ <td>Fehler in externer API</td>
+ </tr>
+ <tr>
+ <td>903</td>
+ <td>Encoding-Problem: Ein Nicht-UTF-8-Zeichen hat den Parser gestoppt</td>
+ </tr>
+ <tr>
+ <td>904</td>
+ <td>Es wurden keine gültigen JSON-Daten im POST-Request gefunden</td>
+ </tr>
+ <tr>
+ <td>910</td>
+ <td>Ungültige Eingabemethode</td>
+ </tr>
+ <tr>
+ <td>911</td>
+ <td>Die eingegebenen Daten reichen nicht aus, um die Adresse zu bestimmen</td>
+ </tr>
+ <tr>
+ <td>912</td>
+ <td>Die Adresse wurde nicht gefunden</td>
+ </tr>
+ <tr>
+ <td>913</td>
+ <td>Für diese Adresse wurden keine Koordinaten gefunden</td>
+ </tr>
+ <tr>
+ <td>914</td>
+ <td>Die Koordinaten für diese Adresse sind nicht eindeutig</td>
+ </tr>
+ <tr>
+ <td>921</td>
+ <td>Ungültige Koordinaten</td>
+ </tr>
+ <tr>
+ <td>922</td>
+ <td>Keine Route gefunden</td>
+ </tr>
+ <tr>
+ <td>930</td>
+ <td>Keine Verbindung zum Gateway</td>
+ </tr>
+ <tr>
+ <td>931</td>
+ <td>Empfänger fehlerhaft</td>
+ </tr>
+ <tr>
+ <td>932</td>
+ <td>Absenderkennung zu lang</td>
+ </tr>
+ <tr>
+ <td>933</td>
+ <td>Nachrichtentext zu lang</td>
+ </tr>
+ <tr>
+ <td>934</td>
+ <td>Messagetyp nicht korrekt</td>
+ </tr>
+ <tr>
+ <td>935</td>
+ <td>Falscher SMS-Typ</td>
+ </tr>
+ <tr>
+ <td>936</td>
+ <td>Fehler bei Login</td>
+ </tr>
+ <tr>
+ <td>937</td>
+ <td>Guthaben zu gering</td>
+ </tr>
+ <tr>
+ <td>938</td>
+ <td>Netz wird von Route nicht unterstützt</td>
+ </tr>
+ <tr>
+ <td>939</td>
+ <td>Feature nicht über diese Route möglich</td>
+ </tr>
+ <tr>
+ <td>940</td>
+ <td>Ungültige BLZ</td>
+ </tr>
+ <tr>
+ <td>941</td>
+ <td>Ungültige Kontonummer</td>
+ </tr>
+ <tr>
+ <td>942</td>
+ <td>Ungültiges Land</td>
+ </tr>
+ <tr>
+ <td>945</td>
+ <td>Ungültiger Empfänger</td>
+ </tr>
+ <tr>
+ <td>946</td>
+ <td>Keine Nachricht angegeben</td>
+ </tr>
+ <tr>
+ <td>947</td>
+ <td>Der Empfänger ist nicht subskribiert</td>
+ </tr>
+ <tr>
+ <td>948</td>
+ <td>Der Empfänger hat den Dienst abgeschaltet</td>
+ </tr>
+ <tr>
+ <td>950</td>
+ <td>Die Postleitzahl ist ungültig.</td>
+ </tr>
+ <tr>
+ <td>951</td>
+ <td>Für diese Postleitzahl gibt es keine Shapes.</td>
+ </tr>
+ <tr>
+ <td>952</td>
+ <td>In diesem Bereich wurden keine Postleitzahlen gefunden.</td>
+ </tr>
+ <tr>
+ <td>953</td>
+ <td>Dieser Bereich enthält zu viele Postleitzahlen.</td>
+ </tr>
+
+ <tr>
+ <td>999</td>
+ <td>Unbekannter Fehler</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </body>
+</html>