Open3

GitHubのGraphQL Explorerを使って手軽にGraphQLをキャッチアップしていく

りむふぁくしりむふぁくし

GitHubのGraphQL Explorerとは、GraphQLを用いてGitHub上のリソースを読み込み/変更することができるサイトです。
https://docs.github.com/ja/graphql/overview/explorer

利用するにはGitHubアカウントでのログインが必要で、お持ちでない方は作成しておきましょう。
その後、ご自身のアカウントにGraphQL Explorerがアクセスするための許可をしておくと利用できるようになります。

このような簡単にキャッチアップできるサイトは便利ですね。

りむふぁくしりむふぁくし

サクラエディタのリポジトリにスターを付けてみる

この課題を達成するためにやることは2つで、以下の通りとなります

  • サクラエディタのリポジトリのIDを調べる
  • 当該プロジェクトIDに対してスターを付ける操作を行う

それではやっていきましょう

サクラエディタのリポジトリのIDを調べる

Explorerの左側のコード入力欄に以下を入力します。

データを取得する際には queryを用います。
サクラエディタのオーナーは sakura-editor、 リポジトリ名は sakura ですので、以下のようなクエリとなります。
今回ほしいのはIDなので、repository配下にはidのみを要求するような書き方にし、実行します。
https://github.com/sakura-editor/sakura

query {
  repository(owner: "sakura-editor", name: "sakura") {
    id
  }
}

すると、以下のようなJSONのレスポンスが返され、サクラエディタのリポジトリのIDがMDEwOlJlcG9zaXRvcnkxMzQwNTc5Njk=であることがわかります。

{
  "data": {
    "repository": {
      "id": "MDEwOlJlcG9zaXRvcnkxMzQwNTc5Njk="
    }
  }
}

当該プロジェクトIDに対してスターを付ける操作を行う

既存のデータを操作するには、mutationを用います。
クエリは以下の通りとなります。

mutation {
  addStar (input: {starrableId: "MDEwOlJlcG9zaXRvcnkxMzQwNTc5Njk="}){
    # 構文上は戻り値の指定が必須なので、不要なときは`clientMutationId`と書く
    clientMutationId
  }
}

ところが、レスポンスがエラーFORBIDDENとなって返ってきました。
sakura-editorが所属する組織がExplorerによる制御を許可していないようです。
荒らしのリスクなどを考えると当然の措置ですね、、反省です

{
  "data": {
    "addStar": null
  },
  "errors": [
    {
      "type": "FORBIDDEN",
      "path": [
        "addStar"
      ],
      "extensions": {
        "saml_failure": false
      },
      "locations": [
        {
          "line": 31,
          "column": 3
        }
      ],
      "message": "Although you appear to have the correct authorization credentials, the `sakura-editor` organization has enabled OAuth App access restrictions, meaning that data access to third-parties is limited. For more information on these restrictions, including how to enable this app, visit https://docs.github.com/articles/restricting-access-to-your-organization-s-data/"
    }
  ]
}

参考: https://zenn.dev/ikepon/scraps/7fa797ec73ec77

りむふぁくしりむふぁくし

自分の任意のリポジトリにスターを付けてみる

ということで、自分自身のリポジトリにスターを付けてみましょう。
上記の投稿を参考に、リポジトリのIDを取得します。
次に、そのIDを上記のmutationクエリの引数に当てはめて実行すると、以下のようなレスポンスが得られます。

{
  "data": {
    "addStar": {
      "clientMutationId": null
    }
  }
}

Webブラウザ上でもスターがついていることが確認できると思います!