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¶ ベースクラス:
objectAppにメタ情報を入力して生成するビルダー
プロジェクトディレクトリのパスやインストール先、プロジェクト内のアプリ用ディレクトリのパスをAppに設定し、インスタンスを返却します。 特にこれを弄るケースは想定していませんが、独自の挙動を付けたかったら継承して作っても良いかもしれません。 アプリのパッケージ直下のAppBuilderが起動されるので、
__init__.pyにclass 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.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.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)¶ ベースクラス:
objectMVCの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)¶ ベースクラス:
objectRequestを加工する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のリクエストハンドラ)
-
abstract
-
mitama.app.static_files(*paths)¶