Anúncio

PythonでWebDAVサーバーを作ろう②

iPride Co., Ltd.
22 de Mar de 2023
Anúncio

Mais conteúdo relacionado

Similar a PythonでWebDAVサーバーを作ろう②(20)

Mais de iPride Co., Ltd.(20)

Anúncio

Último(20)

PythonでWebDAVサーバーを作ろう②

  1. PythonでWebDAVサーバーを 作ろう② 執筆者:トビウオ
  2. 目次 • 前回のあらすじ • ライブラリの仕組みを整理 • Providerを自作しよう • Collectionを自作しよう • NonCollectionを自作しよう • まとめ
  3. 前回のあらすじ • 次のようなサンプルコードを動かした
  4. 前回のあらすじ • 実行結果のプレビュー (Webブラウザで確認) 認証情報、レルム、 アクセス権限 名前、種類、 大きさ、最終更新 今見ているパス
  5. 前回のあらすじ • 実行結果のプレビュー (Finderで確認)
  6. ライブラリの仕組みを整理 • 3つのclassがあり、それを継承して使う クラス名 役割 DAVProvider パスに対応するCollectionか NonCollectionを返す DAVCollection Directoryに相当する DAVNonCollection Fileに相当する まとめてResource と呼ぶ
  7. Providerを自作しよう • DAVProviderを継承して作成する • wsgidavライブラリに添付されているもの • FileSystemProvider • MySQLBrowserProvider • …etc. • 自作するもの (以降解説)
  8. Providerを自作しよう • もっとも簡単な実装はこんな感じ • どのパスでも404 Not Foundになる
  9. • get_resource_inst(self, path, environ) • pathはURL、environは環境変数 • DAVCollectionかDAVNonCollectionかNoneを返 す Providerを自作しよう
  10. Collectionを自作しよう • もっとも簡単な実装はこんな感じ • 「中身が空なDirectory」に相当する
  11. • 先ほどのDirectoryを返すように、Providerを修正 するとこんな感じ Collectionを自作しよう
  12. Collectionを自作しよう • get_member_names(self) • そのCollectionに連なるResourceの「名前」の一覧を 返す • get_member(self, name) • 「名前」(name)に対応するResourceかNoneを返す
  13. Collectionを自作しよう • CollectionがCollectionを返す例 Resourceの名前の一覧を返す 名前に対応したResourceを返す
  14. Collectionを自作しよう • デフォルトのコンストラクタは__init__(path, environ) pathとenvironは必須。 pathは「/」から始まる文字列で、 Resourceの名前に相当する
  15. Collectionを自作しよう • Providerも修正する必要があることに注意 「/{なんとか}/」を認識している
  16. Collectionを自作しよう • Webブラウザで見るとこんな感じ get_member_names()で返した「名前」がデ フォルト値。個別のCollectionに対し、 get_display_name()を設定して変更もできる 個別のCollectionに対し、引数pathで指定し たもの。ファイラーはこちらをディレクト リ名として認識する
  17. NonCollectionを自作しよう • 「中身が空なファイル」に 相当する実装をするとこん な感じ • 最低限、 get_content_lengthと get_contentは設定しないと いけない模様
  18. NonCollectionを自作しよう • 開かせるために、幾つか 修正を加える • pathの扱いは、 Collectionのときと 同じ
  19. NonCollectionを自作しよう • Webブラウザで見るとこんな感じ
  20. NonCollectionを自作しよう • 例えば、引数に応じた文字列を返す NonCollectionを実装するとこんな感じ
  21. まとめ • Provider、Collection、NonCollectionを自作し 、WebDAVサーバーとして読み込ませること ができた • 説明しなかったが、最終更新日時やファイルタ イプなど、細かな設定を行うことも可能
Anúncio