読者です 読者をやめる 読者になる 読者になる

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubのAPI情報データベースを作成する

プログラミング

SQLite3データベースファイルGitHub.Apis.sqlite3を作成する。

成果物

GitHubGitHub.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

AuthMethodsTokenが含まれない場合は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コード内に埋め込んだほうが早そう。このテーブルは不要かもしれないが、とりあえず作っておく。