Metadata-Version: 2.0
Name: apys
Version: 0.2.3
Summary: A simple back-end rest framework in python using aiohttp lib
Home-page: https://github.com/seijihirao/apys
Author: Rodrigo Seiji Piubeli Hirao
Author-email: rodrigo.seiji.hirao@gmail.com
License: MIT
Keywords: backend rest web service
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Requires-Dist: aiohttp
Requires-Dist: aiohttp-cors

apys - v0.2
===========

Wellcome to apys! A simple backend restful framework!

LANGUAGE
--------

`Python >= 3.4.2 <https://docs.python.org/3/>`__

LIBRARIES
---------

-  `aiohttp <https://aiohttp.readthedocs.io/>`__ - http client/server
   for asyncio

--------------

INSTALATION
-----------

1. Install python 3

   -  Windows - `Link <https://www.python.org/download/releases/3.5/>`__
   -  Ubuntu - ``sudo apt-get install python``
   -  Fedora - ``sudo yum install python``
   -  Arch - ``sudo pacman -S python``

2. Install PIP - Python libraries manager

   -  Windows -
      `Link <http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip>`__
   -  Ubuntu - ``sudo apt-get install pip``
   -  Fedora - ``sudo yum install pip``
   -  Arch - ``sudo pacman -S pip``

3. Install this framework using PIP

   -  ``pip install apys``

--------------

INITIALIZATING PROJECT
----------------------

::

    $ apys --init

--------------

USING
-----

DIRECTORIES
~~~~~~~~~~~

::

    /config - json configuration files
    /endpoints - backend endpoints
    /utils - helper script files  

CONFIG
~~~~~~

Here are the configuration files used in the app. They will be send to
the endpoint via param ``api.config``

There are 3 special filenames: \* ``prod.json`` - The oficial
configuration file \* ``dev.json`` - The development configuration file
\* ``local.json`` - The local configuration file (ignore in git)

    Note: They really work as following: the api tries to load
    ``local.json``, then ``dev.json``, then ``prod.json``. So in the
    oficial release you will only have ``prod.json``

The current config special properties are the following:

.. code:: json

    {
        "log": bool, //optional. default=False
        "server": {
            "port": int, //optional. default=8888
            "cors": string or False //optional. default=False
        },
        "mail": {
            "host": string,
            "port": int, //optional. default=25 or 587 for TLS 
            "tls": bool, //optional. default=False
            "username?": string, //optional. no default
            "password?": string //optional. no default
        }
    }

ENDPOINTS
~~~~~~~~~

This will be your main dev dir

All files added here will be an endpoint automatically

i.e.: the file ``endpoints/hello/world.py`` will generate an endpoint
``/hello/world``

The file's code will be the following:

.. code:: python


    utils = [
        '[util1]',
        '[util2]'
    ]

    def [method](req, api):
        [process]

Where ``[method]`` is the http request type: \* post \* get \* put \*
delete \* head \* options \* default - executed when a request is made
for any of the above, but it is not implemented

``[process]`` is what you wan the endpoint to do (your code)

``[util1]`` and ``[util2]`` are the *utils* scripts (without ``.py``)

``req`` is *aiohttp*'s request,
`documentation <http://aiohttp.readthedocs.io/en/stable/web_reference.html#request>`__

    ``req`` has the ``params`` property to read the request body

``api`` is the object that contains all api functionalities: \* config -
Configuration dictionary used in the actual scope \* debug - function to
log messages \* error - function to log errors

UTILS
~~~~~

Python files with reusable code, to be called on endpoints.

It will be a normal cod, but with some special funcions:

init(api)

::

    The function that will be executed on server startup
    Only one time.

``[method]``\ (req, api) - ``[method]`` being the type of http request

::

    The function that will be called before every request to the function with the same name on the endpoint.
    Any result should be stored on the variable `req`, because it is the only local variable on the request.

any(req, api)

::

    The function that will be executed before any request.
    Note: thids function will be executed before the later.

EXAMPLE
-------

Look at the ``demos/`` for examples

--------------

STARTING THE SERVER
~~~~~~~~~~~~~~~~~~~

There are 2 ways to start the server

1. Execute ``apys -s`` from terminal on your root project folder
   (Recomended)

2. Call the method ``start()`` from module ``apys.server`` (Only
   recomended if you need to do something before starting the server)

--------------

OBSERVATION
-----------

Both the framework and this page are in development, so, subjected to
changes.

    Version previous to v0.1.0 vas called
    `pypolyback <https://github.com/seijihirao/pypolyback>`__ and used
    python 2.


