SQLite3データベースファイルGitHub.Apis.sqlite3
を作成する。
成果物
GitHub.ApiEndpoint.Database.Create
目的
APIごとの認証方法を特定することと、それに応じたHTTPリクエスト引数を作成するため。
テーブル
テーブル名 | 説明 |
---|---|
Apis | Apis|GitHub API v3のエンドポイント等。 |
Apis
列名 | 型 | Key | Unique | NotNull | Check |
---|---|---|---|---|---|
Id | integer | P | - | - | - |
Name | text | - | o | o | - |
HttpMethod | text | - | - | o | GET,POST,DELETE,PATCH,... |
Endpoint | text | - | - | o | - |
AuthMethods | text | - | - | - | (Basic,Token,ClientId,None) |
Grants | text | - | - | - | (scope文字列) |
SuccessStatusCode | integer | - | - | - | 100~599 |
DocumentUrl | text | - | - | - | - |
AuthMethods
AuthMethodsは、そのAPIを叩くのに必要な認証方法の一覧である。
- Basic
- Token
- ClientId
- None
値には上記のいずれかが1つ以上セットされる。複数あるときはカンマ区切り。たとえばBasic,Token,None
のようになる。
Grants
AuthMethods
にToken
が含まれない場合はNULL。それ以外はToken生成ページにあるscopeの文字列が入る。
複数のScopeがあったとき、orかandのどちらとして判定するか未定。
おそらく大抵は1APIあたり1scopeだと思うが、リポジトリ生成APIの場合はリポジトリがprivateがpublicかで必要なscopeが変わる。これをどう表現するか未定。以下2パターンのどちらかにすると思う。
repo
があれば両方とも実行できるためrepo
を値にセットする- privateリポジトリは有料のみなので対象外とし、
repo
またはpublic_repo
のどちらか1つでもあれば実行できるようにする
今回のTSVファイルはrepo
のみ設定してある。orとandの区別がつけられないため簡単に実装できるから。そのせいでscopeの範囲を最小化できない問題を孕んでいる。
所感
Pythonコード内に埋め込んだほうが早そう。このテーブルは不要かもしれないが、とりあえず作っておく。