mitama.app package

Submodules

mitama.app.app module

class mitama.app.app.App(**kwargs)

ベースクラス: object

convert_fullurl(req, url)
convert_url(url)
description = ''
error(request, code)
property icon
match(request)
name = ''
revert_url(url)
set_middleware(middlewares)
template_dir = 'templates'
property view
mitama.app.app.dataurl(blob)

mitama.app.builder module

class mitama.app.builder.Builder

ベースクラス: object

Appにメタ情報を入力して生成するビルダー

プロジェクトディレクトリのパスやインストール先、プロジェクト内のアプリ用ディレクトリのパスをAppに設定し、インスタンスを返却します。 特にこれを弄るケースは想定していませんが、独自の挙動を付けたかったら継承して作っても良いかもしれません。 アプリのパッケージ直下のAppBuilderが起動されるので、__init__.pyclass AppBuilder(Builder) を定義してください。

app = None
build()
set_name(name)
set_package(package)
set_path(path)
set_project_dir(path)
set_project_root_dir(path)

mitama.app.meta module

mitama.app.method module

mitama.app.method.any(path, handler, method=None)

メソッドを考慮しないルーティング先を指定

メソッドに関係なくマッチするルーティング先を作成します。 :param path: マッチするパス :param handler: リクエストハンドラ :return: Routeインスタンス

mitama.app.method.delete(path, handler, method=None)

DELETEのルーティング先を指定

DELETEメソッドのルーティング先を作成します。 :param path: マッチするパス :param handler: リクエストハンドラ :return: Routeインスタンス

mitama.app.method.get(path, handler, method=None)

GETのルーティング先を指定

GETメソッドのルーティング先を作成します。 :param path: マッチするパス :param handler: リクエストハンドラ :return: Routeインスタンス

mitama.app.method.group(path, router)

グループルーティング先を指定

前方一致でルーティング先に中継するルーティング先を作成します。 :param path: マッチするパス :param router: 渡すルーティングエンジン :return: GroupRouteインスタンス

mitama.app.method.head(path, handler, method=None)

HEADのルーティング先を指定

HEADメソッドのルーティング先を作成します。 :param path: マッチするパス :param handler: リクエストハンドラ :return: Routeインスタンス

mitama.app.method.option(path, handler, method=None)

OPTIONのルーティング先を指定

OPTIONメソッドのルーティング先を作成します。 :param path: マッチするパス :param handler: リクエストハンドラ :return: Routeインスタンス

mitama.app.method.patch(path, handler, method=None)

PATCHのルーティング先を指定

PATCHメソッドのルーティング先を作成します。 :param path: マッチするパス :param handler: リクエストハンドラ :return: Routeインスタンス

mitama.app.method.post(path, handler, method=None)

POSTのルーティング先を指定

POSTメソッドのルーティング先を作成します。 :param path: マッチするパス :param handler: リクエストハンドラ :return: Routeインスタンス

mitama.app.method.put(path, handler, method=None)

PUTのルーティング先を指定

PUTメソッドのルーティング先を作成します。 :param path: マッチするパス :param handler: リクエストハンドラ :return: Routeインスタンス

mitama.app.method.view(path, handler, method=None)

GET, POSTのルーティング先を指定

ブラウザで見れる一般的なルーティング先を作成します。 :param path: マッチするパス :param handler: リクエストハンドラ :return: Routeインスタンス

mitama.app.middlewares module

class mitama.app.middlewares.SessionMiddleware(app)

ベースクラス: mitama.app.Middleware

ログイン判定ミドルウェア

ログインしていないユーザーがアクセスした場合、/login?redirect_to=<URL>にリダイレクトします。

process(request, handler)

Middlewareのメイン処理

Middlewareは必ずこのメソッドを実装しなければならない。 :param request: mitama.http.Requestのインスタンス :param handler: requestを引数に受け取る関数(Middleware.process、またはControllerのリクエストハンドラ)

mitama.app.noimage module

mitama.app.registry module

class mitama.app.registry.AppRegistry(*args, **kwargs)

ベースクラス: mitama._extra._Singleton

