{% extends "docs/base.html" %}

{% block main %}
{% markdown %}

# API Documentation

Currently only some details about the internal API are available.

## How to create a user
```python
# Save user to the table named 'user'
# Password gets sha256 encrypted with default a salt string
# of the snek.system.security module.

new_user_object = await app.service.user.register(
    username="retoor", 
    password="retoorded"
)
```

## Encrypt string
```python
from snek.system import security

# Support for both utf and bytes.
var1 = security.encrypt("data")
var2 = security.encrypt(b"data")

# Is correct:
assert(var1 == var2)
```

## How to create a basic HTML / Markdown view
```python
from snek.system.view import BaseView 

class IndexView(BaseView):
    
    async def get(self):
        # The render function supports markdown.
        # It will render with syntax highlighting.
        # Just use the .md file extension in the file name.
        return await self.render("index.html")
```
## How to create a FormView
```python
from snek.system.view import BaseFormView
from snek.form.register import RegisterForm

class RegisterFormView(BaseFormView):
    
    form = RegisterForm
```
## How to register a class view
```python
app.routes.add_view("/your-page.html", YourViewClass)
```

{% endmarkdown %}
{% endblock %}