Browse Source
Merge branch 'development' into 'master'
Merge branch 'development' into 'master'
Development See merge request warricksothr/Atheneum!1merge-requests/8/head
Drew Short
6 years ago
28 changed files with 841 additions and 47 deletions
-
14.gitignore
-
1server/.dockerignore
-
3server/Pipfile
-
168server/Pipfile.lock
-
6server/README.md
-
4server/atheneum/__init__.py
-
6server/atheneum/api/authentication_api.py
-
25server/atheneum/api/model.py
-
36server/atheneum/api/user_api.py
-
11server/atheneum/errors.py
-
26server/atheneum/service/authentication_service.py
-
10server/atheneum/service/patch_service.py
-
11server/atheneum/service/user_service.py
-
4server/atheneum/utility/json_utility.py
-
20server/documentation/Makefile
-
98server/documentation/api/authentication.rst
-
9server/documentation/api/index.rst
-
158server/documentation/api/user.rst
-
156server/documentation/conf.py
-
20server/documentation/index.rst
-
4server/documentation/introduction.rst
-
36server/documentation/make.bat
-
2server/manage.py
-
1server/run_tests.sh
-
2server/tests/api/test_authentication_api.py
-
44server/tests/api/test_user_api.py
-
2server/tests/conftest.py
-
9server/tests/service/test_patch_service.py
@ -1,8 +1,10 @@ |
|||
instance/ |
|||
.idea |
|||
*.iml |
|||
.admin_credentials |
|||
*__pycache__/ |
|||
.pytest_cache/ |
|||
.coverage |
|||
.mypy_cache/ |
|||
|
|||
# Atheneum Specific Ignores |
|||
/server/.admin_credentials |
|||
/server/.coverage |
|||
/server/.mypy_cache/ |
|||
/server/.pytest_cache/ |
|||
/server/documentation/_build/ |
|||
/server/instance/ |
@ -0,0 +1,20 @@ |
|||
# Minimal makefile for Sphinx documentation
|
|||
#
|
|||
|
|||
# You can set these variables from the command line.
|
|||
SPHINXOPTS = |
|||
SPHINXBUILD = sphinx-build |
|||
SPHINXPROJ = Atheneum |
|||
SOURCEDIR = . |
|||
BUILDDIR = _build |
|||
|
|||
# Put it first so that "make" without argument is like "make help".
|
|||
help: |
|||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
|||
|
|||
.PHONY: help Makefile |
|||
|
|||
# Catch-all target: route all unknown targets to Sphinx using the new
|
|||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|||
%: Makefile |
|||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
@ -0,0 +1,98 @@ |
|||
Authentication API |
|||
================== |
|||
|
|||
.. http:post:: /auth/login |
|||
|
|||
Authenticate with the server and receive a userToken for requests. |
|||
|
|||
**Example request**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
POST /auth/login HTTP/1.1 |
|||
Host: example.tld |
|||
Accept: application/json |
|||
Authorization: Basic <Base64 Encoded Basic Auth> |
|||
|
|||
**Example response**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
HTTP/1.1 200 OK |
|||
Vary: Accept |
|||
Content-Type: application/json |
|||
|
|||
{ |
|||
"creationTime": "2018-07-29T11:59:29-05:00", |
|||
"enabled": true, |
|||
"token": "b94cf5c7-cddc-4610-9d4c-6b8e04088ae8", |
|||
"version": 0 |
|||
} |
|||
|
|||
:reqheader Accept: the response content type depends on :mailheader:`Accept` header |
|||
:reqheader Authorization: The encoded basic authorization |
|||
:resheader Content-Type: this depends on :mailheader:`Accept` header of request |
|||
:statuscode 200: user successfully logged in |
|||
:statuscode 401: authorization failed |
|||
|
|||
.. http:post:: /auth/bump |
|||
|
|||
Bump user login information. |
|||
|
|||
**Example request**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
POST /auth/bump HTTP/1.1 |
|||
Host: example.tld |
|||
Accept: application/json |
|||
Authorization: Token <Base64(user:userToken)> |
|||
|
|||
**Example response**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
HTTP/1.1 200 OK |
|||
Vary: Accept |
|||
Content-Type: application/json |
|||
|
|||
{ |
|||
"lastLoginTime": "2018-07-29T12:15:51-05:00" |
|||
} |
|||
|
|||
:reqheader Accept: the response content type depends on :mailheader:`Accept` header |
|||
:reqheader Authorization: The encoded basic authorization |
|||
:resheader Content-Type: this depends on :mailheader:`Accept` header of request |
|||
:statuscode 200: user last_login_time successfully bumped |
|||
:statuscode 401: authorization failed |
|||
|
|||
.. http:post:: /auth/logout |
|||
|
|||
Logout a user and remove the provided userToken from valid tokens. |
|||
|
|||
**Example request**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
POST /auth/logout HTTP/1.1 |
|||
Host: example.tld |
|||
Accept: application/json |
|||
Authorization: Token <Base64(user:userToken)> |
|||
|
|||
**Example response**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
HTTP/1.1 200 OK |
|||
Vary: Accept |
|||
Content-Type: application/json |
|||
|
|||
{ |
|||
"success": true |
|||
} |
|||
|
|||
:reqheader Accept: the response content type depends on :mailheader:`Accept` header |
|||
:reqheader Authorization: The encoded basic authorization |
|||
:resheader Content-Type: this depends on :mailheader:`Accept` header of request |
|||
:statuscode 200: user successfully logged out |
|||
:statuscode 401: authorization failed |
@ -0,0 +1,9 @@ |
|||
Atheneum API documentation |
|||
========================== |
|||
|
|||
.. toctree:: |
|||
:maxdepth: 2 |
|||
:caption: Contents: |
|||
|
|||
authentication |
|||
user |
@ -0,0 +1,158 @@ |
|||
User API |
|||
======== |
|||
|
|||
.. http:get:: /user/(str:user_name) |
|||
|
|||
Find a user by name. |
|||
|
|||
**Example request**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
GET /user/atheneum_administrator HTTP/1.1 |
|||
Host: example.tld |
|||
Accept: application/json |
|||
Authorization: Token <Base64(user:userToken)> |
|||
|
|||
**Example response**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
HTTP/1.1 200 OK |
|||
Vary: Accept |
|||
Content-Type: application/json |
|||
|
|||
{ |
|||
"creationTime": "2018-07-29T11:58:17-05:00", |
|||
"lastLoginTime": "2018-07-29T12:43:27-05:00", |
|||
"name": "atheneum_administrator", |
|||
"role": "ADMIN", |
|||
"version": 0 |
|||
} |
|||
|
|||
:reqheader Accept: the response content type depends on :mailheader:`Accept` header |
|||
:reqheader Authorization: The encoded basic authorization |
|||
:resheader Content-Type: this depends on :mailheader:`Accept` header of request |
|||
:statuscode 200: user successfully logged in |
|||
:statuscode 401: authorization failed |
|||
:statuscode 404: user doesn't exist |
|||
|
|||
.. http:patch:: /user/(str:user_name) |
|||
|
|||
Patch a user. |
|||
|
|||
**Example request**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
PATCH /user/atheneum_administrator HTTP/1.1 |
|||
Host: example.tld |
|||
Accept: application/json |
|||
Authorization: Token <Base64(user:userToken)> |
|||
Content-Type: application/json |
|||
|
|||
{ |
|||
"lastLoginTime": "2019-07-29T12:43:27-05:00", |
|||
"version": 0 |
|||
} |
|||
|
|||
**Example response**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
HTTP/1.1 200 OK |
|||
Vary: Accept |
|||
Content-Type: application/json |
|||
|
|||
{ |
|||
"creationTime": "2018-07-29T11:58:17-05:00", |
|||
"lastLoginTime": "2019-07-29T12:43:27-05:00", |
|||
"name": "atheneum_administrator", |
|||
"role": "ADMIN", |
|||
"version": 1 |
|||
} |
|||
|
|||
:reqheader Accept: the response content type depends on :mailheader:`Accept` header |
|||
:reqheader Authorization: The encoded basic authorization |
|||
:reqheader Content-Type: application/json |
|||
:resheader Content-Type: this depends on :mailheader:`Accept` header of request |
|||
:statuscode 200: user successfully logged in |
|||
:statuscode 400: an issue in the payload was discovered |
|||
:statuscode 401: authorization failed |
|||
:statuscode 404: user doesn't exist |
|||
|
|||
.. http:post:: /user/ |
|||
|
|||
Register a new user with the service. |
|||
|
|||
**Example request**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
POST /user/ HTTP/1.1 |
|||
Host: example.tld |
|||
Accept: application/json |
|||
Authorization: Token <Base64(user:userToken)> |
|||
Content-Type: application/json |
|||
|
|||
{ |
|||
"name": "test_user", |
|||
"password": "JvZ9bm79", |
|||
"role": "USER" |
|||
} |
|||
|
|||
**Example response**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
HTTP/1.1 200 OK |
|||
Vary: Accept |
|||
Content-Type: application/json |
|||
|
|||
{ |
|||
"creationTime": "2018-07-29T14:16:48-05:00", |
|||
"name": "test_user", |
|||
"role": "USER", |
|||
"version": 0 |
|||
} |
|||
|
|||
:reqheader Accept: the response content type depends on :mailheader:`Accept` header |
|||
:reqheader Authorization: The encoded basic authorization |
|||
:reqheader Content-Type: application/json |
|||
:resheader Content-Type: this depends on :mailheader:`Accept` header of request |
|||
:statuscode 200: user successfully logged in |
|||
:statuscode 400: an issue in the payload was discovered |
|||
:statuscode 401: authorization failed |
|||
|
|||
.. http:delete:: /user/(str:user_name) |
|||
|
|||
Register a new user with the service. |
|||
|
|||
**Example request**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
DELETE /user/test_user HTTP/1.1 |
|||
Host: example.tld |
|||
Accept: application/json |
|||
Authorization: Token <Base64(user:userToken)> |
|||
|
|||
**Example response**: |
|||
|
|||
.. sourcecode:: http |
|||
|
|||
HTTP/1.1 200 OK |
|||
Vary: Accept |
|||
Content-Type: application/json |
|||
|
|||
{ |
|||
"message": "Successfully Deleted", |
|||
"success": true |
|||
} |
|||
|
|||
:reqheader Accept: the response content type depends on :mailheader:`Accept` header |
|||
:reqheader Authorization: The encoded basic authorization |
|||
:resheader Content-Type: this depends on :mailheader:`Accept` header of request |
|||
:statuscode 200: user successfully logged in |
|||
:statuscode 401: authorization failed |
|||
:statuscode 404: user doesn't exist |
@ -0,0 +1,156 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# |
|||
# Configuration file for the Sphinx documentation builder. |
|||
# |
|||
# This file does only contain a selection of the most common options. For a |
|||
# full list see the documentation: |
|||
# http://www.sphinx-doc.org/en/master/config |
|||
|
|||
# -- Path setup -------------------------------------------------------------- |
|||
|
|||
# If extensions (or modules to document with autodoc) are in another directory, |
|||
# add these directories to sys.path here. If the directory is relative to the |
|||
# documentation root, use os.path.abspath to make it absolute, like shown here. |
|||
# |
|||
# import os |
|||
# import sys |
|||
# sys.path.insert(0, os.path.abspath('.')) |
|||
|
|||
|
|||
# -- Project information ----------------------------------------------------- |
|||
|
|||
project = 'Atheneum' |
|||
copyright = '2018, Drew Short' |
|||
author = 'Drew Short' |
|||
|
|||
# The short X.Y version |
|||
version = '2018.8' |
|||
# The full version, including alpha/beta/rc tags |
|||
release = '2018.8.1' |
|||
|
|||
|
|||
# -- General configuration --------------------------------------------------- |
|||
|
|||
# If your documentation needs a minimal Sphinx version, state it here. |
|||
# |
|||
# needs_sphinx = '1.0' |
|||
|
|||
# Add any Sphinx extension module names here, as strings. They can be |
|||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom |
|||
# ones. |
|||
extensions = [ |
|||
'sphinxcontrib.httpdomain' |
|||
] |
|||
|
|||
# Add any paths that contain templates here, relative to this directory. |
|||
templates_path = ['_templates'] |
|||
|
|||
# The suffix(es) of source filenames. |
|||
# You can specify multiple suffix as a list of string: |
|||
# |
|||
# source_suffix = ['.rst', '.md'] |
|||
source_suffix = '.rst' |
|||
|
|||
# The master toctree document. |
|||
master_doc = 'index' |
|||
|
|||
# The language for content autogenerated by Sphinx. Refer to documentation |
|||
# for a list of supported languages. |
|||
# |
|||
# This is also used if you do content translation via gettext catalogs. |
|||
# Usually you set "language" from the command line for these cases. |
|||
language = None |
|||
|
|||
# List of patterns, relative to source directory, that match files and |
|||
# directories to ignore when looking for source files. |
|||
# This pattern also affects html_static_path and html_extra_path . |
|||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] |
|||
|
|||
# The name of the Pygments (syntax highlighting) style to use. |
|||
pygments_style = 'sphinx' |
|||
|
|||
|
|||
# -- Options for HTML output ------------------------------------------------- |
|||
|
|||
# The theme to use for HTML and HTML Help pages. See the documentation for |
|||
# a list of builtin themes. |
|||
# |
|||
html_theme = 'sphinx_rtd_theme' |
|||
|
|||
# Theme options are theme-specific and customize the look and feel of a theme |
|||
# further. For a list of options available for each theme, see the |
|||
# documentation. |
|||
# |
|||
# html_theme_options = {} |
|||
|
|||
# Add any paths that contain custom static files (such as style sheets) here, |
|||
# relative to this directory. They are copied after the builtin static files, |
|||
# so a file named "default.css" will overwrite the builtin "default.css". |
|||
html_static_path = ['_static'] |
|||
|
|||
# Custom sidebar templates, must be a dictionary that maps document names |
|||
# to template names. |
|||
# |
|||
# The default sidebars (for documents that don't match any pattern) are |
|||
# defined by theme itself. Builtin themes are using these templates by |
|||
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', |
|||
# 'searchbox.html']``. |
|||
# |
|||
# html_sidebars = {} |
|||
|
|||
|
|||
# -- Options for HTMLHelp output --------------------------------------------- |
|||
|
|||
# Output file base name for HTML help builder. |
|||
htmlhelp_basename = 'Atheneumdoc' |
|||
|
|||
|
|||
# -- Options for LaTeX output ------------------------------------------------ |
|||
|
|||
latex_elements = { |
|||
# The paper size ('letterpaper' or 'a4paper'). |
|||
# |
|||
# 'papersize': 'letterpaper', |
|||
|
|||
# The font size ('10pt', '11pt' or '12pt'). |
|||
# |
|||
# 'pointsize': '10pt', |
|||
|
|||
# Additional stuff for the LaTeX preamble. |
|||
# |
|||
# 'preamble': '', |
|||
|
|||
# Latex figure (float) alignment |
|||
# |
|||
# 'figure_align': 'htbp', |
|||
} |
|||
|
|||
# Grouping the document tree into LaTeX files. List of tuples |
|||
# (source start file, target name, title, |
|||
# author, documentclass [howto, manual, or own class]). |
|||
latex_documents = [ |
|||
(master_doc, 'Atheneum.tex', 'Atheneum Documentation', |
|||
'Drew Short', 'manual'), |
|||
] |
|||
|
|||
|
|||
# -- Options for manual page output ------------------------------------------ |
|||
|
|||
# One entry per manual page. List of tuples |
|||
# (source start file, name, description, authors, manual section). |
|||
man_pages = [ |
|||
(master_doc, 'atheneum', 'Atheneum Documentation', |
|||
[author], 1) |
|||
] |
|||
|
|||
|
|||
# -- Options for Texinfo output ---------------------------------------------- |
|||
|
|||
# Grouping the document tree into Texinfo files. List of tuples |
|||
# (source start file, target name, title, author, |
|||
# dir menu entry, description, category) |
|||
texinfo_documents = [ |
|||
(master_doc, 'Atheneum', 'Atheneum Documentation', |
|||
author, 'Atheneum', 'One line description of project.', |
|||
'Miscellaneous'), |
|||
] |
@ -0,0 +1,20 @@ |
|||
.. Atheneum documentation master file, created by |
|||
sphinx-quickstart on Sun Jul 29 11:09:44 2018. |
|||
You can adapt this file completely to your liking, but it should at least |
|||
contain the root `toctree` directive. |
|||
|
|||
Welcome to Atheneum's documentation! |
|||
==================================== |
|||
|
|||
.. toctree:: |
|||
:maxdepth: 2 |
|||
:caption: Contents: |
|||
|
|||
introduction |
|||
api/index |
|||
|
|||
Indices and tables |
|||
================== |
|||
|
|||
* :ref:`genindex` |
|||
* :ref:`search` |
@ -0,0 +1,4 @@ |
|||
Introduction To Atheneum |
|||
======================== |
|||
|
|||
TODO |
@ -0,0 +1,36 @@ |
|||
@ECHO OFF |
|||
|
|||
pushd %~dp0 |
|||
|
|||
REM Command file for Sphinx documentation |
|||
|
|||
if "%SPHINXBUILD%" == "" ( |
|||
set SPHINXBUILD=sphinx-build |
|||
) |
|||
set SOURCEDIR=. |
|||
set BUILDDIR=_build |
|||
set SPHINXPROJ=Atheneum |
|||
|
|||
if "%1" == "" goto help |
|||
|
|||
%SPHINXBUILD% >NUL 2>NUL |
|||
if errorlevel 9009 ( |
|||
echo. |
|||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx |
|||
echo.installed, then set the SPHINXBUILD environment variable to point |
|||
echo.to the full path of the 'sphinx-build' executable. Alternatively you |
|||
echo.may add the Sphinx directory to PATH. |
|||
echo. |
|||
echo.If you don't have Sphinx installed, grab it from |
|||
echo.http://sphinx-doc.org/ |
|||
exit /b 1 |
|||
) |
|||
|
|||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% |
|||
goto end |
|||
|
|||
:help |
|||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% |
|||
|
|||
:end |
|||
popd |
Write
Preview
Loading…
Cancel
Save
Reference in new issue