GitHubのAPI情報データベースを作成する
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コード内に埋め込んだほうが早そう。このテーブルは不要かもしれないが、とりあえず作っておく。