稼働しているアプリのレジストリ

サーバー内で稼働しているアプリのパスやパッケージ名が登録されているレジストリです。 mitama.jsonを読み込んでアプリを起動するクラスでもあります。 dictっぽくアプリの取得や配信の停止などが可能です。

append(app)
changed = False
load_config()

アプリの一覧をmitama.jsonから読み込み、配信します

reset()

アプリの一覧をリセットします

router()

アプリの情報に基づいてルーティングエンジンを生成します

start_watch()

mitama.app.router module

class mitama.app.router.GroupRoute(path, router)

ベースクラス: object

match(request)
class mitama.app.router.Path(path)

ベースクラス: object

default_filter = 're'
filters = {'float': <function Path.<lambda>>, 'int': <function Path.<lambda>>, 'path': <function Path.<lambda>>, 're': <function Path.<lambda>>}
match(target)
rule_syntax = re.compile('(\\\\*)(?:(?:<([a-zA-Z_][a-zA-Z_0-9]*)?(?::([a-zA-Z_]*)(?::((?:\\\\.|[^\\\\>])+)?)?)?>))')
class mitama.app.router.Route(methods, path, handler, method_name)

ベースクラス: object

match(request)
class mitama.app.router.Router(routes=[], middlewares=[], prefix='')

ベースクラス: object

ルーティングエンジン

手軽に実装できて必要最低限なものを目指したので、遅かったりして嫌いだったら無理にこれを使う必要はありません。 自前のものを適用したい場合は、とりあえず:samp:hoge.match(Request): -> Response といったインターフェースを実装したメソッドを作ってください。 routesの中にRouterインスタンスを指定することもできます。

add_middleware(middleware)

ミドルウェアを登録します

Middlewareクラスを与えると、このルーターのインスタンス内でマッチした場合にミドルウェアが順番に起動します。 :param middleware: Middlewareのインスタンス

add_middlewares(middlewares)

複数のミドルウェアを登録します

Middlewareクラスのリストを与えると、このルーターのインスタンス内でマッチした場合にミドルウェアが順番に起動します。 :param middlewares: Middlewareのインスタンスのリスト

add_route(route)

ルーティング先を追加します

mitama.app.methodの関数で生成したRouteインスタンスを与えてください。 :param route: Routeインスタンス

add_routes(routes)

複数のルーティング先を追加します

mitama.app.methodの関数で生成したRouteインスタンスを与えてください。 :param routes: Routeインスタンスのリスト

clone()
match(request)
exception mitama.app.router.RoutingError

ベースクラス: Exception

mitama.app.template module

Module contents

class mitama.app.Controller(app)

ベースクラス: object

MVCのControllerの基底クラス

メソッドを記述すると、それをリクエスト処理に利用できる。 ルーティング時にメソッドを特に指定しない場合はhandleメソッドが実行される。 :param app: Controllerを起動するAppのインスタンスの参照 :param view: Controllerが利用するJinja2のEnvironmentインスタンス

app = None
handle(request: mitama.http.request.Request)

リクエストハンドラ

ルーティング時に特にメソッド名を指定しない場合にはこのメソッドが起動する。 独自にメソッドを定義する場合にも、このメソッドと同じインターフェースを実装しなければならない。 :param request: mitama.http.Requestのインスタンス :return: mitama.http.Responseのインスタンス

view = None
class mitama.app.Middleware(app)

ベースクラス: object

Requestを加工するMiddlewareの抽象クラス

processメソッドによって受け取ったRequestを変更し、handler(次のMiddleware、またはControllerのメソッド)に受け渡す。 :param app: Middlewareを起動するAppのインスタンスの参照 :param view: Middlewareが利用するJinja2のEnvironmentインスタンス

abstract process(request: mitama.http.request.Request, handler)

Middlewareのメイン処理

Middlewareは必ずこのメソッドを実装しなければならない。 :param request: mitama.http.Requestのインスタンス :param handler: requestを引数に受け取る関数(Middleware.process、またはControllerのリクエストハンドラ)

mitama.app.static_files(*paths)