forked from rDrama/rDrama
Merge branch 'docs' into 'master'
commit
e1f785c370
|
@ -0,0 +1,241 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<wadl:application xmlns="http://docbook.org/ns/docbook"
|
||||||
|
xmlns:wadl="http://wadl.dev.java.net/2009/02"
|
||||||
|
xmlns:rax="http://docs.rackspace.com/api"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Want to read this? Lololol fuck you :3
|
||||||
|
|
||||||
|
Written in a deprecated format due to it's verbosity and
|
||||||
|
easy porting to OpenAPI's Swagger, which supports nice
|
||||||
|
frontends.
|
||||||
|
|
||||||
|
View it at /dev/api
|
||||||
|
-->
|
||||||
|
<resources xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||||
|
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
|
||||||
|
xmlns:dbaas="http://docs.openstack.org/database/api/v1.0"
|
||||||
|
xmlns="http://wadl.dev.java.net/2009/02"
|
||||||
|
base="http://docs.openstack.org/database/api/v1.0"
|
||||||
|
xml:id="rdrama">
|
||||||
|
<!-- ################################################## -->
|
||||||
|
<resource path="/submit"> <!-- INCOMPLETE -->
|
||||||
|
<method name="POST">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook"
|
||||||
|
xml:lang="EN"
|
||||||
|
title="Create post">
|
||||||
|
<para role="shortdesc">
|
||||||
|
Submits a post.
|
||||||
|
</para>
|
||||||
|
</wadl:doc>
|
||||||
|
<request>
|
||||||
|
<param required="true"
|
||||||
|
name="title"
|
||||||
|
style="plain"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook"
|
||||||
|
xml:lang="EN">
|
||||||
|
<para>The posts title. :emojis: will be parsed as well. Plaintext. No markdown.</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<param required="false"
|
||||||
|
name="url"
|
||||||
|
style="plain"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>Post URL. Be wary of duplicates.</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<param required="true"
|
||||||
|
name="body"
|
||||||
|
style="markdown"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>The post in markdown.</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<!-- TODO a fuck ton more -->
|
||||||
|
</request>
|
||||||
|
<response status="200">
|
||||||
|
<param required="false"
|
||||||
|
name="body"
|
||||||
|
style="html"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>The post you were looking for.</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<!-- Example -->
|
||||||
|
<representation mediaType="application/json">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<xsdxt:code xmlns:db="http://docbook.org/ns/docbook">
|
||||||
|
<programlisting language="javascript">{
|
||||||
|
"our": "example, here",
|
||||||
|
"our": "example, here"
|
||||||
|
}</programlisting>
|
||||||
|
</xsdxt:code>
|
||||||
|
</wadl:doc>
|
||||||
|
</representation>
|
||||||
|
</response>
|
||||||
|
<response status="400">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>Not found</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</response>
|
||||||
|
</method>
|
||||||
|
</resource>
|
||||||
|
|
||||||
|
<!-- ################################################## -->
|
||||||
|
|
||||||
|
<resource path="/@{username}/message"> <!-- INCOMPLETE -->
|
||||||
|
<method name="POST">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook"
|
||||||
|
xml:lang="EN"
|
||||||
|
title="Create post">
|
||||||
|
<para role="shortdesc">
|
||||||
|
Sends a user a message
|
||||||
|
</para>
|
||||||
|
</wadl:doc>
|
||||||
|
<request>
|
||||||
|
<param required="true"
|
||||||
|
name="username"
|
||||||
|
style="url"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>User URL</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<param required="true"
|
||||||
|
name="data"
|
||||||
|
style="markdown"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>Message data to the user.</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<!-- TODO a fuck ton more -->
|
||||||
|
</request>
|
||||||
|
<response status="200">
|
||||||
|
<!-- <param required="false" -->
|
||||||
|
<!-- name="body" -->
|
||||||
|
<!-- style="html" -->
|
||||||
|
<!-- type="xsd:string"> -->
|
||||||
|
<!-- <wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN"> -->
|
||||||
|
<!-- <para></para> -->
|
||||||
|
<!-- </wadl:doc> -->
|
||||||
|
<!-- </param> -->
|
||||||
|
<!-- Example -->
|
||||||
|
<representation mediaType="application/json">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<xsdxt:code xmlns:db="http://docbook.org/ns/docbook">
|
||||||
|
<programlisting language="javascript">{
|
||||||
|
}</programlisting>
|
||||||
|
</xsdxt:code>
|
||||||
|
</wadl:doc>
|
||||||
|
</representation>
|
||||||
|
</response>
|
||||||
|
<response status="400">
|
||||||
|
<representation mediaType="application/xml" element="csapi:badRequest"/>
|
||||||
|
<representation mediaType="application/json"/>
|
||||||
|
</response>
|
||||||
|
</method>
|
||||||
|
</resource>
|
||||||
|
|
||||||
|
<!-- ################################################## -->
|
||||||
|
|
||||||
|
<resource path="/comment"> <!-- INCOMPLETE -->
|
||||||
|
<method name="POST">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook"
|
||||||
|
xml:lang="EN"
|
||||||
|
title="Create post">
|
||||||
|
<para role="shortdesc">
|
||||||
|
Creates a comment on a post, or replies to a comment
|
||||||
|
</para>
|
||||||
|
</wadl:doc>
|
||||||
|
<request>
|
||||||
|
<param required="true"
|
||||||
|
name="parent_fullname"
|
||||||
|
style="plain"
|
||||||
|
type="xsd:url">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>ID of the parent post. Starts with <code>p_</code> for a parent submission, and <code>c_</code> for a comment submission. Anything else will emit a 400.</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<param required="true"
|
||||||
|
name="submission"
|
||||||
|
style="plain"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>Parent submission (the id, right?)</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<param required="true"
|
||||||
|
name="body"
|
||||||
|
style="markdown"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>Your messages content</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<param required="true"
|
||||||
|
name="submission"
|
||||||
|
style="plain"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>Parent submission (the id, right?)</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<param required="true"
|
||||||
|
name="over_18"
|
||||||
|
style="plain"
|
||||||
|
type="xsd:boolean">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>If this post is marked as sensitive.</para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<!-- TODO a fuck ton more -->
|
||||||
|
</request>
|
||||||
|
<!-- SUCCESS -->
|
||||||
|
<response status="200">
|
||||||
|
<param required="false"
|
||||||
|
name="body"
|
||||||
|
style="html"
|
||||||
|
type="xsd:string">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para></para>
|
||||||
|
</wadl:doc>
|
||||||
|
</param>
|
||||||
|
<!-- Example -->
|
||||||
|
<representation mediaType="application/json">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<xsdxt:code xmlns:db="http://docbook.org/ns/docbook">
|
||||||
|
<programlisting language="javascript">{
|
||||||
|
}</programlisting>
|
||||||
|
</xsdxt:code>
|
||||||
|
</wadl:doc>
|
||||||
|
</representation>
|
||||||
|
</response>
|
||||||
|
<!-- ERRORS -->
|
||||||
|
<response status="400">
|
||||||
|
<representation mediaType="application/xml" element="csapi:badRequest"/>
|
||||||
|
<representation mediaType="application/json"/>
|
||||||
|
</response>
|
||||||
|
<response status="403">
|
||||||
|
<wadl:doc xmlns="http://docbook.org/ns/docbook" xml:lang="EN">
|
||||||
|
<para>User is exiled from the hole, or needs extra permissions.</para>
|
||||||
|
<para>User is banned and needs to do better.</para>
|
||||||
|
</wadl:doc>
|
||||||
|
<representation mediaType="application/xml" element="csapi:badRequest"/>
|
||||||
|
<representation mediaType="application/json"/>
|
||||||
|
</response>
|
||||||
|
</method>
|
||||||
|
</resource>
|
||||||
|
|
||||||
|
<!-- ################################################## -->
|
||||||
|
|
||||||
|
|
||||||
|
</resources>
|
||||||
|
</wadl:application>
|
|
@ -6406,3 +6406,43 @@ div.markdown {
|
||||||
.modlog-action:not(:first-of-type) {
|
.modlog-action:not(:first-of-type) {
|
||||||
border-top: 1px solid var(--gray-400) !important;
|
border-top: 1px solid var(--gray-400) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Documentation elements */
|
||||||
|
#docs-page .docs-path {
|
||||||
|
font-size: 1.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#docs-page .docs-request {
|
||||||
|
background-color: var(--primary);
|
||||||
|
padding: 3px 8px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#docs-page .docs-response {
|
||||||
|
background-color: var(--secondary);
|
||||||
|
padding: 3px 8px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#docs-page .doc-snippet {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#docs-page .doc-snippet table {
|
||||||
|
border: 1px solid var(--secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
#docs-page .doc-snippet table p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#docs-page .doc-snippet table tr th {
|
||||||
|
color: #aaa;
|
||||||
|
border-bottom: 1px solid var(--secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
#docs-page .doc-snippet table tr td,
|
||||||
|
#docs-page .doc-snippet table tr th {
|
||||||
|
padding: 4px 8px;
|
||||||
|
border-right: 1px solid var(--secondary);
|
||||||
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ from files.routes.jinja2 import *
|
||||||
from .admin import *
|
from .admin import *
|
||||||
from .comments import *
|
from .comments import *
|
||||||
from .errors import *
|
from .errors import *
|
||||||
|
from .docs import *
|
||||||
from .reporting import *
|
from .reporting import *
|
||||||
from .front import *
|
from .front import *
|
||||||
from .login import *
|
from .login import *
|
||||||
|
|
|
@ -79,6 +79,7 @@ def post_pid_comment_cid(cid, pid=None, anything=None, v=None, sub=None):
|
||||||
else: template = "submission.html"
|
else: template = "submission.html"
|
||||||
return render_template(template, v=v, p=post, sort=sort, comment_info=comment_info, render_replies=True, sub=post.subr)
|
return render_template(template, v=v, p=post, sort=sort, comment_info=comment_info, render_replies=True, sub=post.subr)
|
||||||
|
|
||||||
|
#- API
|
||||||
@app.post("/comment")
|
@app.post("/comment")
|
||||||
@limiter.limit("1/second;20/minute;200/hour;1000/day")
|
@limiter.limit("1/second;20/minute;200/hour;1000/day")
|
||||||
@auth_required
|
@auth_required
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
import xml
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
from files.__main__ import app, cache, limiter
|
||||||
|
|
||||||
|
tree = ET.parse('docs/api.xml')
|
||||||
|
|
||||||
|
@app.get("/dev/api")
|
||||||
|
@auth_desired
|
||||||
|
def get_docs_page():
|
||||||
|
# TODO cache
|
||||||
|
root = tree.getroot()
|
||||||
|
|
||||||
|
return render_template("docs.html", root=tree.getroot())
|
|
@ -0,0 +1,81 @@
|
||||||
|
{% extends "default.html" %}
|
||||||
|
|
||||||
|
{#% Some macros %#}
|
||||||
|
{% macro docbook_read(info) -%}
|
||||||
|
{% for p in info -%}
|
||||||
|
{#% Lazy hack, not """conforming""" to docbook %#}
|
||||||
|
<p>
|
||||||
|
{{- p.text -}}
|
||||||
|
</p>
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endmacro %}
|
||||||
|
|
||||||
|
{%- macro param_table(info) -%}
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Param</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Type</th>
|
||||||
|
<th>Format</th>
|
||||||
|
<th>Required</th>
|
||||||
|
</tr>
|
||||||
|
{% for param in info %}
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><b>{{ param.attrib.name }}</b></td>
|
||||||
|
<td>{{- docbook_read(param[0]) -}}</td>
|
||||||
|
<td><i>{{ param.attrib.type }}</i></td>
|
||||||
|
<td>{{ param.attrib.style }}</td>
|
||||||
|
<td>{{ param.attrib.required }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
{%- endmacro -%}
|
||||||
|
|
||||||
|
{% block pagetitle %}Documentation{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<div id="docs-page">
|
||||||
|
<h1>rDrama REST Api Documentaion</h1>
|
||||||
|
|
||||||
|
<p><em class="text-warning">Warning: This documentation is SHIT, so get
|
||||||
|
used to it</em></p>
|
||||||
|
|
||||||
|
<p>You're probably here because you want to create your own application
|
||||||
|
which calls our REST api. Some of the stuff you see here might seem
|
||||||
|
ugly (it is), but it's mainly inherited from the old Ruqqus API.</p>
|
||||||
|
|
||||||
|
<p><em class="text-info">This documentation is generated from an XML WADL file.</em></p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
{% for res in root[0] %}
|
||||||
|
<div class="doc-snippet">
|
||||||
|
{#% There's usually only one method, but this is more correct %#}
|
||||||
|
{% for method in res %}
|
||||||
|
<h1 class="docs-path">
|
||||||
|
<span class="docs-request">
|
||||||
|
{{- method.attrib.name -}}
|
||||||
|
</span>
|
||||||
|
{{ res.attrib.path }}
|
||||||
|
</h1>
|
||||||
|
{% for info in method %}
|
||||||
|
{% if info.tag == "{http://wadl.dev.java.net/2009/02}doc" %}
|
||||||
|
{{ docbook_read(info) }}
|
||||||
|
{% elif info.tag == "{http://wadl.dev.java.net/2009/02}request" %}
|
||||||
|
{{ param_table(info) }}
|
||||||
|
{% elif info.tag == "{http://wadl.dev.java.net/2009/02}response" %}
|
||||||
|
<h4>Response <span class="docs-response">{{ info.attrib.status }}</span></h4>
|
||||||
|
{% for response_child in info %}
|
||||||
|
{% if response_child.tag == "{http://wadl.dev.java.net/2009/02}param" %}
|
||||||
|
{{ param_table(info) }}
|
||||||
|
{% elif response_child.tag == "{http://wadl.dev.java.net/2009/02}doc" %}
|
||||||
|
{{ docbook_read(response_child) }}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue