Files
post-grachelor-web/api.php
2017-04-27 19:10:06 +02:00

259 lines
9.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<head><base href='file://D%3A%5CownCloud%5CDocuments%5CProgrammierung%5CJava%20-%20Android%20Studio%5CPostGrachelor%5Cdocs/'/></head><h1>PHP Application Programming Interface</h1>
<p>All value and foreign checks are done on server side. On error the response javascript must match the following structure. The HTTP status code should match the <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes">standards</a>.</p>
<div class="highlight highlight-source-js"><pre>{
meta<span class="pl-k">:</span> {
status<span class="pl-k">:</span> <span class="pl-c1">125462</span>,
message<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>Error message here.<span class="pl-pds">"</span></span>
},
data<span class="pl-k">:</span> {
}
}</pre></div>
<p>The basic stucture of an successful request contains the status code <code>0</code> and the success message <code>"Success"</code>. The HTTP status code must be <code>200 OK</code>.</p>
<div class="highlight highlight-source-js"><pre>{
meta<span class="pl-k">:</span> {
status<span class="pl-k">:</span> <span class="pl-c1">0</span>,
message<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>Success<span class="pl-pds">"</span></span>
},
data<span class="pl-k">:</span> {
}
}</pre></div>
<h2>User Management</h2>
<h3>Registration</h3>
<p>Base URI: <code>/register.php</code></p>
<h4>Parameters</h4>
<pre><code>- `name`
- Unique user name chosen by user
- Must match regex ^[a-zA-Z0-9 ]{6,20}$
</code></pre>
<h4>Response</h4>
<h5>Errors</h5>
<table>
<thead>
<tr>
<th>HTTP status codes</th>
<th>Meta status code</th>
<th>Meta message</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr></tbody></table>
<h5>Success data object</h5>
<div class="highlight highlight-source-js"><pre>{
name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>User chosen name<span class="pl-pds">"</span></span>,
uid<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>fsdff3q4fFWEFFDSFfewf3rwSDF<span class="pl-pds">"</span></span>
}</pre></div>
<h3>User name changing</h3>
<p>Base URI: <code>/rename.php</code></p>
<h4>Parameters</h4>
<pre><code>- `name`
- New unique user name chosen by user
- Must match regex ^[a-zA-Z0-9 ]{6,20}$
- `uid`
- User identifier string given within the registration proccess
</code></pre>
<h4>Response</h4>
<h5>Errors</h5>
<table>
<thead>
<tr>
<th>HTTP status codes</th>
<th>Meta status code</th>
<th>Meta message</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr></tbody></table>
<h5>Success data object</h5>
<div class="highlight highlight-source-js"><pre>{
name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>User chosen name<span class="pl-pds">"</span></span>,
uid<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>fsdff3q4fFWEFFDSFfewf3rwSDF<span class="pl-pds">"</span></span>
}</pre></div>
<h2>Data listing</h2>
<h3>List categories</h3>
<p>Base URI: <code>/categories.php</code></p>
<h4>Parameters</h4>
<pre><code>- `uid`
- User identifier string given within the registration proccess
</code></pre>
<h4>Response</h4>
<h5>Errors</h5>
<table>
<thead>
<tr>
<th>HTTP status codes</th>
<th>Meta status code</th>
<th>Meta message</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr></tbody></table>
<h5>Success data object</h5>
<div class="highlight highlight-source-js"><pre>{
categories<span class="pl-k">:</span> [
{
id<span class="pl-k">:</span> <span class="pl-c1">1</span>,
name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>BWL<span class="pl-pds">"</span></span>
},
{
id<span class="pl-k">:</span> <span class="pl-c1">2</span>,
name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>Mathematik<span class="pl-pds">"</span></span>
},
<span class="pl-k">...</span>
]
}</pre></div>
<h3>Show highscores</h3>
<p>Base URI: <code>/highscores.php</code></p>
<h4>Parameters</h4>
<p>This request has no parameters.</p>
<h4>Response</h4>
<h5>Errors</h5>
<table>
<thead>
<tr>
<th>HTTP status codes</th>
<th>Meta status code</th>
<th>Meta message</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr></tbody></table>
<h5>Success data object</h5>
<div class="highlight highlight-source-js"><pre>{
score<span class="pl-k">:</span> <span class="pl-c1">3253</span>,
place<span class="pl-k">:</span> <span class="pl-c1">122</span>,
all<span class="pl-k">:</span> <span class="pl-c1">321</span>,
categories<span class="pl-k">:</span> [
{
id<span class="pl-k">:</span> <span class="pl-c1">1</span>,
name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>BWL<span class="pl-pds">"</span></span>,
score<span class="pl-k">:</span> <span class="pl-c1">321</span>,
place<span class="pl-k">:</span> <span class="pl-c1">123</span>
},
{
id<span class="pl-k">:</span> <span class="pl-c1">2</span>,
name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>Mathematik<span class="pl-pds">"</span></span>,
score<span class="pl-k">:</span> <span class="pl-c1">1454</span>,
place<span class="pl-k">:</span> <span class="pl-c1">1</span>
},
<span class="pl-k">...</span>
]
}</pre></div>
<h2>Game methods</h2>
<h3>Start game</h3>
<p>If no game has started yet, a new game will start. If a game already started, it will be resetted and restarted.</p>
<p>Base URI: <code>/start.php</code></p>
<h4>Parameters</h4>
<pre><code>- `uid`
- User identifier string given within the registration proccess
- `length`
- *Optional*
- Amount of questions of the test
- If no value given, a default value will be used (one question per category)
</code></pre>
<h4>Response</h4>
<h5>Errors</h5>
<table>
<thead>
<tr>
<th>HTTP status codes</th>
<th>Meta status code</th>
<th>Meta message</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr></tbody></table>
<h5>Success data object</h5>
<div class="highlight highlight-source-js"><pre>{
next<span class="pl-k">:</span> {
categoryID<span class="pl-k">:</span> <span class="pl-c1">1</span>,
categoryName<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>BWL<span class="pl-pds">"</span></span>,
question<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>What is the day after yesterday?<span class="pl-pds">"</span></span>,
anwsers<span class="pl-k">:</span> [
<span class="pl-s"><span class="pl-pds">"</span>yesterday<span class="pl-pds">"</span></span>,
<span class="pl-s"><span class="pl-pds">"</span>today<span class="pl-pds">"</span></span>,
<span class="pl-s"><span class="pl-pds">"</span>tommorrow<span class="pl-pds">"</span></span>,
<span class="pl-s"><span class="pl-pds">"</span>next week<span class="pl-pds">"</span></span>
]
}
}</pre></div>
<h3>Answer a question</h3>
<p>Answer to the last question given by last <code>/start.php</code> or <code>/answer.php</code> reqest. The response contains the score you got with your answer in a <code>score</code> object. If the test contains a next question´, it is store in the <code>next</code> object. Else an <code>end</code> object contains your test results.</p>
<p>Base URI: <code>/answer.php</code></p>
<h4>Parameters</h4>
<pre><code>- `uid`
- User identifier string given within the registration proccess
- `answer`
- Selected answer index
- `time`
- Time needed to answer the last question
</code></pre>
<h4>Response</h4>
<h5>Errors</h5>
<table>
<thead>
<tr>
<th>HTTP status codes</th>
<th>Meta status code</th>
<th>Meta message</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr></tbody></table>
<h5>Success data object</h5>
<p>If there is a next question:</p>
<div class="highlight highlight-source-js"><pre>{
results<span class="pl-k">:</span> {
correct<span class="pl-k">:</span> <span class="pl-c1">true</span>,
score<span class="pl-k">:</span> <span class="pl-c1">19</span>,
correctPos<span class="pl-k">:</span> <span class="pl-c1">3</span>
}
next<span class="pl-k">:</span> {
categoryID<span class="pl-k">:</span> <span class="pl-c1">1</span>,
categoryName<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>BWL<span class="pl-pds">"</span></span>,
question<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>What is the day after yesterday?<span class="pl-pds">"</span></span>,
anwsers<span class="pl-k">:</span> [
<span class="pl-s"><span class="pl-pds">"</span>yesterday<span class="pl-pds">"</span></span>,
<span class="pl-s"><span class="pl-pds">"</span>today<span class="pl-pds">"</span></span>,
<span class="pl-s"><span class="pl-pds">"</span>tommorrow<span class="pl-pds">"</span></span>,
<span class="pl-s"><span class="pl-pds">"</span>next week<span class="pl-pds">"</span></span>
]
}
}</pre></div>
<p>If it was the last test question:</p>
<div class="highlight highlight-source-js"><pre>{
results<span class="pl-k">:</span> {
correct<span class="pl-k">:</span> <span class="pl-c1">true</span>,
score<span class="pl-k">:</span> <span class="pl-c1">19</span>,
correctPos<span class="pl-k">:</span> <span class="pl-c1">3</span>
}
end<span class="pl-k">:</span> {
score<span class="pl-k">:</span> <span class="pl-c1">2523</span>,
time<span class="pl-k">:</span> <span class="pl-c1">6535952</span>
}
}</pre></div>