# 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.form.register import RegisterForm
from snek.system.view import BaseFormView


class RegisterFormView(BaseFormView):

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