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

Contenu connexe

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

Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStack
Kimihiko Kitase
 
Clojureの発表など
Clojureの発表などClojureの発表など
Clojureの発表など
Kikuta Go
 

Similaire à PythonでWebDAVサーバーを作ろう② (20)

Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
Mavenへのはじめの一歩
Mavenへのはじめの一歩Mavenへのはじめの一歩
Mavenへのはじめの一歩
 
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す
第3回集合知プログラミング勉強会 #TokyoCI グループを見つけ出す
 
Clouderaの品質保証・CDHのテスト工程について by Andrew bayer
Clouderaの品質保証・CDHのテスト工程について by Andrew bayerClouderaの品質保証・CDHのテスト工程について by Andrew bayer
Clouderaの品質保証・CDHのテスト工程について by Andrew bayer
 
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
 
Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)
 
Whats new Apache CloudStack
Whats new Apache CloudStackWhats new Apache CloudStack
Whats new Apache CloudStack
 
Clojureの発表など
Clojureの発表などClojureの発表など
Clojureの発表など
 
20050917
2005091720050917
20050917
 
Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Webフレームワーク
WebフレームワークWebフレームワーク
Webフレームワーク
 
[AWS Summit 2012] クラウドデザインパターン#3 CDP Eコマース編 (EC-CUBE)
[AWS Summit 2012] クラウドデザインパターン#3 CDP Eコマース編 (EC-CUBE)[AWS Summit 2012] クラウドデザインパターン#3 CDP Eコマース編 (EC-CUBE)
[AWS Summit 2012] クラウドデザインパターン#3 CDP Eコマース編 (EC-CUBE)
 
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
 
Crawler Commons
Crawler CommonsCrawler Commons
Crawler Commons
 
Couchbase meetup20140925
Couchbase meetup20140925Couchbase meetup20140925
Couchbase meetup20140925
 
Version管理 1
Version管理 1Version管理 1
Version管理 1
 
[AWS Summit 2012] クラウドデザインパターン#6 CDP クラウド監視編
[AWS Summit 2012] クラウドデザインパターン#6 CDP クラウド監視編[AWS Summit 2012] クラウドデザインパターン#6 CDP クラウド監視編
[AWS Summit 2012] クラウドデザインパターン#6 CDP クラウド監視編
 
[AWS Summit 2012] クラウドデザインパターン#2 CDP 画像・動画配信編
[AWS Summit 2012] クラウドデザインパターン#2 CDP 画像・動画配信編 [AWS Summit 2012] クラウドデザインパターン#2 CDP 画像・動画配信編
[AWS Summit 2012] クラウドデザインパターン#2 CDP 画像・動画配信編
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 

Plus de iPride Co., Ltd.

AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
iPride Co., Ltd.
 

Plus de iPride Co., Ltd. (20)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
 
AWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作りAWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作り
 
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
 
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
 
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
 
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
 
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
 
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものですAWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
 
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門  2024/01/26の勉強会で発表されたものです【アイ・プライド】AWS SAM入門  2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
 
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
 
ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強
 
OpenID Connectについて
OpenID ConnectについてOpenID Connectについて
OpenID Connectについて
 
画像生成AIの問題点
画像生成AIの問題点画像生成AIの問題点
画像生成AIの問題点
 
AI入門
AI入門AI入門
AI入門
 

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